31 lines
1 KiB
TypeScript
31 lines
1 KiB
TypeScript
/**
|
|
* front connect to keycloak
|
|
*/
|
|
import Keycloak from "keycloak-js";
|
|
|
|
const initOptions = {
|
|
realm: import.meta.env.VITE_REALM_KEYCLOAK,
|
|
clientId: import.meta.env.VITE_CLIENTID_KEYCLOAK,
|
|
url: import.meta.env.VITE_URL_KEYCLOAK,
|
|
}; //option keycloak ที่จะ connect
|
|
|
|
const keycloak = Keycloak(initOptions);
|
|
|
|
keycloak.onAuthSuccess = () => {
|
|
// check role user
|
|
const hasCommonValues = (array1: string[], array2: string[]): boolean => {
|
|
return array1.some((element) => array2.includes(element));
|
|
};
|
|
|
|
const role = keycloak.tokenParsed?.role;
|
|
const roleSys = ["SUPER_ADMIN", "ADMIN"];
|
|
const checkPermission = hasCommonValues(role, roleSys);
|
|
if (!checkPermission) {
|
|
keycloak.logout({
|
|
redirectUri: `${window.location.protocol}//${window.location.host}/`,
|
|
});
|
|
}
|
|
}; //เพิ่มlogin สำเร็จจะมาทำฟังก์ชันนี้
|
|
|
|
await keycloak.init({ onLoad: "check-sso", checkLoginIframe: false }); //ทำการ connect keycloak
|
|
export default keycloak;
|