diff --git a/lib/hooks/useAuth.ts b/lib/hooks/useAuth.ts index 8bf4a95..7fe8dd0 100644 --- a/lib/hooks/useAuth.ts +++ b/lib/hooks/useAuth.ts @@ -30,16 +30,20 @@ export function useLogin() { tokenManager.setAccessToken(data.accessToken); tokenManager.setRefreshToken(data.refreshToken); + // Map backend field names to frontend User type + // Backend returns: { Id, TenantId, Email, FullName, ... } + // Frontend expects: { id, tenantId, email, fullName, ... } + const backendUser = data.user; setUser({ - id: data.user.id, - email: data.user.email, - fullName: data.user.fullName, - tenantId: data.user.tenantId, - tenantName: data.user.tenantName, - role: data.user.role, - isEmailVerified: data.user.isEmailVerified, - createdAt: data.user.createdAt || new Date().toISOString(), - updatedAt: data.user.updatedAt, + id: backendUser.id || backendUser.Id, // Handle both casing + email: backendUser.email || backendUser.Email, + fullName: backendUser.fullName || backendUser.FullName, + tenantId: backendUser.tenantId || backendUser.TenantId, + tenantName: data.tenant?.name || data.tenant?.Name || 'Unknown', + role: data.tenant?.role || backendUser.role || 'TenantMember', + isEmailVerified: backendUser.isEmailVerified ?? backendUser.IsEmailVerified ?? false, + createdAt: backendUser.createdAt || backendUser.CreatedAt || new Date().toISOString(), + updatedAt: backendUser.updatedAt || backendUser.UpdatedAt, }); router.push('/dashboard'); @@ -95,9 +99,24 @@ export function useCurrentUser() { queryKey: ['currentUser'], queryFn: async () => { const { data } = await apiClient.get(API_ENDPOINTS.ME); - setUser(data); + + // Map backend /me response to frontend User type + // Backend returns: { userId, tenantId, email, fullName, tenantSlug, tenantRole, role } + // Frontend expects: { id, tenantId, email, fullName, tenantName, role, isEmailVerified, createdAt } + const mappedUser = { + id: data.userId || data.id, // Backend uses 'userId' + email: data.email, + fullName: data.fullName, + tenantId: data.tenantId, + tenantName: data.tenantSlug || 'Unknown', // Use tenantSlug as tenantName fallback + role: data.tenantRole || data.role || 'TenantMember', + isEmailVerified: true, // Assume verified if token is valid + createdAt: new Date().toISOString(), + }; + + setUser(mappedUser); setLoading(false); - return data; + return mappedUser; }, enabled: !!tokenManager.getAccessToken(), retry: false,