@orbe-agro/client-core 5.6.22 → 5.6.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -37,6 +37,9 @@ function AuthProvider({ children }) {
37
37
  const setFuncionalidadesMap = useSessionUserDataStore(
38
38
  (state) => state.setFuncionalidesMap
39
39
  );
40
+ const setPermissoesSet = useSessionUserDataStore(
41
+ (state) => state.setPermissoesSet
42
+ );
40
43
  const { token, setToken } = useToken();
41
44
  const authenticated = Boolean(token && signedIn);
42
45
  const navigatorRef = useRef(null);
@@ -77,6 +80,13 @@ function AuthProvider({ children }) {
77
80
  {}
78
81
  );
79
82
  setFuncionalidadesMap(funcionalidadesMap);
83
+ const permissoes = roles.flatMap(
84
+ (role) => role.funcionalidades.flatMap(
85
+ (func) => (func.permissoes || []).filter((p) => p.ativo).map((p) => `${p.endpoint},${p.httpMethod}`)
86
+ )
87
+ );
88
+ const permissoesSet = new Set(permissoes || []);
89
+ setPermissoesSet(permissoesSet);
80
90
  }
81
91
  const signIn = async (values) => {
82
92
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"AuthProvider.js","sources":["../../../lib/@ecme/auth/AuthProvider.tsx"],"sourcesContent":["import type {\n AuthResult,\n OauthSignInCallbackPayload,\n SignInCredential,\n SignInResponse,\n SignUpCredential,\n Token,\n} from '@/@types/auth'\nimport appConfig from '@/configs/app.config'\nimport { REDIRECT_URL_KEY } from '@/constants/app.constant'\nimport { apiSignIn, apiSignOut, apiSignUp } from '@/services/AuthService'\nimport { useSessionUser, useToken } from '@/store/authStore'\nimport {\n apiFetchUserFuncionalidadesDetail,\n apiFetchUserVinculosUsuario,\n apiFindUserById,\n} from '@base/services'\nimport {\n TFuncionalidadeMap,\n useSessionUserDataStore,\n} from '@base/store/auth/sessionUserData'\nimport { mapFuncionalidadesByPath } from '@base/utils/modules/dm/funcionalidades'\nimport { ReactNode, Ref, useImperativeHandle, useRef } from 'react'\nimport { NavigateFunction, useNavigate } from 'react-router-dom'\nimport AuthContext from './AuthContext'\n\ntype AuthProviderProps = { children: ReactNode }\n\nexport type IsolatedNavigatorRef = {\n navigate: NavigateFunction\n}\n\nconst IsolatedNavigator = ({ ref }: { ref: Ref<IsolatedNavigatorRef> }) => {\n const navigate = useNavigate()\n\n useImperativeHandle(ref, () => {\n return {\n navigate,\n }\n }, [navigate])\n\n return <></>\n}\n\nfunction AuthProvider({ children }: AuthProviderProps) {\n const signedIn = useSessionUser((state) => state.session.signedIn)\n const user = useSessionUser((state) => state.user)\n const setUser = useSessionUser((state) => state.setUser)\n const setSessionSignedIn = useSessionUser(\n (state) => state.setSessionSignedIn,\n )\n\n const setRolesSet = useSessionUserDataStore((state) => state.setRolesSet)\n const setFuncionalidadesSet = useSessionUserDataStore(\n (state) => state.setFuncionalidadesSet,\n )\n const setFuncionalidadesNameSet = useSessionUserDataStore(\n (state) => state.setFuncionalidadesNameSet,\n )\n const setFuncionalidadesMap = useSessionUserDataStore(\n (state) => state.setFuncionalidesMap,\n )\n\n const { token, setToken } = useToken()\n\n const authenticated = Boolean(token && signedIn)\n\n const navigatorRef = useRef<IsolatedNavigatorRef>(null)\n\n const redirect = (userData: { primeiroAcesso?: boolean }) => {\n if (userData.primeiroAcesso) {\n navigatorRef.current?.navigate(appConfig.firstAccessPath)\n return\n }\n const search = window.location.search\n const params = new URLSearchParams(search)\n const redirectUrl = params.get(REDIRECT_URL_KEY)\n\n navigatorRef.current?.navigate(\n redirectUrl ? redirectUrl : appConfig.authenticatedEntryPath,\n )\n }\n\n const handleSignIn = (tokens: Token) => {\n setToken(tokens.accessToken)\n setSessionSignedIn(true)\n }\n\n const handleSignOut = () => {\n setToken('')\n setUser({})\n setSessionSignedIn(false)\n }\n\n async function handlePostAuth(resp: SignInResponse) {\n const findUserByIdResp = await apiFindUserById(resp.id)\n\n const { roles } = findUserByIdResp\n \n // Extrair os nomes das roles e salvar no rolesSet\n const rolesNames = roles.map((role) => role.nome)\n const rolesSet = new Set<string>(rolesNames)\n setRolesSet(rolesSet)\n \n const funcionalidades = roles.flatMap((role) =>\n role.funcionalidades.map((func) => func.url),\n )\n\n const funcionalidadesSet = new Set<string>(funcionalidades || [])\n setFuncionalidadesSet(funcionalidadesSet)\n\n const funcionalidadesMap = funcionalidades.reduce(\n mapFuncionalidadesByPath,\n {} as TFuncionalidadeMap,\n )\n\n setFuncionalidadesMap(funcionalidadesMap)\n }\n\n const signIn = async (values: SignInCredential): AuthResult => {\n try {\n const resp = await apiSignIn(values)\n\n if (resp) {\n handleSignIn({ accessToken: resp.jwtToken })\n const funcionalidades = await apiFetchUserFuncionalidadesDetail(\n resp.id,\n )\n const vinculosUsuario = await apiFetchUserVinculosUsuario(\n resp.id,\n )\n\n const funcionalidadesUrls = funcionalidades.map((f) => f.url)\n const funcionalidadesNames = new Set<string>(\n funcionalidades.map((f) => f.nome),\n )\n\n setFuncionalidadesNameSet(funcionalidadesNames)\n\n const newUser = {\n userId: resp.id.toString(),\n userName: resp.nome,\n email: resp.email,\n primeiroAcesso: resp.primeiroAcesso,\n authority: funcionalidadesUrls,\n vinculosUsuario: vinculosUsuario,\n }\n handlePostAuth(resp)\n setUser(newUser)\n redirect(newUser)\n return {\n status: 'success',\n message: '',\n }\n }\n return {\n status: 'failed',\n message: 'Unable to sign in',\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (errors: any) {\n console.error('ERRO NA CHAMADA DA API:', errors)\n return {\n status: 'failed',\n message: errors?.response?.data?.message || errors.toString(),\n }\n }\n }\n\n const signUp = async (values: SignUpCredential): AuthResult => {\n try {\n const resp = await apiSignUp(values)\n if (resp) {\n handleSignIn({ accessToken: resp.jwtToken })\n // Armazenar ID e nome do usuário no estado\n const newUser = {\n userId: resp.id.toString(),\n userName: resp.nome,\n email: resp.email,\n primeiroAcesso: false,\n }\n setUser(newUser)\n redirect(newUser)\n return {\n status: 'success',\n message: '',\n }\n }\n return {\n status: 'failed',\n message: 'Unable to sign up',\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (errors: any) {\n return {\n status: 'failed',\n message: errors?.response?.data?.message || errors.toString(),\n }\n }\n }\n\n const signOut = async () => {\n try {\n await apiSignOut()\n } finally {\n handleSignOut()\n navigatorRef.current?.navigate(appConfig.unAuthenticatedEntryPath)\n }\n }\n const oAuthSignIn = (\n callback: (payload: OauthSignInCallbackPayload) => void,\n ) => {\n callback({\n onSignIn: handleSignIn,\n redirect: () => redirect(user),\n })\n }\n\n const updateUserSession = (newUserData: Partial<typeof user>) => {\n setUser({ ...user, ...newUserData })\n }\n return (\n <AuthContext.Provider\n value={{\n authenticated,\n user,\n signIn,\n signUp,\n signOut,\n oAuthSignIn,\n updateUserSession,\n }}\n >\n {children}\n <IsolatedNavigator ref={navigatorRef} />\n </AuthContext.Provider>\n )\n}\n\nexport default AuthProvider\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AuthProvider.js","sources":["../../../lib/@ecme/auth/AuthProvider.tsx"],"sourcesContent":["import type {\n AuthResult,\n OauthSignInCallbackPayload,\n SignInCredential,\n SignInResponse,\n SignUpCredential,\n Token,\n} from '@/@types/auth'\nimport appConfig from '@/configs/app.config'\nimport { REDIRECT_URL_KEY } from '@/constants/app.constant'\nimport { apiSignIn, apiSignOut, apiSignUp } from '@/services/AuthService'\nimport { useSessionUser, useToken } from '@/store/authStore'\nimport {\n apiFetchUserFuncionalidadesDetail,\n apiFetchUserVinculosUsuario,\n apiFindUserById,\n} from '@base/services'\nimport {\n TFuncionalidadeMap,\n useSessionUserDataStore,\n} from '@base/store/auth/sessionUserData'\nimport { mapFuncionalidadesByPath } from '@base/utils/modules/dm/funcionalidades'\nimport { ReactNode, Ref, useImperativeHandle, useRef } from 'react'\nimport { NavigateFunction, useNavigate } from 'react-router-dom'\nimport AuthContext from './AuthContext'\n\ntype AuthProviderProps = { children: ReactNode }\n\nexport type IsolatedNavigatorRef = {\n navigate: NavigateFunction\n}\n\nconst IsolatedNavigator = ({ ref }: { ref: Ref<IsolatedNavigatorRef> }) => {\n const navigate = useNavigate()\n\n useImperativeHandle(ref, () => {\n return {\n navigate,\n }\n }, [navigate])\n\n return <></>\n}\n\nfunction AuthProvider({ children }: AuthProviderProps) {\n const signedIn = useSessionUser((state) => state.session.signedIn)\n const user = useSessionUser((state) => state.user)\n const setUser = useSessionUser((state) => state.setUser)\n const setSessionSignedIn = useSessionUser(\n (state) => state.setSessionSignedIn,\n )\n\n const setRolesSet = useSessionUserDataStore((state) => state.setRolesSet)\n const setFuncionalidadesSet = useSessionUserDataStore(\n (state) => state.setFuncionalidadesSet,\n )\n const setFuncionalidadesNameSet = useSessionUserDataStore(\n (state) => state.setFuncionalidadesNameSet,\n )\n const setFuncionalidadesMap = useSessionUserDataStore(\n (state) => state.setFuncionalidesMap,\n )\n const setPermissoesSet = useSessionUserDataStore(\n (state) => state.setPermissoesSet,\n )\n\n const { token, setToken } = useToken()\n\n const authenticated = Boolean(token && signedIn)\n\n const navigatorRef = useRef<IsolatedNavigatorRef>(null)\n\n const redirect = (userData: { primeiroAcesso?: boolean }) => {\n if (userData.primeiroAcesso) {\n navigatorRef.current?.navigate(appConfig.firstAccessPath)\n return\n }\n const search = window.location.search\n const params = new URLSearchParams(search)\n const redirectUrl = params.get(REDIRECT_URL_KEY)\n\n navigatorRef.current?.navigate(\n redirectUrl ? redirectUrl : appConfig.authenticatedEntryPath,\n )\n }\n\n const handleSignIn = (tokens: Token) => {\n setToken(tokens.accessToken)\n setSessionSignedIn(true)\n }\n\n const handleSignOut = () => {\n setToken('')\n setUser({})\n setSessionSignedIn(false)\n }\n\n async function handlePostAuth(resp: SignInResponse) {\n const findUserByIdResp = await apiFindUserById(resp.id)\n\n const { roles } = findUserByIdResp\n \n // Extrair os nomes das roles e salvar no rolesSet\n const rolesNames = roles.map((role) => role.nome)\n const rolesSet = new Set<string>(rolesNames)\n setRolesSet(rolesSet)\n \n const funcionalidades = roles.flatMap((role) =>\n role.funcionalidades.map((func) => func.url),\n )\n\n const funcionalidadesSet = new Set<string>(funcionalidades || [])\n setFuncionalidadesSet(funcionalidadesSet)\n\n const funcionalidadesMap = funcionalidades.reduce(\n mapFuncionalidadesByPath,\n {} as TFuncionalidadeMap,\n )\n\n setFuncionalidadesMap(funcionalidadesMap)\n\n // Extrair permissoes ativas de todas as funcionalidades e salvar no permissoesSet\n const permissoes = roles.flatMap((role) =>\n role.funcionalidades.flatMap((func) =>\n (func.permissoes || [])\n .filter((p: any) => p.ativo)\n .map((p: any) => `${p.endpoint},${p.httpMethod}`),\n ),\n )\n\n const permissoesSet = new Set<string>(permissoes || [])\n setPermissoesSet(permissoesSet)\n \n }\n\n const signIn = async (values: SignInCredential): AuthResult => {\n try {\n const resp = await apiSignIn(values)\n\n if (resp) {\n handleSignIn({ accessToken: resp.jwtToken })\n const funcionalidades = await apiFetchUserFuncionalidadesDetail(\n resp.id,\n )\n const vinculosUsuario = await apiFetchUserVinculosUsuario(\n resp.id,\n )\n\n const funcionalidadesUrls = funcionalidades.map((f) => f.url)\n const funcionalidadesNames = new Set<string>(\n funcionalidades.map((f) => f.nome),\n )\n\n setFuncionalidadesNameSet(funcionalidadesNames)\n\n const newUser = {\n userId: resp.id.toString(),\n userName: resp.nome,\n email: resp.email,\n primeiroAcesso: resp.primeiroAcesso,\n authority: funcionalidadesUrls,\n vinculosUsuario: vinculosUsuario,\n }\n handlePostAuth(resp)\n setUser(newUser)\n redirect(newUser)\n return {\n status: 'success',\n message: '',\n }\n }\n return {\n status: 'failed',\n message: 'Unable to sign in',\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (errors: any) {\n console.error('ERRO NA CHAMADA DA API:', errors)\n return {\n status: 'failed',\n message: errors?.response?.data?.message || errors.toString(),\n }\n }\n }\n\n const signUp = async (values: SignUpCredential): AuthResult => {\n try {\n const resp = await apiSignUp(values)\n if (resp) {\n handleSignIn({ accessToken: resp.jwtToken })\n // Armazenar ID e nome do usuário no estado\n const newUser = {\n userId: resp.id.toString(),\n userName: resp.nome,\n email: resp.email,\n primeiroAcesso: false,\n }\n setUser(newUser)\n redirect(newUser)\n return {\n status: 'success',\n message: '',\n }\n }\n return {\n status: 'failed',\n message: 'Unable to sign up',\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (errors: any) {\n return {\n status: 'failed',\n message: errors?.response?.data?.message || errors.toString(),\n }\n }\n }\n\n const signOut = async () => {\n try {\n await apiSignOut()\n } finally {\n handleSignOut()\n navigatorRef.current?.navigate(appConfig.unAuthenticatedEntryPath)\n }\n }\n const oAuthSignIn = (\n callback: (payload: OauthSignInCallbackPayload) => void,\n ) => {\n callback({\n onSignIn: handleSignIn,\n redirect: () => redirect(user),\n })\n }\n\n const updateUserSession = (newUserData: Partial<typeof user>) => {\n setUser({ ...user, ...newUserData })\n }\n return (\n <AuthContext.Provider\n value={{\n authenticated,\n user,\n signIn,\n signUp,\n signOut,\n oAuthSignIn,\n updateUserSession,\n }}\n >\n {children}\n <IsolatedNavigator ref={navigatorRef} />\n </AuthContext.Provider>\n )\n}\n\nexport default AuthProvider\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AuthProvider.d.ts","sourceRoot":"","sources":["../../../../lib/@ecme/auth/AuthProvider.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAAE,SAAS,EAAoC,MAAM,OAAO,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAe,MAAM,kBAAkB,CAAA;AAGhE,KAAK,iBAAiB,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,CAAA;AAEhD,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,EAAE,gBAAgB,CAAA;CAC7B,CAAA;AAcD,iBAAS,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CAiMpD;AAED,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"AuthProvider.d.ts","sourceRoot":"","sources":["../../../../lib/@ecme/auth/AuthProvider.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAAE,SAAS,EAAoC,MAAM,OAAO,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAe,MAAM,kBAAkB,CAAA;AAGhE,KAAK,iBAAiB,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,CAAA;AAEhD,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,EAAE,gBAAgB,CAAA;CAC7B,CAAA;AAcD,iBAAS,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CAiNpD;AAED,eAAe,YAAY,CAAA"}
@@ -10,6 +10,8 @@ export type TSessionUserDataStore = {
10
10
  setFuncionalidesMap: (funcMap: TFuncionalidadeMap) => void;
11
11
  funcionalidadesNameSet: Set<string> | null;
12
12
  setFuncionalidadesNameSet: (funcNameSet: Set<string>) => void;
13
+ permissoesSet: Set<string> | null;
14
+ setPermissoesSet: (permissoes: Set<string>) => void;
13
15
  checkUserPathAccess: (path: string) => boolean;
14
16
  checkUserFunctionalityNameAccess: (name: string) => boolean;
15
17
  checkUserRoleAccess: (role: string) => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"sessionUserData.d.ts","sourceRoot":"","sources":["../../../../../lib/base/store/auth/sessionUserData.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,GAAG,CAAC,MAAM,CAAC,CAAA;CAClD;AAED,MAAM,MAAM,qBAAqB,GAAG;IAChC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAC5B,WAAW,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IACzC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IACtC,qBAAqB,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IACrD,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAA;IAC7C,mBAAmB,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAA;IAC1D,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAC1C,yBAAyB,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IAC7D,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IAC9C,gCAAgC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IAC3D,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CACjD,CAAA;AAGD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4EnC,CAAA"}
1
+ {"version":3,"file":"sessionUserData.d.ts","sourceRoot":"","sources":["../../../../../lib/base/store/auth/sessionUserData.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,GAAG,CAAC,MAAM,CAAC,CAAA;CAClD;AAED,MAAM,MAAM,qBAAqB,GAAG;IAChC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAC5B,WAAW,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IACzC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IACtC,qBAAqB,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IACrD,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAA;IAC7C,mBAAmB,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAA;IAC1D,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAC1C,yBAAyB,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IAC7D,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IACjC,gBAAgB,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IACnD,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IAC9C,gCAAgC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IAC3D,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CACjD,CAAA;AAED,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsFnC,CAAA"}
@@ -20,6 +20,11 @@ const useSessionUserDataStore = create()(
20
20
  setFuncionalidadesNameSet: (funcNames) => set(() => ({
21
21
  funcionalidadesNameSet: funcNames
22
22
  })),
23
+ /** @description 'Set' de permissões ativas no formato 'endpoint,httpMethod' */
24
+ permissoesSet: null,
25
+ setPermissoesSet: (permissoes) => set(() => ({
26
+ permissoesSet: permissoes
27
+ })),
23
28
  checkUserPathAccess: (path) => {
24
29
  const funcSet = get().funcionalidadesSet;
25
30
  if (path.length === 0 || path == null || funcSet == null) {
@@ -1 +1 @@
1
- {"version":3,"file":"sessionUserData.js","sources":["../../../../lib/base/store/auth/sessionUserData.ts"],"sourcesContent":["import { create } from 'zustand'\nimport { createJSONStorage, devtools, persist } from 'zustand/middleware'\n\nexport interface TFuncionalidadeMap {\n [key: string]: TFuncionalidadeMap | Set<string>\n}\n\nexport type TSessionUserDataStore = {\n rolesSet: Set<string> | null\n setRolesSet: (roles: Set<string>) => void\n funcionalidadesSet: Set<string> | null\n setFuncionalidadesSet: (funcSet: Set<string>) => void\n funcionalidadesMap: TFuncionalidadeMap | null\n setFuncionalidesMap: (funcMap: TFuncionalidadeMap) => void\n funcionalidadesNameSet: Set<string> | null\n setFuncionalidadesNameSet: (funcNameSet: Set<string>) => void\n checkUserPathAccess: (path: string) => boolean\n checkUserFunctionalityNameAccess: (name: string) => boolean\n checkUserRoleAccess: (role: string) => boolean\n}\n\n\nexport const useSessionUserDataStore = create<TSessionUserDataStore>()(\n devtools(\n persist(\n (set, get) => ({\n rolesSet: null,\n setRolesSet: (roles: Set<string>) =>\n set(() => ({\n rolesSet: roles,\n })),\n funcionalidadesSet: null,\n setFuncionalidadesSet: (funcionalidades: Set<string>) =>\n set(() => ({\n funcionalidadesSet: funcionalidades,\n })),\n funcionalidadesMap: null,\n setFuncionalidesMap: (funcionalidadesMap: TFuncionalidadeMap) =>\n set(() => ({\n funcionalidadesMap: funcionalidadesMap,\n })),\n funcionalidadesNameSet: null,\n setFuncionalidadesNameSet: (funcNames: Set<string>) =>\n set(() => ({\n funcionalidadesNameSet: funcNames,\n })),\n checkUserPathAccess: (path: string): boolean => {\n const funcSet = get().funcionalidadesSet\n\n if (path.length === 0 || path == null || funcSet == null) {\n return false\n }\n\n return funcSet.has(path)\n },\n checkUserFunctionalityNameAccess: (name: string): boolean => {\n const funcNameSet = get().funcionalidadesNameSet\n if (name == null || name.length === 0 || funcNameSet == null) {\n return false\n }\n return funcNameSet.has(name)\n },\n checkUserRoleAccess: (role: string): boolean => {\n const rolesSet = get().rolesSet\n if (role.length === 0 || role == null || rolesSet == null) {\n return false\n }\n return rolesSet.has(role)\n },\n }),\n {\n // Serializador customizado para armazenar Set corretamente\n name: 'sessionUserData',\n storage: createJSONStorage(() => localStorage, {\n reviver: (key, value) => {\n if (\n [\n 'rolesSet',\n 'funcionalidadesSet',\n 'funcionalidadesNameSet',\n ].includes(key) &&\n Array.isArray(value)\n ) {\n return new Set(value)\n }\n return value\n },\n\n replacer: (key, value) => {\n if (value instanceof Set) {\n return Array.from(value)\n }\n return value\n },\n }),\n },\n ),\n ),\n)\n\n"],"names":[],"mappings":";;AAsBO,MAAM,0BAA0B,OAAA;AAAA,EACnC;AAAA,IACI;AAAA,MACI,CAAC,KAAK,SAAS;AAAA,QACX,UAAU;AAAA,QACV,aAAa,CAAC,UACV,IAAI,OAAO;AAAA,UACP,UAAU;AAAA,QAAA,EACZ;AAAA,QACN,oBAAoB;AAAA,QACpB,uBAAuB,CAAC,oBACpB,IAAI,OAAO;AAAA,UACP,oBAAoB;AAAA,QAAA,EACtB;AAAA,QACN,oBAAoB;AAAA,QACpB,qBAAqB,CAAC,uBAClB,IAAI,OAAO;AAAA,UACP;AAAA,QAAA,EACF;AAAA,QACN,wBAAwB;AAAA,QACxB,2BAA2B,CAAC,cACxB,IAAI,OAAO;AAAA,UACP,wBAAwB;AAAA,QAAA,EAC1B;AAAA,QACN,qBAAqB,CAAC,SAA0B;AAC5C,gBAAM,UAAU,MAAM;AAEtB,cAAI,KAAK,WAAW,KAAK,QAAQ,QAAQ,WAAW,MAAM;AACtD,mBAAO;AAAA,UACX;AAEA,iBAAO,QAAQ,IAAI,IAAI;AAAA,QAC3B;AAAA,QACA,kCAAkC,CAAC,SAA0B;AACzD,gBAAM,cAAc,MAAM;AAC1B,cAAI,QAAQ,QAAQ,KAAK,WAAW,KAAK,eAAe,MAAM;AAC1D,mBAAO;AAAA,UACX;AACA,iBAAO,YAAY,IAAI,IAAI;AAAA,QAC/B;AAAA,QACA,qBAAqB,CAAC,SAA0B;AAC5C,gBAAM,WAAW,MAAM;AACvB,cAAI,KAAK,WAAW,KAAK,QAAQ,QAAQ,YAAY,MAAM;AACvD,mBAAO;AAAA,UACX;AACA,iBAAO,SAAS,IAAI,IAAI;AAAA,QAC5B;AAAA,MAAA;AAAA,MAEJ;AAAA;AAAA,QAEI,MAAM;AAAA,QACN,SAAS,kBAAkB,MAAM,cAAc;AAAA,UAC3C,SAAS,CAAC,KAAK,UAAU;AACrB,gBACI;AAAA,cACI;AAAA,cACA;AAAA,cACA;AAAA,YAAA,EACF,SAAS,GAAG,KACd,MAAM,QAAQ,KAAK,GACrB;AACE,qBAAO,IAAI,IAAI,KAAK;AAAA,YACxB;AACA,mBAAO;AAAA,UACX;AAAA,UAEA,UAAU,CAAC,KAAK,UAAU;AACtB,gBAAI,iBAAiB,KAAK;AACtB,qBAAO,MAAM,KAAK,KAAK;AAAA,YAC3B;AACA,mBAAO;AAAA,UACX;AAAA,QAAA,CACH;AAAA,MAAA;AAAA,IACL;AAAA,EACJ;AAER;"}
1
+ {"version":3,"file":"sessionUserData.js","sources":["../../../../lib/base/store/auth/sessionUserData.ts"],"sourcesContent":["import { create } from 'zustand'\nimport { createJSONStorage, devtools, persist } from 'zustand/middleware'\n\nexport interface TFuncionalidadeMap {\n [key: string]: TFuncionalidadeMap | Set<string>\n}\n\nexport type TSessionUserDataStore = {\n rolesSet: Set<string> | null\n setRolesSet: (roles: Set<string>) => void\n funcionalidadesSet: Set<string> | null\n setFuncionalidadesSet: (funcSet: Set<string>) => void\n funcionalidadesMap: TFuncionalidadeMap | null\n setFuncionalidesMap: (funcMap: TFuncionalidadeMap) => void\n funcionalidadesNameSet: Set<string> | null\n setFuncionalidadesNameSet: (funcNameSet: Set<string>) => void\n permissoesSet: Set<string> | null\n setPermissoesSet: (permissoes: Set<string>) => void\n checkUserPathAccess: (path: string) => boolean\n checkUserFunctionalityNameAccess: (name: string) => boolean\n checkUserRoleAccess: (role: string) => boolean\n}\n\nexport const useSessionUserDataStore = create<TSessionUserDataStore>()(\n devtools(\n persist(\n (set, get) => ({\n rolesSet: null,\n setRolesSet: (roles: Set<string>) =>\n set(() => ({\n rolesSet: roles,\n })),\n funcionalidadesSet: null,\n setFuncionalidadesSet: (funcionalidades: Set<string>) =>\n set(() => ({\n funcionalidadesSet: funcionalidades,\n })),\n funcionalidadesMap: null,\n setFuncionalidesMap: (funcionalidadesMap: TFuncionalidadeMap) =>\n set(() => ({\n funcionalidadesMap: funcionalidadesMap,\n })),\n funcionalidadesNameSet: null,\n setFuncionalidadesNameSet: (funcNames: Set<string>) =>\n set(() => ({\n funcionalidadesNameSet: funcNames,\n })),\n /** @description 'Set' de permissões ativas no formato 'endpoint,httpMethod' */\n permissoesSet: null,\n setPermissoesSet: (permissoes: Set<string>) =>\n set(() => ({\n permissoesSet: permissoes,\n })),\n checkUserPathAccess: (path: string): boolean => {\n const funcSet = get().funcionalidadesSet\n\n if (path.length === 0 || path == null || funcSet == null) {\n return false\n }\n\n return funcSet.has(path)\n },\n checkUserFunctionalityNameAccess: (name: string): boolean => {\n const funcNameSet = get().funcionalidadesNameSet\n if (\n name == null ||\n name.length === 0 ||\n funcNameSet == null\n ) {\n return false\n }\n return funcNameSet.has(name)\n },\n checkUserRoleAccess: (role: string): boolean => {\n const rolesSet = get().rolesSet\n if (role.length === 0 || role == null || rolesSet == null) {\n return false\n }\n return rolesSet.has(role)\n },\n }),\n {\n // Serializador customizado para armazenar Set corretamente\n name: 'sessionUserData',\n storage: createJSONStorage(() => localStorage, {\n reviver: (key, value) => {\n if (\n [\n 'rolesSet',\n 'funcionalidadesSet',\n 'funcionalidadesNameSet',\n ].includes(key) &&\n Array.isArray(value)\n ) {\n return new Set(value)\n }\n return value\n },\n\n replacer: (key, value) => {\n if (value instanceof Set) {\n return Array.from(value)\n }\n return value\n },\n }),\n },\n ),\n ),\n)\n"],"names":[],"mappings":";;AAuBO,MAAM,0BAA0B,OAAA;AAAA,EACnC;AAAA,IACI;AAAA,MACI,CAAC,KAAK,SAAS;AAAA,QACX,UAAU;AAAA,QACV,aAAa,CAAC,UACV,IAAI,OAAO;AAAA,UACP,UAAU;AAAA,QAAA,EACZ;AAAA,QACN,oBAAoB;AAAA,QACpB,uBAAuB,CAAC,oBACpB,IAAI,OAAO;AAAA,UACP,oBAAoB;AAAA,QAAA,EACtB;AAAA,QACN,oBAAoB;AAAA,QACpB,qBAAqB,CAAC,uBAClB,IAAI,OAAO;AAAA,UACP;AAAA,QAAA,EACF;AAAA,QACN,wBAAwB;AAAA,QACxB,2BAA2B,CAAC,cACxB,IAAI,OAAO;AAAA,UACP,wBAAwB;AAAA,QAAA,EAC1B;AAAA;AAAA,QAEN,eAAe;AAAA,QACf,kBAAkB,CAAC,eACf,IAAI,OAAO;AAAA,UACP,eAAe;AAAA,QAAA,EACjB;AAAA,QACN,qBAAqB,CAAC,SAA0B;AAC5C,gBAAM,UAAU,MAAM;AAEtB,cAAI,KAAK,WAAW,KAAK,QAAQ,QAAQ,WAAW,MAAM;AACtD,mBAAO;AAAA,UACX;AAEA,iBAAO,QAAQ,IAAI,IAAI;AAAA,QAC3B;AAAA,QACA,kCAAkC,CAAC,SAA0B;AACzD,gBAAM,cAAc,MAAM;AAC1B,cACI,QAAQ,QACR,KAAK,WAAW,KAChB,eAAe,MACjB;AACE,mBAAO;AAAA,UACX;AACA,iBAAO,YAAY,IAAI,IAAI;AAAA,QAC/B;AAAA,QACA,qBAAqB,CAAC,SAA0B;AAC5C,gBAAM,WAAW,MAAM;AACvB,cAAI,KAAK,WAAW,KAAK,QAAQ,QAAQ,YAAY,MAAM;AACvD,mBAAO;AAAA,UACX;AACA,iBAAO,SAAS,IAAI,IAAI;AAAA,QAC5B;AAAA,MAAA;AAAA,MAEJ;AAAA;AAAA,QAEI,MAAM;AAAA,QACN,SAAS,kBAAkB,MAAM,cAAc;AAAA,UAC3C,SAAS,CAAC,KAAK,UAAU;AACrB,gBACI;AAAA,cACI;AAAA,cACA;AAAA,cACA;AAAA,YAAA,EACF,SAAS,GAAG,KACd,MAAM,QAAQ,KAAK,GACrB;AACE,qBAAO,IAAI,IAAI,KAAK;AAAA,YACxB;AACA,mBAAO;AAAA,UACX;AAAA,UAEA,UAAU,CAAC,KAAK,UAAU;AACtB,gBAAI,iBAAiB,KAAK;AACtB,qBAAO,MAAM,KAAK,KAAK;AAAA,YAC3B;AACA,mBAAO;AAAA,UACX;AAAA,QAAA,CACH;AAAA,MAAA;AAAA,IACL;AAAA,EACJ;AAER;"}
@@ -60,6 +60,9 @@ function AuthProvider({ children }: AuthProviderProps) {
60
60
  const setFuncionalidadesMap = useSessionUserDataStore(
61
61
  (state) => state.setFuncionalidesMap,
62
62
  )
63
+ const setPermissoesSet = useSessionUserDataStore(
64
+ (state) => state.setPermissoesSet,
65
+ )
63
66
 
64
67
  const { token, setToken } = useToken()
65
68
 
@@ -115,6 +118,19 @@ function AuthProvider({ children }: AuthProviderProps) {
115
118
  )
116
119
 
117
120
  setFuncionalidadesMap(funcionalidadesMap)
121
+
122
+ // Extrair permissoes ativas de todas as funcionalidades e salvar no permissoesSet
123
+ const permissoes = roles.flatMap((role) =>
124
+ role.funcionalidades.flatMap((func) =>
125
+ (func.permissoes || [])
126
+ .filter((p: any) => p.ativo)
127
+ .map((p: any) => `${p.endpoint},${p.httpMethod}`),
128
+ ),
129
+ )
130
+
131
+ const permissoesSet = new Set<string>(permissoes || [])
132
+ setPermissoesSet(permissoesSet)
133
+
118
134
  }
119
135
 
120
136
  const signIn = async (values: SignInCredential): AuthResult => {
@@ -14,12 +14,13 @@ export type TSessionUserDataStore = {
14
14
  setFuncionalidesMap: (funcMap: TFuncionalidadeMap) => void
15
15
  funcionalidadesNameSet: Set<string> | null
16
16
  setFuncionalidadesNameSet: (funcNameSet: Set<string>) => void
17
+ permissoesSet: Set<string> | null
18
+ setPermissoesSet: (permissoes: Set<string>) => void
17
19
  checkUserPathAccess: (path: string) => boolean
18
20
  checkUserFunctionalityNameAccess: (name: string) => boolean
19
21
  checkUserRoleAccess: (role: string) => boolean
20
22
  }
21
23
 
22
-
23
24
  export const useSessionUserDataStore = create<TSessionUserDataStore>()(
24
25
  devtools(
25
26
  persist(
@@ -44,6 +45,12 @@ export const useSessionUserDataStore = create<TSessionUserDataStore>()(
44
45
  set(() => ({
45
46
  funcionalidadesNameSet: funcNames,
46
47
  })),
48
+ /** @description 'Set' de permissões ativas no formato 'endpoint,httpMethod' */
49
+ permissoesSet: null,
50
+ setPermissoesSet: (permissoes: Set<string>) =>
51
+ set(() => ({
52
+ permissoesSet: permissoes,
53
+ })),
47
54
  checkUserPathAccess: (path: string): boolean => {
48
55
  const funcSet = get().funcionalidadesSet
49
56
 
@@ -55,7 +62,11 @@ export const useSessionUserDataStore = create<TSessionUserDataStore>()(
55
62
  },
56
63
  checkUserFunctionalityNameAccess: (name: string): boolean => {
57
64
  const funcNameSet = get().funcionalidadesNameSet
58
- if (name == null || name.length === 0 || funcNameSet == null) {
65
+ if (
66
+ name == null ||
67
+ name.length === 0 ||
68
+ funcNameSet == null
69
+ ) {
59
70
  return false
60
71
  }
61
72
  return funcNameSet.has(name)
@@ -97,4 +108,3 @@ export const useSessionUserDataStore = create<TSessionUserDataStore>()(
97
108
  ),
98
109
  ),
99
110
  )
100
-
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orbe-agro/client-core",
3
- "version": "5.6.22",
3
+ "version": "5.6.23",
4
4
  "description": "Biblioteca principal de componentes e utilidades para os microfrontends do Orbe Agro.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",