@bmc-soft/keycloak-auth 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_lib/escapeForInjectedJS.d.ts +2 -0
- package/dist/_lib/escapeForInjectedJS.d.ts.map +1 -0
- package/dist/_lib/escapeForInjectedJS.js +8 -0
- package/dist/_lib/escapeForInjectedJS.js.map +1 -0
- package/dist/_lib/getInjectedJSForDetect.d.ts +2 -0
- package/dist/_lib/getInjectedJSForDetect.d.ts.map +1 -0
- package/dist/_lib/getInjectedJSForDetect.js +27 -0
- package/dist/_lib/getInjectedJSForDetect.js.map +1 -0
- package/dist/_lib/getInjectedJSForLogin.d.ts +2 -0
- package/dist/_lib/getInjectedJSForLogin.d.ts.map +1 -0
- package/dist/_lib/getInjectedJSForLogin.js +168 -0
- package/dist/_lib/getInjectedJSForLogin.js.map +1 -0
- package/dist/_lib/getInjectedJSForLogout.d.ts +2 -0
- package/dist/_lib/getInjectedJSForLogout.d.ts.map +1 -0
- package/dist/_lib/getInjectedJSForLogout.js +63 -0
- package/dist/_lib/getInjectedJSForLogout.js.map +1 -0
- package/dist/_lib/index.d.ts +7 -0
- package/dist/_lib/index.d.ts.map +1 -0
- package/dist/_lib/index.js +7 -0
- package/dist/_lib/index.js.map +1 -0
- package/dist/_lib/types/authStage.d.ts +7 -0
- package/dist/_lib/types/authStage.d.ts.map +1 -0
- package/dist/_lib/types/authStage.js +6 -0
- package/dist/_lib/types/authStage.js.map +1 -0
- package/dist/_lib/types/confirmAuthPhase.d.ts +7 -0
- package/dist/_lib/types/confirmAuthPhase.d.ts.map +1 -0
- package/dist/_lib/types/confirmAuthPhase.js +6 -0
- package/dist/_lib/types/confirmAuthPhase.js.map +1 -0
- package/dist/_lib/types/index.d.ts +4 -0
- package/dist/_lib/types/index.d.ts.map +1 -0
- package/dist/_lib/types/index.js +4 -0
- package/dist/_lib/types/index.js.map +1 -0
- package/dist/_lib/types/pinSetupStage.d.ts +7 -0
- package/dist/_lib/types/pinSetupStage.d.ts.map +1 -0
- package/dist/_lib/types/pinSetupStage.js +6 -0
- package/dist/_lib/types/pinSetupStage.js.map +1 -0
- package/dist/axios/adapters/KeycloakTokenProvider.d.ts +10 -0
- package/dist/axios/adapters/KeycloakTokenProvider.d.ts.map +1 -0
- package/dist/axios/adapters/KeycloakTokenProvider.js +56 -0
- package/dist/axios/adapters/KeycloakTokenProvider.js.map +1 -0
- package/dist/axios/index.d.ts +5 -0
- package/dist/axios/index.d.ts.map +1 -0
- package/dist/axios/index.js +3 -0
- package/dist/axios/index.js.map +1 -0
- package/dist/axios/interceptors.d.ts +5 -0
- package/dist/axios/interceptors.d.ts.map +1 -0
- package/dist/axios/interceptors.js +136 -0
- package/dist/axios/interceptors.js.map +1 -0
- package/dist/axios/tokenProvider.d.ts +7 -0
- package/dist/axios/tokenProvider.d.ts.map +1 -0
- package/dist/axios/tokenProvider.js +2 -0
- package/dist/axios/tokenProvider.js.map +1 -0
- package/dist/axios/types.d.ts +17 -0
- package/dist/axios/types.d.ts.map +1 -0
- package/dist/axios/types.js +2 -0
- package/dist/axios/types.js.map +1 -0
- package/dist/context/KeycloakConfigContext.d.ts +10 -0
- package/dist/context/KeycloakConfigContext.d.ts.map +1 -0
- package/dist/context/KeycloakConfigContext.js +50 -0
- package/dist/context/KeycloakConfigContext.js.map +1 -0
- package/dist/context/KeycloakInstanceContext.d.ts +20 -0
- package/dist/context/KeycloakInstanceContext.d.ts.map +1 -0
- package/dist/context/KeycloakInstanceContext.js +113 -0
- package/dist/context/KeycloakInstanceContext.js.map +1 -0
- package/dist/context/KeycloakProvider.d.ts +15 -0
- package/dist/context/KeycloakProvider.d.ts.map +1 -0
- package/dist/context/KeycloakProvider.js +19 -0
- package/dist/context/KeycloakProvider.js.map +1 -0
- package/dist/context/KeycloakThemeContext.d.ts +66 -0
- package/dist/context/KeycloakThemeContext.d.ts.map +1 -0
- package/dist/context/KeycloakThemeContext.js +59 -0
- package/dist/context/KeycloakThemeContext.js.map +1 -0
- package/dist/context/ReauthContext.d.ts +13 -0
- package/dist/context/ReauthContext.d.ts.map +1 -0
- package/dist/context/ReauthContext.js +26 -0
- package/dist/context/ReauthContext.js.map +1 -0
- package/dist/context/TokenContext.d.ts +18 -0
- package/dist/context/TokenContext.d.ts.map +1 -0
- package/dist/context/TokenContext.js +117 -0
- package/dist/context/TokenContext.js.map +1 -0
- package/dist/context/index.d.ts +14 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +7 -0
- package/dist/context/index.js.map +1 -0
- package/dist/core/adapter.d.ts +23 -0
- package/dist/core/adapter.d.ts.map +1 -0
- package/dist/core/adapter.js +75 -0
- package/dist/core/adapter.js.map +1 -0
- package/dist/core/client.d.ts +7 -0
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js +12 -0
- package/dist/core/client.js.map +1 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +4 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/storage.d.ts +10 -0
- package/dist/core/storage.d.ts.map +1 -0
- package/dist/core/storage.js +37 -0
- package/dist/core/storage.js.map +1 -0
- package/dist/core/types.d.ts +31 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/utils.d.ts +2 -0
- package/dist/core/utils.d.ts.map +1 -0
- package/dist/core/utils.js +10 -0
- package/dist/core/utils.js.map +1 -0
- package/dist/hooks/index.d.ts +9 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +7 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useKeycloakAuth.d.ts +23 -0
- package/dist/hooks/useKeycloakAuth.d.ts.map +1 -0
- package/dist/hooks/useKeycloakAuth.js +67 -0
- package/dist/hooks/useKeycloakAuth.js.map +1 -0
- package/dist/hooks/useKeycloakAuthScreen.d.ts +11 -0
- package/dist/hooks/useKeycloakAuthScreen.d.ts.map +1 -0
- package/dist/hooks/useKeycloakAuthScreen.js +59 -0
- package/dist/hooks/useKeycloakAuthScreen.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/screens/AuthPage/AuthPage.d.ts +17 -0
- package/dist/screens/AuthPage/AuthPage.d.ts.map +1 -0
- package/dist/screens/AuthPage/AuthPage.js +115 -0
- package/dist/screens/AuthPage/AuthPage.js.map +1 -0
- package/dist/screens/AuthPage/index.d.ts +2 -0
- package/dist/screens/AuthPage/index.d.ts.map +1 -0
- package/dist/screens/AuthPage/index.js +2 -0
- package/dist/screens/AuthPage/index.js.map +1 -0
- package/dist/screens/ConfirmAuthPage/ConfirmAuthPage.d.ts +21 -0
- package/dist/screens/ConfirmAuthPage/ConfirmAuthPage.d.ts.map +1 -0
- package/dist/screens/ConfirmAuthPage/ConfirmAuthPage.js +215 -0
- package/dist/screens/ConfirmAuthPage/ConfirmAuthPage.js.map +1 -0
- package/dist/screens/ConfirmAuthPage/index.d.ts +2 -0
- package/dist/screens/ConfirmAuthPage/index.d.ts.map +1 -0
- package/dist/screens/ConfirmAuthPage/index.js +2 -0
- package/dist/screens/ConfirmAuthPage/index.js.map +1 -0
- package/dist/screens/index.d.ts +3 -0
- package/dist/screens/index.d.ts.map +1 -0
- package/dist/screens/index.js +3 -0
- package/dist/screens/index.js.map +1 -0
- package/dist/storage/credentialStorage.d.ts +26 -0
- package/dist/storage/credentialStorage.d.ts.map +1 -0
- package/dist/storage/credentialStorage.js +188 -0
- package/dist/storage/credentialStorage.js.map +1 -0
- package/dist/storage/index.d.ts +3 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +3 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/tokenStorage.d.ts +28 -0
- package/dist/storage/tokenStorage.d.ts.map +1 -0
- package/dist/storage/tokenStorage.js +145 -0
- package/dist/storage/tokenStorage.js.map +1 -0
- package/dist/ui/DefaultButton/DefaultButton.d.ts +10 -0
- package/dist/ui/DefaultButton/DefaultButton.d.ts.map +1 -0
- package/dist/ui/DefaultButton/DefaultButton.js +41 -0
- package/dist/ui/DefaultButton/DefaultButton.js.map +1 -0
- package/dist/ui/DefaultButton/DefaultIconButton.d.ts +4 -0
- package/dist/ui/DefaultButton/DefaultIconButton.d.ts.map +1 -0
- package/dist/ui/DefaultButton/DefaultIconButton.js +11 -0
- package/dist/ui/DefaultButton/DefaultIconButton.js.map +1 -0
- package/dist/ui/DefaultButton/index.d.ts +4 -0
- package/dist/ui/DefaultButton/index.d.ts.map +1 -0
- package/dist/ui/DefaultButton/index.js +3 -0
- package/dist/ui/DefaultButton/index.js.map +1 -0
- package/dist/ui/DefaultLoader/DefaultLoader.d.ts +3 -0
- package/dist/ui/DefaultLoader/DefaultLoader.d.ts.map +1 -0
- package/dist/ui/DefaultLoader/DefaultLoader.js +16 -0
- package/dist/ui/DefaultLoader/DefaultLoader.js.map +1 -0
- package/dist/ui/DefaultLoader/index.d.ts +2 -0
- package/dist/ui/DefaultLoader/index.d.ts.map +1 -0
- package/dist/ui/DefaultLoader/index.js +2 -0
- package/dist/ui/DefaultLoader/index.js.map +1 -0
- package/dist/ui/LogoutButton/LogoutButtonIcon.d.ts +4 -0
- package/dist/ui/LogoutButton/LogoutButtonIcon.d.ts.map +1 -0
- package/dist/ui/LogoutButton/LogoutButtonIcon.js +12 -0
- package/dist/ui/LogoutButton/LogoutButtonIcon.js.map +1 -0
- package/dist/ui/LogoutButton/LogoutButtonText.d.ts +4 -0
- package/dist/ui/LogoutButton/LogoutButtonText.d.ts.map +1 -0
- package/dist/ui/LogoutButton/LogoutButtonText.js +18 -0
- package/dist/ui/LogoutButton/LogoutButtonText.js.map +1 -0
- package/dist/ui/LogoutButton/index.d.ts +4 -0
- package/dist/ui/LogoutButton/index.d.ts.map +1 -0
- package/dist/ui/LogoutButton/index.js +3 -0
- package/dist/ui/LogoutButton/index.js.map +1 -0
- package/dist/ui/LogoutButton/types.d.ts +14 -0
- package/dist/ui/LogoutButton/types.d.ts.map +1 -0
- package/dist/ui/LogoutButton/types.js +2 -0
- package/dist/ui/LogoutButton/types.js.map +1 -0
- package/dist/ui/LogoutButton/useLogoutButton.d.ts +13 -0
- package/dist/ui/LogoutButton/useLogoutButton.d.ts.map +1 -0
- package/dist/ui/LogoutButton/useLogoutButton.js +46 -0
- package/dist/ui/LogoutButton/useLogoutButton.js.map +1 -0
- package/dist/ui/LogoutConfirmSheet/LogoutConfirmSheet.d.ts +15 -0
- package/dist/ui/LogoutConfirmSheet/LogoutConfirmSheet.d.ts.map +1 -0
- package/dist/ui/LogoutConfirmSheet/LogoutConfirmSheet.js +68 -0
- package/dist/ui/LogoutConfirmSheet/LogoutConfirmSheet.js.map +1 -0
- package/dist/ui/LogoutConfirmSheet/index.d.ts +2 -0
- package/dist/ui/LogoutConfirmSheet/index.d.ts.map +1 -0
- package/dist/ui/LogoutConfirmSheet/index.js +2 -0
- package/dist/ui/LogoutConfirmSheet/index.js.map +1 -0
- package/dist/ui/NumberPad/NumberPad.d.ts +15 -0
- package/dist/ui/NumberPad/NumberPad.d.ts.map +1 -0
- package/dist/ui/NumberPad/NumberPad.js +142 -0
- package/dist/ui/NumberPad/NumberPad.js.map +1 -0
- package/dist/ui/NumberPad/index.d.ts +2 -0
- package/dist/ui/NumberPad/index.d.ts.map +1 -0
- package/dist/ui/NumberPad/index.js +2 -0
- package/dist/ui/NumberPad/index.js.map +1 -0
- package/dist/ui/PINConfirm/PINConfirm.d.ts +18 -0
- package/dist/ui/PINConfirm/PINConfirm.d.ts.map +1 -0
- package/dist/ui/PINConfirm/PINConfirm.js +148 -0
- package/dist/ui/PINConfirm/PINConfirm.js.map +1 -0
- package/dist/ui/PINConfirm/index.d.ts +2 -0
- package/dist/ui/PINConfirm/index.d.ts.map +1 -0
- package/dist/ui/PINConfirm/index.js +2 -0
- package/dist/ui/PINConfirm/index.js.map +1 -0
- package/dist/ui/PINIndicator/PINIndicator.d.ts +13 -0
- package/dist/ui/PINIndicator/PINIndicator.d.ts.map +1 -0
- package/dist/ui/PINIndicator/PINIndicator.js +52 -0
- package/dist/ui/PINIndicator/PINIndicator.js.map +1 -0
- package/dist/ui/PINIndicator/index.d.ts +2 -0
- package/dist/ui/PINIndicator/index.d.ts.map +1 -0
- package/dist/ui/PINIndicator/index.js +2 -0
- package/dist/ui/PINIndicator/index.js.map +1 -0
- package/dist/ui/PINSetup/PINSetup.d.ts +17 -0
- package/dist/ui/PINSetup/PINSetup.d.ts.map +1 -0
- package/dist/ui/PINSetup/PINSetup.js +117 -0
- package/dist/ui/PINSetup/PINSetup.js.map +1 -0
- package/dist/ui/PINSetup/index.d.ts +2 -0
- package/dist/ui/PINSetup/index.d.ts.map +1 -0
- package/dist/ui/PINSetup/index.js +2 -0
- package/dist/ui/PINSetup/index.js.map +1 -0
- package/dist/ui/PINSetup/stages/BiometryStage.d.ts +12 -0
- package/dist/ui/PINSetup/stages/BiometryStage.d.ts.map +1 -0
- package/dist/ui/PINSetup/stages/BiometryStage.js +76 -0
- package/dist/ui/PINSetup/stages/BiometryStage.js.map +1 -0
- package/dist/ui/PINSetup/stages/ConfirmStage.d.ts +13 -0
- package/dist/ui/PINSetup/stages/ConfirmStage.d.ts.map +1 -0
- package/dist/ui/PINSetup/stages/ConfirmStage.js +20 -0
- package/dist/ui/PINSetup/stages/ConfirmStage.js.map +1 -0
- package/dist/ui/PINSetup/stages/EnterStage.d.ts +13 -0
- package/dist/ui/PINSetup/stages/EnterStage.d.ts.map +1 -0
- package/dist/ui/PINSetup/stages/EnterStage.js +19 -0
- package/dist/ui/PINSetup/stages/EnterStage.js.map +1 -0
- package/dist/ui/PINSetup/stages/index.d.ts +4 -0
- package/dist/ui/PINSetup/stages/index.d.ts.map +1 -0
- package/dist/ui/PINSetup/stages/index.js +4 -0
- package/dist/ui/PINSetup/stages/index.js.map +1 -0
- package/dist/ui/PINSetup/styles.d.ts +39 -0
- package/dist/ui/PINSetup/styles.d.ts.map +1 -0
- package/dist/ui/PINSetup/styles.js +40 -0
- package/dist/ui/PINSetup/styles.js.map +1 -0
- package/dist/ui/WebViewLogin/WebViewLogin.d.ts +14 -0
- package/dist/ui/WebViewLogin/WebViewLogin.d.ts.map +1 -0
- package/dist/ui/WebViewLogin/WebViewLogin.js +125 -0
- package/dist/ui/WebViewLogin/WebViewLogin.js.map +1 -0
- package/dist/ui/WebViewLogin/index.d.ts +2 -0
- package/dist/ui/WebViewLogin/index.d.ts.map +1 -0
- package/dist/ui/WebViewLogin/index.js +2 -0
- package/dist/ui/WebViewLogin/index.js.map +1 -0
- package/dist/ui/WebViewLogout/WebViewLogout.d.ts +11 -0
- package/dist/ui/WebViewLogout/WebViewLogout.d.ts.map +1 -0
- package/dist/ui/WebViewLogout/WebViewLogout.js +96 -0
- package/dist/ui/WebViewLogout/WebViewLogout.js.map +1 -0
- package/dist/ui/WebViewLogout/index.d.ts +2 -0
- package/dist/ui/WebViewLogout/index.d.ts.map +1 -0
- package/dist/ui/WebViewLogout/index.js +2 -0
- package/dist/ui/WebViewLogout/index.js.map +1 -0
- package/dist/ui/icons/FaceIdIcon.d.ts +4 -0
- package/dist/ui/icons/FaceIdIcon.d.ts.map +1 -0
- package/dist/ui/icons/FaceIdIcon.js +7 -0
- package/dist/ui/icons/FaceIdIcon.js.map +1 -0
- package/dist/ui/icons/FingerprintIcon.d.ts +4 -0
- package/dist/ui/icons/FingerprintIcon.d.ts.map +1 -0
- package/dist/ui/icons/FingerprintIcon.js +10 -0
- package/dist/ui/icons/FingerprintIcon.js.map +1 -0
- package/dist/ui/icons/index.d.ts +3 -0
- package/dist/ui/icons/index.d.ts.map +1 -0
- package/dist/ui/icons/index.js +3 -0
- package/dist/ui/icons/index.js.map +1 -0
- package/dist/ui/index.d.ts +11 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +11 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/widgets/ReauthBottomSheet/ReauthBottomSheet.d.ts +17 -0
- package/dist/widgets/ReauthBottomSheet/ReauthBottomSheet.d.ts.map +1 -0
- package/dist/widgets/ReauthBottomSheet/ReauthBottomSheet.js +48 -0
- package/dist/widgets/ReauthBottomSheet/ReauthBottomSheet.js.map +1 -0
- package/dist/widgets/ReauthBottomSheet/index.d.ts +2 -0
- package/dist/widgets/ReauthBottomSheet/index.d.ts.map +1 -0
- package/dist/widgets/ReauthBottomSheet/index.js +2 -0
- package/dist/widgets/ReauthBottomSheet/index.js.map +1 -0
- package/dist/widgets/index.d.ts +2 -0
- package/dist/widgets/index.d.ts.map +1 -0
- package/dist/widgets/index.js +2 -0
- package/dist/widgets/index.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React, { createContext, useCallback, useContext, useMemo, useState, } from 'react';
|
|
2
|
+
const ReauthContext = createContext(null);
|
|
3
|
+
export const ReauthProvider = React.memo(({ children }) => {
|
|
4
|
+
const [isReauthRequired, setIsReauthRequired] = useState(false);
|
|
5
|
+
const showReauth = useCallback(() => {
|
|
6
|
+
setIsReauthRequired(true);
|
|
7
|
+
}, []);
|
|
8
|
+
const hideReauth = useCallback(() => {
|
|
9
|
+
setIsReauthRequired(false);
|
|
10
|
+
}, []);
|
|
11
|
+
const value = useMemo(() => ({
|
|
12
|
+
isReauthRequired,
|
|
13
|
+
showReauth,
|
|
14
|
+
hideReauth,
|
|
15
|
+
}), [isReauthRequired, showReauth, hideReauth]);
|
|
16
|
+
return <ReauthContext.Provider value={value}>{children}</ReauthContext.Provider>;
|
|
17
|
+
});
|
|
18
|
+
ReauthProvider.displayName = 'ReauthProvider';
|
|
19
|
+
export const useReauth = () => {
|
|
20
|
+
const context = useContext(ReauthContext);
|
|
21
|
+
if (!context) {
|
|
22
|
+
throw new Error('useReauth must be used within ReauthProvider');
|
|
23
|
+
}
|
|
24
|
+
return context;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=ReauthContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReauthContext.js","sourceRoot":"","sources":["../../src/context/ReauthContext.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EACZ,aAAa,EAEb,WAAW,EACX,UAAU,EACV,OAAO,EACP,QAAQ,GACT,MAAM,OAAO,CAAC;AAQf,MAAM,aAAa,GAAG,aAAa,CAA4B,IAAI,CAAC,CAAC;AAMrE,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAsB,CAAC,EAAC,QAAQ,EAAC,EAAE,EAAE;IAC3E,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhE,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,EAAE,EAAE,CAAC,CAAC;IAGP,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,gBAAgB;QAChB,UAAU;QACV,UAAU;KACX,CAAC,EACF,CAAC,gBAAgB,EAAE,UAAU,EAAE,UAAU,CAAC,CAC3C,CAAC;IAEF,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnF,CAAC,CAAC,CAAC;AAEH,cAAc,CAAC,WAAW,GAAG,gBAAgB,CAAC;AAM9C,MAAM,CAAC,MAAM,SAAS,GAAG,GAAuB,EAAE;IAChD,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import type { KeycloakTokens } from '../core/types';
|
|
3
|
+
interface TokenContextValue {
|
|
4
|
+
token: string | null;
|
|
5
|
+
refreshToken: string | null;
|
|
6
|
+
idToken: string | null;
|
|
7
|
+
isExpired: boolean;
|
|
8
|
+
updateToken: (minValidity?: number) => Promise<string>;
|
|
9
|
+
clearTokens: () => Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export interface TokenProviderProps {
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
onTokens?: (tokens: KeycloakTokens) => void;
|
|
14
|
+
}
|
|
15
|
+
export declare const TokenProvider: React.NamedExoticComponent<TokenProviderProps>;
|
|
16
|
+
export declare const useToken: () => TokenContextValue;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=TokenContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenContext.d.ts","sourceRoot":"","sources":["../../src/context/TokenContext.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,EAEZ,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAIlD,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;AAID,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;IAEpB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;CAC7C;AAED,eAAO,MAAM,aAAa,gDA8IxB,CAAC;AASH,eAAO,MAAM,QAAQ,QAAO,iBAQ3B,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import React, { createContext, useCallback, useContext, useEffect, useMemo, useState, } from 'react';
|
|
2
|
+
import { tokenStorage } from '../storage';
|
|
3
|
+
import { useKeycloakInstance } from './KeycloakInstanceContext';
|
|
4
|
+
const TokenContext = createContext(null);
|
|
5
|
+
export const TokenProvider = React.memo(({ children, onTokens }) => {
|
|
6
|
+
const { keycloak, isInitialized } = useKeycloakInstance();
|
|
7
|
+
const [token, setToken] = useState(null);
|
|
8
|
+
const [refreshToken, setRefreshToken] = useState(null);
|
|
9
|
+
const [idToken, setIdToken] = useState(null);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
onTokens?.({ token, refreshToken, idToken });
|
|
12
|
+
}, [token, refreshToken, idToken, onTokens]);
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
if (!isInitialized || !keycloak)
|
|
15
|
+
return;
|
|
16
|
+
const loadTokens = async () => {
|
|
17
|
+
try {
|
|
18
|
+
const tokens = await tokenStorage.getTokens();
|
|
19
|
+
setToken(tokens.token ?? null);
|
|
20
|
+
setRefreshToken(tokens.refreshToken ?? null);
|
|
21
|
+
setIdToken(tokens.idToken ?? null);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
console.error('[TokenContext] Load tokens error:', error);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
loadTokens();
|
|
28
|
+
}, [isInitialized, keycloak]);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
if (!keycloak || !isInitialized)
|
|
31
|
+
return;
|
|
32
|
+
const currentToken = keycloak.token;
|
|
33
|
+
const currentRefreshToken = keycloak.refreshToken;
|
|
34
|
+
const currentIdToken = keycloak.idToken;
|
|
35
|
+
if (currentToken !== token) {
|
|
36
|
+
setToken(currentToken || null);
|
|
37
|
+
if (currentToken) {
|
|
38
|
+
tokenStorage.saveToken(currentToken).catch(console.error);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (currentRefreshToken !== refreshToken) {
|
|
42
|
+
setRefreshToken(currentRefreshToken || null);
|
|
43
|
+
if (currentRefreshToken) {
|
|
44
|
+
tokenStorage.saveRefreshToken(currentRefreshToken).catch(console.error);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (currentIdToken !== idToken) {
|
|
48
|
+
setIdToken(currentIdToken || null);
|
|
49
|
+
if (currentIdToken) {
|
|
50
|
+
tokenStorage.saveIdToken(currentIdToken).catch(console.error);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}, [keycloak?.token, keycloak?.refreshToken, keycloak?.idToken]);
|
|
54
|
+
const updateToken = useCallback(async (minValidity = 120) => {
|
|
55
|
+
if (!keycloak || !isInitialized) {
|
|
56
|
+
throw new Error('[TokenContext] Keycloak not initialized');
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
const updated = await keycloak.updateToken(minValidity);
|
|
60
|
+
if (updated && keycloak.token) {
|
|
61
|
+
setToken(keycloak.token);
|
|
62
|
+
setRefreshToken(keycloak.refreshToken ?? null);
|
|
63
|
+
setIdToken(keycloak.idToken ?? null);
|
|
64
|
+
await tokenStorage.saveTokens({
|
|
65
|
+
token: keycloak.token,
|
|
66
|
+
refreshToken: keycloak.refreshToken ?? undefined,
|
|
67
|
+
idToken: keycloak.idToken ?? undefined,
|
|
68
|
+
});
|
|
69
|
+
return keycloak.token;
|
|
70
|
+
}
|
|
71
|
+
return token || '';
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
console.error('[TokenContext] Update token error:', error);
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
}, [keycloak, isInitialized, token]);
|
|
78
|
+
const clearTokens = useCallback(async () => {
|
|
79
|
+
setToken(null);
|
|
80
|
+
setRefreshToken(null);
|
|
81
|
+
setIdToken(null);
|
|
82
|
+
await tokenStorage.clearTokens();
|
|
83
|
+
if (keycloak) {
|
|
84
|
+
keycloak.clearToken();
|
|
85
|
+
}
|
|
86
|
+
}, [keycloak]);
|
|
87
|
+
const isExpired = useMemo(() => {
|
|
88
|
+
if (!keycloak || !token)
|
|
89
|
+
return true;
|
|
90
|
+
if (!keycloak.token || !keycloak.tokenParsed)
|
|
91
|
+
return true;
|
|
92
|
+
try {
|
|
93
|
+
return keycloak.isTokenExpired();
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
}, [keycloak, token]);
|
|
99
|
+
const value = useMemo(() => ({
|
|
100
|
+
token,
|
|
101
|
+
refreshToken,
|
|
102
|
+
idToken,
|
|
103
|
+
isExpired,
|
|
104
|
+
updateToken,
|
|
105
|
+
clearTokens,
|
|
106
|
+
}), [token, refreshToken, idToken, isExpired, updateToken, clearTokens]);
|
|
107
|
+
return <TokenContext.Provider value={value}>{children}</TokenContext.Provider>;
|
|
108
|
+
});
|
|
109
|
+
TokenProvider.displayName = 'TokenProvider';
|
|
110
|
+
export const useToken = () => {
|
|
111
|
+
const context = useContext(TokenContext);
|
|
112
|
+
if (!context) {
|
|
113
|
+
throw new Error('useToken must be used within TokenProvider');
|
|
114
|
+
}
|
|
115
|
+
return context;
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=TokenContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenContext.js","sourceRoot":"","sources":["../../src/context/TokenContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { KeycloakProvider } from './KeycloakProvider';
|
|
2
|
+
export type { KeycloakProviderProps } from './KeycloakProvider';
|
|
3
|
+
export type { KeycloakTokens } from '../core/types';
|
|
4
|
+
export { KeycloakConfigProvider, useKeycloakConfig, useKeycloakConfigRefresh, } from './KeycloakConfigContext';
|
|
5
|
+
export type { KeycloakConfigProviderProps } from './KeycloakConfigContext';
|
|
6
|
+
export { KeycloakInstanceProvider, useKeycloakInstance } from './KeycloakInstanceContext';
|
|
7
|
+
export type { KeycloakInstanceProviderProps } from './KeycloakInstanceContext';
|
|
8
|
+
export { TokenProvider, useToken } from './TokenContext';
|
|
9
|
+
export type { TokenProviderProps } from './TokenContext';
|
|
10
|
+
export { ReauthProvider, useReauth } from './ReauthContext';
|
|
11
|
+
export type { ReauthProviderProps } from './ReauthContext';
|
|
12
|
+
export { KeycloakThemeProvider, useKeycloakTheme, defaultKeycloakTheme, } from './KeycloakThemeContext';
|
|
13
|
+
export type { KeycloakTheme, KeycloakThemeButtonComponent, KeycloakThemeButtonProps, KeycloakThemeContextValue, KeycloakThemeFonts, KeycloakThemeColors, KeycloakThemeIconButtonComponent, KeycloakThemeIconButtonProps, KeycloakThemeLoaderComponent, KeycloakThemeProviderProps, ResolvedKeycloakThemeColors, } from './KeycloakThemeContext';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAC,qBAAqB,EAAC,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAElD,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAC,2BAA2B,EAAC,MAAM,yBAAyB,CAAC;AAEzE,OAAO,EAAC,wBAAwB,EAAE,mBAAmB,EAAC,MAAM,2BAA2B,CAAC;AACxF,YAAY,EAAC,6BAA6B,EAAC,MAAM,2BAA2B,CAAC;AAE7E,OAAO,EAAC,aAAa,EAAE,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACvD,YAAY,EAAC,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAC,cAAc,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAC,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,aAAa,EACb,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,gCAAgC,EAChC,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { KeycloakProvider } from './KeycloakProvider';
|
|
2
|
+
export { KeycloakConfigProvider, useKeycloakConfig, useKeycloakConfigRefresh, } from './KeycloakConfigContext';
|
|
3
|
+
export { KeycloakInstanceProvider, useKeycloakInstance } from './KeycloakInstanceContext';
|
|
4
|
+
export { TokenProvider, useToken } from './TokenContext';
|
|
5
|
+
export { ReauthProvider, useReauth } from './ReauthContext';
|
|
6
|
+
export { KeycloakThemeProvider, useKeycloakTheme, defaultKeycloakTheme, } from './KeycloakThemeContext';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AAIpD,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAC,wBAAwB,EAAE,mBAAmB,EAAC,MAAM,2BAA2B,CAAC;AAGxF,OAAO,EAAC,aAAa,EAAE,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAGvD,OAAO,EAAC,cAAc,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAG1D,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { CallbackStorage, FetchTokenResponse, KeycloakAdapter, KeycloakConfig, KeycloakInstance, KeycloakJSON, KeycloakLoginOptions, KeycloakProfile, KeycloakRegisterOptions, OIDCProviderConfig } from '@react-keycloak/keycloak-ts';
|
|
2
|
+
import type { RNKeycloakInitOptions } from './types';
|
|
3
|
+
declare class RNAdapter implements KeycloakAdapter {
|
|
4
|
+
private readonly client;
|
|
5
|
+
constructor(client: Readonly<KeycloakInstance>, _keycloakConfig: Readonly<KeycloakConfig>, _initOptions: Readonly<RNKeycloakInitOptions>);
|
|
6
|
+
createCallbackStorage(): CallbackStorage;
|
|
7
|
+
createLoginUrl(options: KeycloakLoginOptions): string;
|
|
8
|
+
login(res?: KeycloakLoginOptions): Promise<void>;
|
|
9
|
+
logout(): Promise<void>;
|
|
10
|
+
register(_options?: KeycloakRegisterOptions): Promise<void>;
|
|
11
|
+
accountManagement(): Promise<void>;
|
|
12
|
+
fetchKeycloakConfigJSON(configUrl: string): Promise<KeycloakJSON>;
|
|
13
|
+
fetchOIDCProviderConfigJSON(oidcProviderConfigUrl: string): Promise<OIDCProviderConfig>;
|
|
14
|
+
fetchTokens(tokenUrl: string, params: string): Promise<FetchTokenResponse>;
|
|
15
|
+
refreshTokens(tokenUrl: string, params: string): Promise<FetchTokenResponse>;
|
|
16
|
+
fetchUserProfile(profileUrl: string, token: string): Promise<KeycloakProfile>;
|
|
17
|
+
fetchUserInfo(userInfoUrl: string, token: string): Promise<unknown>;
|
|
18
|
+
redirectUri(options?: {
|
|
19
|
+
redirectUri?: string;
|
|
20
|
+
}, _encodeHash?: boolean): string;
|
|
21
|
+
}
|
|
22
|
+
export default RNAdapter;
|
|
23
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/core/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,SAAS,CAAC;AAGnD,cAAM,SAAU,YAAW,eAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;gBAGlD,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC,EACzC,YAAY,EAAE,QAAQ,CAAC,qBAAqB,CAAC;IAK/C,qBAAqB,IAAI,eAAe;IAIxC,cAAc,CAAC,OAAO,EAAE,oBAAoB;IAItC,KAAK,CAAC,GAAG,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAKvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IASlC,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAIjE,2BAA2B,CAAC,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIvF,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAY1E,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAY5E,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAI7E,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIzE,WAAW,CAAC,OAAO,CAAC,EAAE;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAC,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM;CAW7E;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import LocalStorage from './storage';
|
|
2
|
+
import { fetchJSON } from './utils';
|
|
3
|
+
class RNAdapter {
|
|
4
|
+
constructor(client, _keycloakConfig, _initOptions) {
|
|
5
|
+
this.client = client;
|
|
6
|
+
}
|
|
7
|
+
createCallbackStorage() {
|
|
8
|
+
return new LocalStorage();
|
|
9
|
+
}
|
|
10
|
+
createLoginUrl(options) {
|
|
11
|
+
return this.client.createLoginUrl(options);
|
|
12
|
+
}
|
|
13
|
+
async login(res) {
|
|
14
|
+
if (!res?.url) {
|
|
15
|
+
throw new Error('No URL provided for login');
|
|
16
|
+
}
|
|
17
|
+
const oauth = this.client.parseCallback(res.url);
|
|
18
|
+
return this.client.processCallback(oauth);
|
|
19
|
+
}
|
|
20
|
+
async logout() {
|
|
21
|
+
}
|
|
22
|
+
async register(_options) {
|
|
23
|
+
}
|
|
24
|
+
async accountManagement() {
|
|
25
|
+
const accountUrl = this.client.createAccountUrl();
|
|
26
|
+
if (typeof accountUrl !== 'undefined') {
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
throw new Error('Not supported by the OIDC server');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async fetchKeycloakConfigJSON(configUrl) {
|
|
33
|
+
return await fetchJSON(configUrl);
|
|
34
|
+
}
|
|
35
|
+
async fetchOIDCProviderConfigJSON(oidcProviderConfigUrl) {
|
|
36
|
+
return await fetchJSON(oidcProviderConfigUrl);
|
|
37
|
+
}
|
|
38
|
+
async fetchTokens(tokenUrl, params) {
|
|
39
|
+
const tokenRes = await fetch(tokenUrl, {
|
|
40
|
+
method: 'POST',
|
|
41
|
+
headers: {
|
|
42
|
+
'Content-type': 'application/x-www-form-urlencoded',
|
|
43
|
+
},
|
|
44
|
+
body: params,
|
|
45
|
+
});
|
|
46
|
+
return (await tokenRes.json());
|
|
47
|
+
}
|
|
48
|
+
async refreshTokens(tokenUrl, params) {
|
|
49
|
+
const tokenRes = await fetch(tokenUrl, {
|
|
50
|
+
method: 'POST',
|
|
51
|
+
headers: {
|
|
52
|
+
'Content-type': 'application/x-www-form-urlencoded',
|
|
53
|
+
},
|
|
54
|
+
body: params,
|
|
55
|
+
});
|
|
56
|
+
return (await tokenRes.json());
|
|
57
|
+
}
|
|
58
|
+
async fetchUserProfile(profileUrl, token) {
|
|
59
|
+
return await fetchJSON(profileUrl, token);
|
|
60
|
+
}
|
|
61
|
+
async fetchUserInfo(userInfoUrl, token) {
|
|
62
|
+
return await fetchJSON(userInfoUrl, token);
|
|
63
|
+
}
|
|
64
|
+
redirectUri(options, _encodeHash) {
|
|
65
|
+
if (options && options.redirectUri) {
|
|
66
|
+
return options.redirectUri;
|
|
67
|
+
}
|
|
68
|
+
if (this.client.redirectUri) {
|
|
69
|
+
return this.client.redirectUri;
|
|
70
|
+
}
|
|
71
|
+
return '';
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export default RNAdapter;
|
|
75
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/core/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { KeycloakClient } from '@react-keycloak/keycloak-ts';
|
|
2
|
+
import type { RNKeycloakInitOptions } from './types';
|
|
3
|
+
declare class KeycloakReactNativeClient extends KeycloakClient {
|
|
4
|
+
init(initOptions: RNKeycloakInitOptions): Promise<boolean>;
|
|
5
|
+
}
|
|
6
|
+
export default KeycloakReactNativeClient;
|
|
7
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAG3D,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,SAAS,CAAC;AAMnD,cAAM,yBAA0B,SAAQ,cAAc;IACvC,IAAI,CAAC,WAAW,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC;CAMxE;AAED,eAAe,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { KeycloakClient } from '@react-keycloak/keycloak-ts';
|
|
2
|
+
import RNAdapter from './adapter';
|
|
3
|
+
class KeycloakReactNativeClient extends KeycloakClient {
|
|
4
|
+
async init(initOptions) {
|
|
5
|
+
return super.init({
|
|
6
|
+
...initOptions,
|
|
7
|
+
adapter: RNAdapter,
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export default KeycloakReactNativeClient;
|
|
12
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAE3D,OAAO,SAAS,MAAM,WAAW,CAAC;AAOlC,MAAM,yBAA0B,SAAQ,cAAc;IAC7C,KAAK,CAAC,IAAI,CAAC,WAAkC;QAClD,OAAO,KAAK,CAAC,IAAI,CAAC;YAChB,GAAG,WAAW;YACd,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;IACL,CAAC;CACF;AAED,eAAe,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import KeycloakReactNativeClient from './client';
|
|
2
|
+
export { KeycloakReactNativeClient };
|
|
3
|
+
export { LocalStorage } from './storage';
|
|
4
|
+
export type { KeycloakConfig, KeycloakConfigWith2FA, RNKeycloakInitOptions, KeycloakLoginOptions, TokenUpdateResult, KeycloakProfile, AuthState, } from './types';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,MAAM,UAAU,CAAC;AAMjD,OAAO,EAAC,yBAAyB,EAAC,CAAC;AACnC,OAAO,EAAC,YAAY,EAAC,MAAM,WAAW,CAAC;AACvC,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,SAAS,GACV,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,MAAM,UAAU,CAAC;AAMjD,OAAO,EAAC,yBAAyB,EAAC,CAAC;AACnC,OAAO,EAAC,YAAY,EAAC,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CallbackState, CallbackStorage } from '@react-keycloak/keycloak-ts';
|
|
2
|
+
declare class LocalStorage implements CallbackStorage {
|
|
3
|
+
private storage;
|
|
4
|
+
get(state?: string): CallbackState | undefined;
|
|
5
|
+
add(state: CallbackState): void;
|
|
6
|
+
private clearExpired;
|
|
7
|
+
}
|
|
8
|
+
export default LocalStorage;
|
|
9
|
+
export { LocalStorage };
|
|
10
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/core/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAE,eAAe,EAAC,MAAM,6BAA6B,CAAC;AAEhF,cAAM,YAAa,YAAW,eAAe;IAC3C,OAAO,CAAC,OAAO,CAAoC;IAEnD,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAe9C,GAAG,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAU/B,OAAO,CAAC,YAAY;CAYrB;AAED,eAAe,YAAY,CAAC;AAC5B,OAAO,EAAC,YAAY,EAAC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
class LocalStorage {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.storage = new Map();
|
|
4
|
+
}
|
|
5
|
+
get(state) {
|
|
6
|
+
if (!state) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
const key = `kc-callback-${state}`;
|
|
10
|
+
let value;
|
|
11
|
+
if (this.storage.has(key)) {
|
|
12
|
+
value = this.storage.get(key);
|
|
13
|
+
}
|
|
14
|
+
this.clearExpired();
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
add(state) {
|
|
18
|
+
this.clearExpired();
|
|
19
|
+
const key = `kc-callback-${state.state}`;
|
|
20
|
+
this.storage.set(key, {
|
|
21
|
+
...state,
|
|
22
|
+
expires: new Date().getTime() + 60 * 60 * 1000,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
clearExpired() {
|
|
26
|
+
const time = new Date().getTime();
|
|
27
|
+
Array.from(this.storage.entries())
|
|
28
|
+
.filter(([key, state]) => key.startsWith('kc-callback-') && (!state.expires || state.expires < time))
|
|
29
|
+
.map(([key]) => key)
|
|
30
|
+
.forEach(keyToRemove => {
|
|
31
|
+
this.storage.delete(keyToRemove);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export default LocalStorage;
|
|
36
|
+
export { LocalStorage };
|
|
37
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/core/storage.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY;IAAlB;QACU,YAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IAuCrD,CAAC;IArCC,GAAG,CAAC,KAAc;QAChB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,eAAe,KAAK,EAAE,CAAC;QACnC,IAAI,KAAgC,CAAC;QACrC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,GAAG,CAAC,KAAoB;QACtB,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,MAAM,GAAG,GAAG,eAAe,KAAK,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;YACpB,GAAG,KAAK;YACR,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;SAC/C,CAAC,CAAC;IACL,CAAC;IAEO,YAAY;QAClB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAElC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;aAC/B,MAAM,CACL,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAC7F;aACA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;aACnB,OAAO,CAAC,WAAW,CAAC,EAAE;YACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC;CACF;AAED,eAAe,YAAY,CAAC;AAC5B,OAAO,EAAC,YAAY,EAAC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { KeycloakConfig, KeycloakInitOptions, KeycloakLoginOptions, KeycloakProfile } from '@react-keycloak/keycloak-ts';
|
|
2
|
+
export type { KeycloakConfig, KeycloakLoginOptions, KeycloakProfile };
|
|
3
|
+
export interface KeycloakConfigWith2FA extends KeycloakConfig {
|
|
4
|
+
clientId2fa?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface RNKeycloakInitOptions extends KeycloakInitOptions {
|
|
7
|
+
redirectUri?: string;
|
|
8
|
+
onAuthError?: (errorData: {
|
|
9
|
+
error: unknown;
|
|
10
|
+
error_description?: string;
|
|
11
|
+
}) => void;
|
|
12
|
+
onReady?: (authenticated?: boolean) => void;
|
|
13
|
+
}
|
|
14
|
+
export interface TokenUpdateResult {
|
|
15
|
+
token: string;
|
|
16
|
+
refreshToken?: string;
|
|
17
|
+
idToken?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface KeycloakTokens {
|
|
20
|
+
token: string | null;
|
|
21
|
+
refreshToken: string | null;
|
|
22
|
+
idToken: string | null;
|
|
23
|
+
}
|
|
24
|
+
export interface AuthState {
|
|
25
|
+
isAuthenticated: boolean;
|
|
26
|
+
token: string | null;
|
|
27
|
+
refreshToken: string | null;
|
|
28
|
+
idToken: string | null;
|
|
29
|
+
profile: KeycloakProfile | null;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EAChB,MAAM,6BAA6B,CAAC;AAErC,YAAY,EAAC,cAAc,EAAE,oBAAoB,EAAE,eAAe,EAAC,CAAC;AAQpE,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAE3D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAKD,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB;IAEhE,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAC,KAAK,IAAI,CAAC;IAEhF,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C;AAKD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAKD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAKD,MAAM,WAAW,SAAS;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"AAAA,wBAAsB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAS1E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,GAAW,EAAE,KAAc;IAC5D,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC/B,OAAO,EAAE;YACP,MAAM,EAAE,kBAAkB;YAC1B,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;SAC9C;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAM,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { useKeycloakAuth } from './useKeycloakAuth';
|
|
2
|
+
export type { UseKeycloakAuthResult } from './useKeycloakAuth';
|
|
3
|
+
export { useKeycloakAuthScreen } from './useKeycloakAuthScreen';
|
|
4
|
+
export type { KeycloakAuthScreen, UseKeycloakAuthScreenOptions, UseKeycloakAuthScreenResult, } from './useKeycloakAuthScreen';
|
|
5
|
+
export { useKeycloakConfig } from '../context/KeycloakConfigContext';
|
|
6
|
+
export { useKeycloakInstance } from '../context/KeycloakInstanceContext';
|
|
7
|
+
export { useToken } from '../context/TokenContext';
|
|
8
|
+
export { useReauth } from '../context/ReauthContext';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAC,qBAAqB,EAAC,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EACV,kBAAkB,EAClB,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAC,iBAAiB,EAAC,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAC,mBAAmB,EAAC,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { useKeycloakAuth } from './useKeycloakAuth';
|
|
2
|
+
export { useKeycloakAuthScreen } from './useKeycloakAuthScreen';
|
|
3
|
+
export { useKeycloakConfig } from '../context/KeycloakConfigContext';
|
|
4
|
+
export { useKeycloakInstance } from '../context/KeycloakInstanceContext';
|
|
5
|
+
export { useToken } from '../context/TokenContext';
|
|
6
|
+
export { useReauth } from '../context/ReauthContext';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AAQ9D,OAAO,EAAC,iBAAiB,EAAC,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAC,mBAAmB,EAAC,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { useKeycloakInstance } from '../context';
|
|
2
|
+
import type { KeycloakLoginOptions, KeycloakProfile } from '../core';
|
|
3
|
+
export interface UseKeycloakAuthResult {
|
|
4
|
+
keycloak: ReturnType<typeof useKeycloakInstance>['keycloak'];
|
|
5
|
+
isInitialized: boolean;
|
|
6
|
+
isLoading: boolean;
|
|
7
|
+
error: Error | null;
|
|
8
|
+
token: string | null;
|
|
9
|
+
isExpired: boolean;
|
|
10
|
+
isAuthenticated: boolean;
|
|
11
|
+
updateToken: (minValidity?: number) => Promise<string>;
|
|
12
|
+
login: (options: KeycloakLoginOptions) => Promise<void>;
|
|
13
|
+
logout: () => Promise<void>;
|
|
14
|
+
loadUserProfile: () => Promise<KeycloakProfile>;
|
|
15
|
+
createLoginUrl: (options?: KeycloakLoginOptions) => string;
|
|
16
|
+
createLogoutUrl: (redirectUri?: string) => string;
|
|
17
|
+
clearTokens: () => Promise<void>;
|
|
18
|
+
isReauthRequired: boolean;
|
|
19
|
+
showReauth: () => void;
|
|
20
|
+
hideReauth: () => void;
|
|
21
|
+
}
|
|
22
|
+
export declare const useKeycloakAuth: () => UseKeycloakAuthResult;
|
|
23
|
+
//# sourceMappingURL=useKeycloakAuth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useKeycloakAuth.d.ts","sourceRoot":"","sources":["../../src/hooks/useKeycloakAuth.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,mBAAmB,EAAsB,MAAM,YAAY,CAAC;AACpE,OAAO,KAAK,EAAC,oBAAoB,EAAE,eAAe,EAAC,MAAM,SAAS,CAAC;AAGnE,MAAM,WAAW,qBAAqB;IAEpC,QAAQ,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,UAAU,CAAC,CAAC;IAE7D,aAAa,EAAE,OAAO,CAAC;IAEvB,SAAS,EAAE,OAAO,CAAC;IAEnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,SAAS,EAAE,OAAO,CAAC;IAEnB,eAAe,EAAE,OAAO,CAAC;IAEzB,WAAW,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvD,KAAK,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,eAAe,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;IAEhD,cAAc,EAAE,CAAC,OAAO,CAAC,EAAE,oBAAoB,KAAK,MAAM,CAAC;IAE3D,eAAe,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAElD,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjC,gBAAgB,EAAE,OAAO,CAAC;IAE1B,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAMD,eAAO,MAAM,eAAe,QAAO,qBAwElC,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
import { useKeycloakInstance, useReauth, useToken } from '../context';
|
|
3
|
+
import { tokenStorage } from '../storage';
|
|
4
|
+
export const useKeycloakAuth = () => {
|
|
5
|
+
const { keycloak, isInitialized, isLoading, error, redirectUri } = useKeycloakInstance();
|
|
6
|
+
const { token, isExpired, updateToken, clearTokens } = useToken();
|
|
7
|
+
const { isReauthRequired, showReauth, hideReauth } = useReauth();
|
|
8
|
+
const login = useCallback(async (options) => {
|
|
9
|
+
if (!keycloak) {
|
|
10
|
+
throw new Error('[useKeycloakAuth] Keycloak not initialized');
|
|
11
|
+
}
|
|
12
|
+
await keycloak.login({ ...options, redirectUri });
|
|
13
|
+
if (keycloak.token) {
|
|
14
|
+
await tokenStorage.saveTokens({
|
|
15
|
+
token: keycloak.token,
|
|
16
|
+
refreshToken: keycloak.refreshToken ?? undefined,
|
|
17
|
+
idToken: keycloak.idToken ?? undefined,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}, [keycloak, redirectUri]);
|
|
21
|
+
const logout = useCallback(async () => {
|
|
22
|
+
if (!keycloak) {
|
|
23
|
+
throw new Error('[useKeycloakAuth] Keycloak not initialized');
|
|
24
|
+
}
|
|
25
|
+
await keycloak.logout();
|
|
26
|
+
await clearTokens();
|
|
27
|
+
}, [keycloak, clearTokens]);
|
|
28
|
+
const loadUserProfile = useCallback(async () => {
|
|
29
|
+
if (!keycloak) {
|
|
30
|
+
throw new Error('[useKeycloakAuth] Keycloak not initialized');
|
|
31
|
+
}
|
|
32
|
+
return await keycloak.loadUserProfile();
|
|
33
|
+
}, [keycloak]);
|
|
34
|
+
const createLoginUrl = useCallback(() => {
|
|
35
|
+
if (!keycloak) {
|
|
36
|
+
throw new Error('[useKeycloakAuth] Keycloak not initialized');
|
|
37
|
+
}
|
|
38
|
+
return keycloak.createLoginUrl({ redirectUri });
|
|
39
|
+
}, [keycloak, redirectUri]);
|
|
40
|
+
const createLogoutUrl = useCallback(() => {
|
|
41
|
+
if (!keycloak) {
|
|
42
|
+
throw new Error('[useKeycloakAuth] Keycloak not initialized');
|
|
43
|
+
}
|
|
44
|
+
return keycloak.createLogoutUrl({ redirectUri });
|
|
45
|
+
}, [keycloak, redirectUri]);
|
|
46
|
+
const isAuthenticated = Boolean(keycloak?.authenticated && token && !isExpired);
|
|
47
|
+
return {
|
|
48
|
+
keycloak,
|
|
49
|
+
isInitialized,
|
|
50
|
+
isLoading,
|
|
51
|
+
error,
|
|
52
|
+
token,
|
|
53
|
+
isExpired,
|
|
54
|
+
isAuthenticated,
|
|
55
|
+
updateToken,
|
|
56
|
+
login,
|
|
57
|
+
logout,
|
|
58
|
+
loadUserProfile,
|
|
59
|
+
createLoginUrl,
|
|
60
|
+
createLogoutUrl,
|
|
61
|
+
clearTokens,
|
|
62
|
+
isReauthRequired,
|
|
63
|
+
showReauth,
|
|
64
|
+
hideReauth,
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=useKeycloakAuth.js.map
|