UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

105 lines (104 loc) 2.85 kB
// src/store/authStore.ts import { create } from "zustand"; import { createJSONStorage, persist } from "zustand/middleware"; var useAuthStore = create()( persist( (set, get) => ({ user: null, tokens: null, isAuthenticated: false, profiles: [], selectedProfile: null, sessionInfo: null, /** * Set the current user * @param {User | null} user - The user object or null to clear * @returns {void} */ setUser: (user) => { set({ user, isAuthenticated: !!user }); }, /** * Set the authentication tokens * @param {AuthTokens | null} tokens - The authentication tokens or null to clear * @returns {void} */ setTokens: (tokens) => { set({ tokens }); }, /** * Set user profiles * @param {UserProfile[]} profiles - Array of user profiles * @returns {void} */ setProfiles: (profiles) => { set({ profiles }); }, /** * Set the selected profile * @param {UserProfile | null} profile - The selected profile or null to clear * @returns {void} */ setSelectedProfile: (profile) => { set({ selectedProfile: profile }); }, /** * Set the session info * @param {SessionInfo | null} sessionInfo - The session info or null to clear * @returns {void} */ setSessionInfo: (sessionInfo) => { set({ sessionInfo }); }, /** * Sign in user with complete auth data * @param {User} user - The user object * @param {AuthTokens} tokens - The authentication tokens * @param {UserProfile[]} profiles - Array of user profiles * @returns {void} */ signIn: (user, tokens, profiles) => { set({ user, tokens, profiles, isAuthenticated: true }); }, /** * Sign out user and clear all auth data * @returns {void} */ signOut: () => { set({ user: null, tokens: null, isAuthenticated: false, profiles: [], selectedProfile: null, sessionInfo: null }); }, /** * Update user session data (after login completion) * @param {Partial<User>} sessionData - Partial user data to update * @returns {void} */ updateUserSession: (sessionData) => { const { user } = get(); if (user) { const updatedUser = { ...user, ...sessionData }; set({ user: updatedUser }); } } }), { name: "@auth-storage:analytica:v2" /* AUTH_STORAGE */, storage: createJSONStorage(() => localStorage) } ) ); export { useAuthStore }; //# sourceMappingURL=chunk-TNOKCEMB.mjs.map