chore updates

This commit is contained in:
Mohamadzadeh 2026-06-13 12:11:25 +03:30
parent 818331917c
commit 45aa2932ac
2 changed files with 18 additions and 7 deletions

View File

@ -2,17 +2,20 @@ import Keycloak from "keycloak-js";
import {
createContext,
useCallback,
useContext,
useEffect,
useMemo,
useRef,
useState,
} from "react";
// variables
let keycloakInstance = null;
let initPromise = null;
let initializedValue = false;
// contexts
const KeycloakContext = createContext(null);
const createKeycloak = ({ url, realm, clientId }) => {
@ -26,6 +29,8 @@ const createKeycloak = ({ url, realm, clientId }) => {
return keycloakInstance;
};
// initializations
export const initKeycloak = ({ config, initOptions = {} }) => {
const keycloak = createKeycloak(config);
if (!initPromise) {
@ -48,6 +53,8 @@ export const initKeycloak = ({ config, initOptions = {} }) => {
return initPromise;
};
// exports
export const isKeycloakInitialized = () => {
return initializedValue;
};
@ -74,6 +81,8 @@ export const loginKeycloak = (options) => {
return keycloakInstance?.login(options);
};
// providers
export const KeycloakProvider = ({
children,
config,
@ -152,10 +161,8 @@ export const KeycloakProvider = ({
// const useKeycloak = () => {
// const context = useContext(KeycloakContext);
// if (!context) {
// throw new Error("useKeycloak must be used inside KeycloakProvider");
// }
// return context;
// };

View File

@ -13,15 +13,19 @@ import {
logoutKeycloak,
} from "./keycloak.jsx";
// contexts
const PermissionContext = createContext(null);
// storage keys
const DEFAULT_STORAGE_KEY = "permissions";
const getPermissionStorageKey = (config) => {
return config?.storageKey || DEFAULT_STORAGE_KEY;
};
// provider
// providers
export const PermissionProvider = ({
user = null,
@ -81,7 +85,7 @@ export const PermissionProvider = ({
);
};
// storage
// storage cashes
export const getCachedPermissions = (storageKey = DEFAULT_STORAGE_KEY) => {
if (typeof window === "undefined") return undefined;
@ -139,14 +143,14 @@ export const checkPermission = (permissionSet, perm = "") => {
return false;
};
// keys
// api keys
export const permissionKeys = {
all: ["permissions"],
list: (clientId) => [...permissionKeys.all, clientId],
};
// api
// apis
export const getPermissions = async (config) => {
if (!config?.url || !config?.clientId) {