Skip to content

Commit d74eef1

Browse files
authored
[Comp-822] New historical IR requirement and edit buttons mission (#770)
1 parent e591a15 commit d74eef1

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

compliance-web/src/hooks/useAuthorization.tsx

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { useMemo } from "react";
12
import { StaffUser } from "@/models/Staff";
23
import { jwtDecode, JwtPayload } from "jwt-decode";
34
import { useAuth } from "react-oidc-context";
@@ -25,28 +26,29 @@ export const useIsRolesAllowed = (
2526
users?: StaffUser[]
2627
): boolean => {
2728
const { user: authUser } = useAuth();
28-
29-
if (!authUser?.access_token) {
30-
return false;
31-
}
3229

33-
const payload = jwtDecode<CustomJwtPayload>(authUser.access_token);
34-
35-
// Get roles from resource_access if available
36-
const resourceRoles = payload.resource_access?.[OidcConfig.client_id]?.roles || [];
37-
38-
// Check if the user has any of the required roles (from groups or resource_access)
39-
const isRoleAllowed = roles.some((role) =>
40-
resourceRoles.includes(role)
41-
);
30+
return useMemo(() => {
31+
if (!authUser?.access_token) {
32+
return false;
33+
}
4234

43-
// Check if the logged-in user is part of the provided users list
44-
const isUserAllowed =
45-
users?.some(
46-
(user) => user?.auth_user_guid === authUser?.profile?.preferred_username
47-
) ?? false;
35+
const payload = jwtDecode<CustomJwtPayload>(authUser.access_token);
4836

49-
return isRoleAllowed || isUserAllowed;
37+
// Get roles from resource_access if available
38+
const resourceRoles =
39+
payload.resource_access?.[OidcConfig.client_id]?.roles || [];
40+
41+
// Check if the user has any of the required roles (from groups or resource_access)
42+
const isRoleAllowed = roles.some((role) => resourceRoles.includes(role));
43+
44+
// Check if the logged-in user is part of the provided users list
45+
const isUserAllowed =
46+
users?.some(
47+
(user) => user?.auth_user_guid === authUser?.profile?.preferred_username
48+
) ?? false;
49+
50+
return isRoleAllowed || isUserAllowed;
51+
}, [authUser?.access_token, authUser?.profile?.preferred_username, roles, users]);
5052
};
5153

5254
export const useCurrentLoggedInUser = () => {

0 commit comments

Comments
 (0)