analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
105 lines (104 loc) • 2.85 kB
JavaScript
// 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