fix(auth): preserve backend roles on login

This commit is contained in:
zetaloop
2026-04-24 09:06:44 +08:00
parent ffb420f7e7
commit d59f7c6dc8
4 changed files with 22 additions and 18 deletions
+19 -15
View File
@@ -125,23 +125,27 @@ export const useAuthStore = create<AuthState>((set, get) => ({
},
}
}),
login: (user, verifiedRoles = ["consumer"], themePreference) =>
set((state) => ({
isAuthenticated: true,
user,
currentRole: user.role,
verifiedRoles,
verificationStatus: verifiedRoles.reduce<Partial<Record<UserRole, VerificationStatus>>>(
(acc, role) => {
login: (user, verifiedRoles, themePreference) =>
set((state) => {
const nextVerifiedRoles = verifiedRoles ?? user.verifiedRoles ?? [user.role]
const nextVerificationStatus =
user.verificationStatus ??
nextVerifiedRoles.reduce<Partial<Record<UserRole, VerificationStatus>>>((acc, role) => {
acc[role] = "approved"
return acc
},
{},
),
verificationReasons: {},
notificationPrefs: state.notificationPrefs,
themePreference: themePreference ?? state.themePreference,
})),
}, {})
return {
isAuthenticated: true,
user,
currentRole: user.role,
verifiedRoles: nextVerifiedRoles,
verificationStatus: nextVerificationStatus,
verificationReasons: {},
notificationPrefs: state.notificationPrefs,
themePreference: themePreference ?? state.themePreference,
}
}),
logout: () =>
set({
isAuthenticated: false,