UNPKG

analytica-frontend-lib

Version:

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

1 lines 6.41 kB
{"version":3,"sources":["../src/store/authStore.ts"],"sourcesContent":["import { create } from 'zustand';\nimport { createJSONStorage, persist } from 'zustand/middleware';\nimport { KEYS } from '@/utils/keys';\n\n/**\n * Interface representing user authentication tokens.\n */\nexport interface AuthTokens {\n token: string;\n refreshToken: string;\n [key: string]: unknown;\n}\n\n/**\n * Interface representing a user profile.\n */\nexport interface UserProfile {\n id: string;\n name?: string;\n email?: string;\n [key: string]: unknown;\n}\n\n/**\n * Interface representing a user.\n */\nexport interface User {\n id: string;\n name?: string;\n email?: string;\n [key: string]: unknown;\n}\n\n/**\n * Interface representing session information from the API.\n */\nexport interface SessionInfo {\n sessionId: string;\n userId: string;\n profileId: string;\n institutionId: string;\n institutionTheme?: string | null;\n institutionFavicon?: string | null;\n institutionIcon?: string | null;\n institutionMainLogo?: string | null;\n institutionInternalLogo?: string | null;\n institutionLoginImage?: string | null;\n schoolId: string;\n schoolYearId: string;\n classId: string;\n subjects: string[];\n schools: string[];\n userName?: string;\n urlProfilePicture?: string;\n [key: string]: unknown;\n}\n\n/**\n * Interface defining the authentication state.\n */\nexport interface AuthState {\n user: User | null;\n tokens: AuthTokens | null;\n isAuthenticated: boolean;\n profiles: UserProfile[];\n selectedProfile: UserProfile | null;\n sessionInfo: SessionInfo | null;\n\n setUser: (user: User | null) => void;\n setTokens: (tokens: AuthTokens | null) => void;\n setProfiles: (profiles: UserProfile[]) => void;\n setSelectedProfile: (profile: UserProfile | null) => void;\n setSessionInfo: (sessionInfo: SessionInfo | null) => void;\n signIn: (user: User, tokens: AuthTokens, profiles: UserProfile[]) => void;\n signOut: () => void;\n updateUserSession: (sessionData: Partial<User>) => void;\n}\n\n/**\n * Zustand store for managing authentication state with persistence.\n */\nexport const useAuthStore = create<AuthState>()(\n persist(\n (set, get) => ({\n user: null,\n tokens: null,\n isAuthenticated: false,\n profiles: [],\n selectedProfile: null,\n sessionInfo: null,\n\n /**\n * Set the current user\n * @param {User | null} user - The user object or null to clear\n * @returns {void}\n */\n setUser: (user: User | null): void => {\n set({ user, isAuthenticated: !!user });\n },\n\n /**\n * Set the authentication tokens\n * @param {AuthTokens | null} tokens - The authentication tokens or null to clear\n * @returns {void}\n */\n setTokens: (tokens: AuthTokens | null): void => {\n set({ tokens });\n },\n\n /**\n * Set user profiles\n * @param {UserProfile[]} profiles - Array of user profiles\n * @returns {void}\n */\n setProfiles: (profiles: UserProfile[]): void => {\n set({ profiles });\n },\n\n /**\n * Set the selected profile\n * @param {UserProfile | null} profile - The selected profile or null to clear\n * @returns {void}\n */\n setSelectedProfile: (profile: UserProfile | null): void => {\n set({ selectedProfile: profile });\n },\n\n /**\n * Set the session info\n * @param {SessionInfo | null} sessionInfo - The session info or null to clear\n * @returns {void}\n */\n setSessionInfo: (sessionInfo: SessionInfo | null): void => {\n set({ sessionInfo });\n },\n\n /**\n * Sign in user with complete auth data\n * @param {User} user - The user object\n * @param {AuthTokens} tokens - The authentication tokens\n * @param {UserProfile[]} profiles - Array of user profiles\n * @returns {void}\n */\n signIn: (\n user: User,\n tokens: AuthTokens,\n profiles: UserProfile[]\n ): void => {\n set({\n user,\n tokens,\n profiles,\n isAuthenticated: true,\n });\n },\n\n /**\n * Sign out user and clear all auth data\n * @returns {void}\n */\n signOut: (): void => {\n set({\n user: null,\n tokens: null,\n isAuthenticated: false,\n profiles: [],\n selectedProfile: null,\n sessionInfo: null,\n });\n },\n\n /**\n * Update user session data (after login completion)\n * @param {Partial<User>} sessionData - Partial user data to update\n * @returns {void}\n */\n updateUserSession: (sessionData: Partial<User>): void => {\n const { user } = get();\n if (user) {\n const updatedUser = { ...user, ...sessionData };\n set({ user: updatedUser });\n }\n },\n }),\n {\n name: KEYS.AUTH_STORAGE,\n storage: createJSONStorage(() => localStorage),\n }\n )\n);\n"],"mappings":";AAAA,SAAS,cAAc;AACvB,SAAS,mBAAmB,eAAe;AAgFpC,IAAM,eAAe,OAAkB;AAAA,EAC5C;AAAA,IACE,CAAC,KAAK,SAAS;AAAA,MACb,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,iBAAiB;AAAA,MACjB,UAAU,CAAC;AAAA,MACX,iBAAiB;AAAA,MACjB,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOb,SAAS,CAAC,SAA4B;AACpC,YAAI,EAAE,MAAM,iBAAiB,CAAC,CAAC,KAAK,CAAC;AAAA,MACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,WAAW,CAAC,WAAoC;AAC9C,YAAI,EAAE,OAAO,CAAC;AAAA,MAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,aAAa,CAAC,aAAkC;AAC9C,YAAI,EAAE,SAAS,CAAC;AAAA,MAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,oBAAoB,CAAC,YAAsC;AACzD,YAAI,EAAE,iBAAiB,QAAQ,CAAC;AAAA,MAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,gBAAgB,CAAC,gBAA0C;AACzD,YAAI,EAAE,YAAY,CAAC;AAAA,MACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,QAAQ,CACN,MACA,QACA,aACS;AACT,YAAI;AAAA,UACF;AAAA,UACA;AAAA,UACA;AAAA,UACA,iBAAiB;AAAA,QACnB,CAAC;AAAA,MACH;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,SAAS,MAAY;AACnB,YAAI;AAAA,UACF,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,iBAAiB;AAAA,UACjB,UAAU,CAAC;AAAA,UACX,iBAAiB;AAAA,UACjB,aAAa;AAAA,QACf,CAAC;AAAA,MACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,mBAAmB,CAAC,gBAAqC;AACvD,cAAM,EAAE,KAAK,IAAI,IAAI;AACrB,YAAI,MAAM;AACR,gBAAM,cAAc,EAAE,GAAG,MAAM,GAAG,YAAY;AAC9C,cAAI,EAAE,MAAM,YAAY,CAAC;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA,SAAS,kBAAkB,MAAM,YAAY;AAAA,IAC/C;AAAA,EACF;AACF;","names":[]}