VMS-frontend/src/hooks/useRealmAccessRoles.ts

36 lines
1.0 KiB
TypeScript

import { useState, useEffect } from "react";
import { isProduction } from "../shared/env.const";
import { useKeycloak } from "@react-keycloak/web";
export const useRealmAccessRoles = () => {
const [roles, setRoles] = useState<string[]>([]);
const { keycloak } = useKeycloak()
useEffect(() => {
const updateRoles = () => {
const tokenRoles = keycloak.tokenParsed?.realm_access?.roles;
if (!isProduction) console.log(`tokenRoles:`, tokenRoles);
if (tokenRoles) {
setRoles(tokenRoles);
} else {
setRoles([])
}
}
updateRoles()
keycloak.onAuthSuccess = () => {
updateRoles()
}
keycloak.onAuthRefreshSuccess = () => {
updateRoles()
}
return () => {
keycloak.onAuthSuccess = undefined
keycloak.onAuthRefreshSuccess = undefined
}
}, [keycloak, keycloak.onAuthSuccess, keycloak.onAuthRefreshSuccess ])
return roles
}