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

View File

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