Wire SMS registration, forgot password, and one-time login.
Connect business and customer login pages to login-otp and reset-password, and document the auth flows in project context. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Cursor
parent
d8c9c0b017
commit
c33cab40fe
@@ -13,6 +13,7 @@ import { getTenantDomain } from '../lib/config'
|
||||
import {
|
||||
fetchCurrentUser,
|
||||
login as loginRequest,
|
||||
loginWithOtp as loginWithOtpRequest,
|
||||
logout as logoutRequest,
|
||||
} from '../services/authService'
|
||||
import { resolveTenantByDomain } from '../services/tenantService'
|
||||
@@ -22,6 +23,7 @@ interface AuthContextValue {
|
||||
user: AuthUser | null
|
||||
isLoading: boolean
|
||||
login: (cellNumber: string, password: string) => Promise<void>
|
||||
loginWithOtp: (cellNumber: string, code: string) => Promise<void>
|
||||
logout: () => void
|
||||
setUser: (user: AuthUser) => void
|
||||
}
|
||||
@@ -124,9 +126,15 @@ export function AuthProvider({ children }: { children: ReactNode }) {
|
||||
setUser(data.user)
|
||||
}, [])
|
||||
|
||||
const loginWithOtp = useCallback(async (cellNumber: string, code: string) => {
|
||||
const data = await loginWithOtpRequest(cellNumber, code)
|
||||
await assertCustomerAccess(data.user)
|
||||
setUser(data.user)
|
||||
}, [])
|
||||
|
||||
const value = useMemo(
|
||||
() => ({ user, isLoading, login, logout, setUser }),
|
||||
[user, isLoading, login, logout],
|
||||
() => ({ user, isLoading, login, loginWithOtp, logout, setUser }),
|
||||
[user, isLoading, login, loginWithOtp, logout],
|
||||
)
|
||||
|
||||
return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>
|
||||
|
||||
Reference in New Issue
Block a user