@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.
- package/dist/@ecme/auth/AuthProvider.js +10 -0
- package/dist/@ecme/auth/AuthProvider.js.map +1 -1
- package/dist/@types/@ecme/auth/AuthProvider.d.ts.map +1 -1
- package/dist/@types/base/store/auth/sessionUserData.d.ts +2 -0
- package/dist/@types/base/store/auth/sessionUserData.d.ts.map +1 -1
- package/dist/base/store/auth/sessionUserData.js +5 -0
- package/dist/base/store/auth/sessionUserData.js.map +1 -1
- package/lib/@ecme/auth/AuthProvider.tsx +16 -0
- package/lib/base/store/auth/sessionUserData.ts +13 -3
- package/package.json +1 -1
|
@@ -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,
|
|
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;
|
|
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\
|
|
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 (
|
|
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
|
-
|