@multiplatform.one/keycloak 2.0.3 → 2.0.9
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/cjs/Authenticated.cjs +83 -0
- package/dist/cjs/Authenticated.cjs.map +6 -0
- package/dist/cjs/Authenticated.native.js +1 -1
- package/dist/cjs/Authenticated.native.js.map +2 -2
- package/dist/cjs/Loading.cjs +39 -0
- package/dist/cjs/Loading.native.js +1 -0
- package/dist/cjs/Loading.native.js.map +2 -2
- package/dist/cjs/authConfig.cjs +29 -0
- package/dist/cjs/authConfig.cjs.map +6 -0
- package/dist/cjs/authConfig.native.js +1 -1
- package/dist/cjs/authConfig.native.js.map +2 -2
- package/dist/cjs/hooks/index.cjs +20 -0
- package/dist/cjs/hooks/index.native.js +1 -0
- package/dist/cjs/hooks/index.native.js.map +2 -2
- package/dist/cjs/hooks/useAuthConfig.cjs +30 -0
- package/dist/cjs/hooks/useAuthConfig.native.js +1 -0
- package/dist/cjs/hooks/useAuthConfig.native.js.map +2 -2
- package/dist/cjs/hooks/useTokensFromQuery/index.cjs +29 -0
- package/dist/cjs/hooks/useTokensFromQuery/index.cjs.map +6 -0
- package/dist/cjs/hooks/useTokensFromQuery/index.native.cjs +26 -0
- package/dist/cjs/hooks/useTokensFromQuery/index.native.cjs.map +6 -0
- package/dist/cjs/hooks/useTokensFromQuery/index.native.js +1 -0
- package/dist/cjs/hooks/useTokensFromQuery/index.native.js.map +2 -2
- package/dist/cjs/hooks/useTokensFromState.cjs +31 -0
- package/dist/cjs/hooks/useTokensFromState.native.js +1 -0
- package/dist/cjs/hooks/useTokensFromState.native.js.map +2 -2
- package/dist/cjs/index.cjs +24 -0
- package/dist/cjs/index.native.js +1 -0
- package/dist/cjs/index.native.js.map +2 -2
- package/dist/cjs/keycloak/config.cjs +31 -0
- package/dist/cjs/keycloak/config.cjs.map +6 -0
- package/dist/cjs/keycloak/config.native.js +1 -1
- package/dist/cjs/keycloak/config.native.js.map +2 -2
- package/dist/cjs/keycloak/context.cjs +27 -0
- package/dist/cjs/keycloak/context.cjs.map +6 -0
- package/dist/cjs/keycloak/context.native.js +1 -1
- package/dist/cjs/keycloak/context.native.js.map +2 -2
- package/dist/cjs/keycloak/index.cjs +19 -0
- package/dist/cjs/keycloak/index.native.js +1 -0
- package/dist/cjs/keycloak/index.native.js.map +2 -2
- package/dist/cjs/keycloak/keycloak.cjs +187 -0
- package/dist/cjs/keycloak/keycloak.cjs.map +6 -0
- package/dist/cjs/keycloak/keycloak.native.cjs +109 -0
- package/dist/cjs/keycloak/keycloak.native.cjs.map +6 -0
- package/dist/cjs/keycloak/keycloak.native.js +1 -0
- package/dist/cjs/keycloak/keycloak.native.js.map +2 -2
- package/dist/cjs/one.cjs +122 -0
- package/dist/cjs/one.cjs.map +6 -0
- package/dist/cjs/one.native.js +126 -0
- package/dist/cjs/one.native.js.map +6 -0
- package/dist/cjs/provider/AfterAuth.cjs +55 -0
- package/dist/cjs/provider/AfterAuth.cjs.map +6 -0
- package/dist/cjs/provider/AfterAuth.native.js +5 -5
- package/dist/cjs/provider/AfterAuth.native.js.map +2 -2
- package/dist/cjs/provider/AuthProvider/AuthProvider.cjs +204 -0
- package/dist/cjs/provider/AuthProvider/AuthProvider.cjs.map +6 -0
- package/dist/cjs/provider/AuthProvider/AuthProvider.native.cjs +140 -0
- package/dist/cjs/provider/AuthProvider/AuthProvider.native.cjs.map +6 -0
- package/dist/cjs/provider/AuthProvider/AuthProvider.native.js +1 -0
- package/dist/cjs/provider/AuthProvider/AuthProvider.native.js.map +2 -2
- package/dist/cjs/provider/AuthProvider/index.cjs +18 -0
- package/dist/cjs/provider/AuthProvider/index.native.js +1 -0
- package/dist/cjs/provider/AuthProvider/index.native.js.map +2 -2
- package/dist/cjs/provider/KeycloakProvider.cjs +59 -0
- package/dist/cjs/provider/KeycloakProvider.cjs.map +6 -0
- package/dist/cjs/provider/KeycloakProvider.native.js +2 -4
- package/dist/cjs/provider/KeycloakProvider.native.js.map +3 -3
- package/dist/cjs/provider/index.cjs +20 -0
- package/dist/cjs/provider/index.native.js +1 -0
- package/dist/cjs/provider/index.native.js.map +2 -2
- package/dist/cjs/session/index.cjs +18 -0
- package/dist/cjs/session/index.native.js +1 -0
- package/dist/cjs/session/index.native.js.map +2 -2
- package/dist/cjs/session/session.cjs +36 -0
- package/dist/cjs/session/{session.js.map → session.cjs.map} +1 -1
- package/dist/cjs/session/session.native.cjs +32 -0
- package/dist/cjs/session/session.native.cjs.map +6 -0
- package/dist/cjs/session/session.native.js +1 -0
- package/dist/cjs/session/session.native.js.map +2 -2
- package/dist/cjs/state.cjs +37 -0
- package/dist/cjs/{state.js.map → state.cjs.map} +1 -1
- package/dist/cjs/state.native.js +2 -1
- package/dist/cjs/state.native.js.map +3 -3
- package/dist/cjs/token.cjs +36 -0
- package/dist/cjs/token.native.js +1 -0
- package/dist/cjs/token.native.js.map +2 -2
- package/dist/cjs/types.cjs +16 -0
- package/dist/cjs/types.native.js +1 -0
- package/dist/cjs/types.native.js.map +2 -2
- package/dist/esm/Authenticated.js +1 -4
- package/dist/esm/Authenticated.js.map +1 -1
- package/dist/esm/Authenticated.mjs +0 -2
- package/dist/esm/Authenticated.mjs.map +1 -1
- package/dist/esm/Authenticated.native.js +16 -21
- package/dist/esm/Authenticated.native.js.map +6 -1
- package/dist/esm/Loading.native.js +7 -11
- package/dist/esm/Loading.native.js.map +6 -1
- package/dist/esm/authConfig.js +0 -1
- package/dist/esm/authConfig.js.map +1 -1
- package/dist/esm/authConfig.mjs +0 -2
- package/dist/esm/authConfig.mjs.map +1 -1
- package/dist/esm/authConfig.native.js +6 -6
- package/dist/esm/authConfig.native.js.map +6 -1
- package/dist/esm/hooks/index.native.js +3 -3
- package/dist/esm/hooks/index.native.js.map +6 -1
- package/dist/esm/hooks/useAuthConfig.native.js +5 -3
- package/dist/esm/hooks/useAuthConfig.native.js.map +6 -1
- package/dist/esm/hooks/useTokensFromQuery/index.js +3 -5
- package/dist/esm/hooks/useTokensFromQuery/index.js.map +1 -1
- package/dist/esm/hooks/useTokensFromQuery/index.mjs +1 -10
- package/dist/esm/hooks/useTokensFromQuery/index.mjs.map +1 -1
- package/dist/esm/hooks/useTokensFromQuery/index.native.js +4 -2
- package/dist/esm/hooks/useTokensFromQuery/index.native.js.map +6 -1
- package/dist/esm/hooks/useTokensFromState.native.js +8 -5
- package/dist/esm/hooks/useTokensFromState.native.js.map +6 -1
- package/dist/esm/index.native.js +4 -4
- package/dist/esm/index.native.js.map +6 -1
- package/dist/esm/keycloak/config.js +0 -1
- package/dist/esm/keycloak/config.js.map +1 -1
- package/dist/esm/keycloak/config.mjs +0 -2
- package/dist/esm/keycloak/config.mjs.map +1 -1
- package/dist/esm/keycloak/config.native.js +4 -4
- package/dist/esm/keycloak/config.native.js.map +6 -1
- package/dist/esm/keycloak/context.js +0 -1
- package/dist/esm/keycloak/context.js.map +1 -1
- package/dist/esm/keycloak/context.mjs +0 -2
- package/dist/esm/keycloak/context.mjs.map +1 -1
- package/dist/esm/keycloak/context.native.js +4 -4
- package/dist/esm/keycloak/context.native.js.map +6 -1
- package/dist/esm/keycloak/index.native.js +3 -3
- package/dist/esm/keycloak/index.native.js.map +6 -1
- package/dist/esm/keycloak/keycloak.js +48 -4
- package/dist/esm/keycloak/keycloak.js.map +1 -1
- package/dist/esm/keycloak/keycloak.mjs +58 -5
- package/dist/esm/keycloak/keycloak.mjs.map +1 -1
- package/dist/esm/keycloak/keycloak.native.js +133 -110
- package/dist/esm/keycloak/keycloak.native.js.map +6 -1
- package/dist/esm/{routes.js → one.js} +25 -48
- package/dist/esm/one.js.map +6 -0
- package/dist/esm/{routes.mjs → one.mjs} +23 -44
- package/dist/esm/one.mjs.map +1 -0
- package/dist/esm/one.native.js +99 -0
- package/dist/esm/one.native.js.map +6 -0
- package/dist/esm/provider/AfterAuth.js +4 -7
- package/dist/esm/provider/AfterAuth.js.map +1 -1
- package/dist/esm/provider/AfterAuth.mjs +4 -6
- package/dist/esm/provider/AfterAuth.mjs.map +1 -1
- package/dist/esm/provider/AfterAuth.native.js +28 -21
- package/dist/esm/provider/AfterAuth.native.js.map +6 -1
- package/dist/esm/provider/AuthProvider/AuthProvider.js +15 -17
- package/dist/esm/provider/AuthProvider/AuthProvider.js.map +1 -1
- package/dist/esm/provider/AuthProvider/AuthProvider.mjs +16 -21
- package/dist/esm/provider/AuthProvider/AuthProvider.mjs.map +1 -1
- package/dist/esm/provider/AuthProvider/AuthProvider.native.js +91 -70
- package/dist/esm/provider/AuthProvider/AuthProvider.native.js.map +6 -1
- package/dist/esm/provider/AuthProvider/index.native.js +2 -2
- package/dist/esm/provider/AuthProvider/index.native.js.map +6 -1
- package/dist/esm/provider/KeycloakProvider.js +1 -3
- package/dist/esm/provider/KeycloakProvider.js.map +1 -1
- package/dist/esm/provider/KeycloakProvider.mjs +1 -5
- package/dist/esm/provider/KeycloakProvider.mjs.map +1 -1
- package/dist/esm/provider/KeycloakProvider.native.js +17 -25
- package/dist/esm/provider/KeycloakProvider.native.js.map +6 -1
- package/dist/esm/provider/index.native.js +3 -3
- package/dist/esm/provider/index.native.js.map +6 -1
- package/dist/esm/session/index.native.js +2 -2
- package/dist/esm/session/index.native.js.map +6 -1
- package/dist/esm/session/session.js +1 -1
- package/dist/esm/session/session.js.map +1 -1
- package/dist/esm/session/session.mjs +1 -1
- package/dist/esm/session/session.mjs.map +1 -1
- package/dist/esm/session/session.native.js +4 -1
- package/dist/esm/session/session.native.js.map +6 -1
- package/dist/esm/state.js +1 -1
- package/dist/esm/state.js.map +1 -1
- package/dist/esm/state.mjs +1 -1
- package/dist/esm/state.mjs.map +1 -1
- package/dist/esm/state.native.js +13 -12
- package/dist/esm/state.native.js.map +6 -1
- package/dist/esm/token.native.js +8 -6
- package/dist/esm/token.native.js.map +6 -1
- package/dist/esm/types.native.js +1 -2
- package/dist/esm/types.native.js.map +6 -1
- package/dist/jsx/Authenticated.js +1 -4
- package/dist/jsx/Authenticated.js.map +1 -1
- package/dist/jsx/Authenticated.mjs +0 -2
- package/dist/jsx/Authenticated.mjs.map +1 -1
- package/dist/jsx/Authenticated.native.js +0 -1
- package/dist/jsx/Authenticated.native.js.map +2 -2
- package/dist/jsx/Loading.native.js.map +1 -1
- package/dist/jsx/authConfig.js +0 -1
- package/dist/jsx/authConfig.js.map +1 -1
- package/dist/jsx/authConfig.mjs +0 -2
- package/dist/jsx/authConfig.mjs.map +1 -1
- package/dist/jsx/authConfig.native.js +0 -1
- package/dist/jsx/authConfig.native.js.map +2 -2
- package/dist/jsx/hooks/index.native.js.map +1 -1
- package/dist/jsx/hooks/useAuthConfig.native.js.map +1 -1
- package/dist/jsx/hooks/useTokensFromQuery/index.js +3 -5
- package/dist/jsx/hooks/useTokensFromQuery/index.js.map +1 -1
- package/dist/jsx/hooks/useTokensFromQuery/index.mjs +1 -10
- package/dist/jsx/hooks/useTokensFromQuery/index.mjs.map +1 -1
- package/dist/jsx/hooks/useTokensFromQuery/index.native.js.map +1 -1
- package/dist/jsx/hooks/useTokensFromState.native.js.map +1 -1
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/keycloak/config.js +0 -1
- package/dist/jsx/keycloak/config.js.map +1 -1
- package/dist/jsx/keycloak/config.mjs +0 -2
- package/dist/jsx/keycloak/config.mjs.map +1 -1
- package/dist/jsx/keycloak/config.native.js +0 -1
- package/dist/jsx/keycloak/config.native.js.map +2 -2
- package/dist/jsx/keycloak/context.js +0 -1
- package/dist/jsx/keycloak/context.js.map +1 -1
- package/dist/jsx/keycloak/context.mjs +0 -2
- package/dist/jsx/keycloak/context.mjs.map +1 -1
- package/dist/jsx/keycloak/context.native.js +0 -1
- package/dist/jsx/keycloak/context.native.js.map +2 -2
- package/dist/jsx/keycloak/index.native.js.map +1 -1
- package/dist/jsx/keycloak/keycloak.js +48 -4
- package/dist/jsx/keycloak/keycloak.js.map +1 -1
- package/dist/jsx/keycloak/keycloak.mjs +58 -5
- package/dist/jsx/keycloak/keycloak.mjs.map +1 -1
- package/dist/jsx/keycloak/keycloak.native.js.map +1 -1
- package/dist/jsx/{routes.js → one.js} +25 -48
- package/dist/jsx/one.js.map +6 -0
- package/dist/jsx/{routes.mjs → one.mjs} +23 -44
- package/dist/jsx/one.mjs.map +1 -0
- package/dist/jsx/one.native.js +99 -0
- package/dist/jsx/one.native.js.map +6 -0
- package/dist/jsx/provider/AfterAuth.js +4 -7
- package/dist/jsx/provider/AfterAuth.js.map +1 -1
- package/dist/jsx/provider/AfterAuth.mjs +4 -6
- package/dist/jsx/provider/AfterAuth.mjs.map +1 -1
- package/dist/jsx/provider/AfterAuth.native.js +4 -5
- package/dist/jsx/provider/AfterAuth.native.js.map +2 -2
- package/dist/jsx/provider/AuthProvider/AuthProvider.js +15 -17
- package/dist/jsx/provider/AuthProvider/AuthProvider.js.map +1 -1
- package/dist/jsx/provider/AuthProvider/AuthProvider.mjs +16 -21
- package/dist/jsx/provider/AuthProvider/AuthProvider.mjs.map +1 -1
- package/dist/jsx/provider/AuthProvider/AuthProvider.native.js.map +1 -1
- package/dist/jsx/provider/AuthProvider/index.native.js.map +1 -1
- package/dist/jsx/provider/KeycloakProvider.js +1 -3
- package/dist/jsx/provider/KeycloakProvider.js.map +1 -1
- package/dist/jsx/provider/KeycloakProvider.mjs +1 -5
- package/dist/jsx/provider/KeycloakProvider.mjs.map +1 -1
- package/dist/jsx/provider/KeycloakProvider.native.js +1 -4
- package/dist/jsx/provider/KeycloakProvider.native.js.map +3 -3
- package/dist/jsx/provider/index.native.js.map +1 -1
- package/dist/jsx/session/index.native.js.map +1 -1
- package/dist/jsx/session/session.js +1 -1
- package/dist/jsx/session/session.js.map +1 -1
- package/dist/jsx/session/session.mjs +1 -1
- package/dist/jsx/session/session.mjs.map +1 -1
- package/dist/jsx/session/session.native.js.map +1 -1
- package/dist/jsx/state.js +1 -1
- package/dist/jsx/state.js.map +1 -1
- package/dist/jsx/state.mjs +1 -1
- package/dist/jsx/state.mjs.map +1 -1
- package/dist/jsx/state.native.js +1 -1
- package/dist/jsx/state.native.js.map +3 -3
- package/dist/jsx/token.native.js.map +1 -1
- package/package.json +22 -24
- package/src/Authenticated.tsx +1 -7
- package/src/authConfig.ts +0 -2
- package/src/hooks/useTokensFromQuery/index.ts +8 -5
- package/src/keycloak/config.ts +0 -2
- package/src/keycloak/context.ts +0 -2
- package/src/keycloak/keycloak.ts +72 -7
- package/src/{routes.ts → one.ts} +60 -93
- package/src/provider/AfterAuth.tsx +3 -9
- package/src/provider/AuthProvider/AuthProvider.tsx +45 -36
- package/src/provider/KeycloakProvider.tsx +2 -5
- package/src/session/session.ts +1 -1
- package/src/state.ts +2 -1
- package/types/Authenticated.d.ts +23 -3
- package/types/Authenticated.d.ts.map +1 -1
- package/types/Loading.d.ts +21 -1
- package/types/Loading.d.ts.map +1 -1
- package/types/authConfig.d.ts +0 -1
- package/types/authConfig.d.ts.map +1 -1
- package/types/hooks/useAuthConfig.d.ts +1 -1
- package/types/hooks/useAuthConfig.d.ts.map +1 -1
- package/types/hooks/useTokensFromQuery/index.d.ts +1 -1
- package/types/hooks/useTokensFromQuery/index.d.ts.map +1 -1
- package/types/keycloak/config.d.ts +0 -1
- package/types/keycloak/config.d.ts.map +1 -1
- package/types/keycloak/context.d.ts +0 -1
- package/types/keycloak/context.d.ts.map +1 -1
- package/types/keycloak/keycloak.d.ts +22 -0
- package/types/keycloak/keycloak.d.ts.map +1 -1
- package/types/one.d.ts +27 -0
- package/types/one.d.ts.map +1 -0
- package/types/provider/AfterAuth.d.ts +22 -2
- package/types/provider/AfterAuth.d.ts.map +1 -1
- package/types/provider/AuthProvider/AuthProvider.d.ts +22 -1
- package/types/provider/AuthProvider/AuthProvider.d.ts.map +1 -1
- package/types/provider/AuthProvider/AuthProvider.native.d.ts +21 -2
- package/types/provider/AuthProvider/AuthProvider.native.d.ts.map +1 -1
- package/types/provider/KeycloakProvider.d.ts +21 -4
- package/types/provider/KeycloakProvider.d.ts.map +1 -1
- package/types/session/session.d.ts +1 -3
- package/types/session/session.d.ts.map +1 -1
- package/types/state.d.ts +1 -1
- package/types/state.d.ts.map +1 -1
- package/dist/cjs/Authenticated.js +0 -55
- package/dist/cjs/Authenticated.js.map +0 -6
- package/dist/cjs/Loading.js +0 -25
- package/dist/cjs/authConfig.js +0 -24
- package/dist/cjs/authConfig.js.map +0 -6
- package/dist/cjs/hooks/index.js +0 -17
- package/dist/cjs/hooks/useAuthConfig.js +0 -24
- package/dist/cjs/hooks/useTokensFromQuery/index.js +0 -27
- package/dist/cjs/hooks/useTokensFromQuery/index.js.map +0 -6
- package/dist/cjs/hooks/useTokensFromState.js +0 -26
- package/dist/cjs/index.js +0 -21
- package/dist/cjs/keycloak/config.js +0 -27
- package/dist/cjs/keycloak/config.js.map +0 -6
- package/dist/cjs/keycloak/context.js +0 -23
- package/dist/cjs/keycloak/context.js.map +0 -6
- package/dist/cjs/keycloak/index.js +0 -16
- package/dist/cjs/keycloak/keycloak.js +0 -124
- package/dist/cjs/keycloak/keycloak.js.map +0 -6
- package/dist/cjs/provider/AfterAuth.js +0 -42
- package/dist/cjs/provider/AfterAuth.js.map +0 -6
- package/dist/cjs/provider/AuthProvider/AuthProvider.js +0 -211
- package/dist/cjs/provider/AuthProvider/AuthProvider.js.map +0 -6
- package/dist/cjs/provider/AuthProvider/index.js +0 -15
- package/dist/cjs/provider/KeycloakProvider.js +0 -50
- package/dist/cjs/provider/KeycloakProvider.js.map +0 -6
- package/dist/cjs/provider/index.js +0 -17
- package/dist/cjs/routes.js +0 -135
- package/dist/cjs/routes.js.map +0 -6
- package/dist/cjs/routes.native.js +0 -141
- package/dist/cjs/routes.native.js.map +0 -6
- package/dist/cjs/session/index.js +0 -15
- package/dist/cjs/session/session.js +0 -30
- package/dist/cjs/state.js +0 -31
- package/dist/cjs/token.js +0 -30
- package/dist/cjs/types.js +0 -14
- package/dist/esm/routes.js.map +0 -6
- package/dist/esm/routes.mjs.map +0 -1
- package/dist/esm/routes.native.js +0 -120
- package/dist/esm/routes.native.js.map +0 -1
- package/dist/jsx/routes.js.map +0 -6
- package/dist/jsx/routes.mjs.map +0 -1
- package/dist/jsx/routes.native.js +0 -121
- package/dist/jsx/routes.native.js.map +0 -6
- package/routes/index.d.ts +0 -22
- package/routes/index.js +0 -22
- package/types/routes.d.ts +0 -31
- package/types/routes.d.ts.map +0 -1
- /package/dist/cjs/{Loading.js.map → Loading.cjs.map} +0 -0
- /package/dist/cjs/hooks/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/hooks/{useAuthConfig.js.map → useAuthConfig.cjs.map} +0 -0
- /package/dist/cjs/hooks/{useTokensFromState.js.map → useTokensFromState.cjs.map} +0 -0
- /package/dist/cjs/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/keycloak/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/provider/AuthProvider/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/provider/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/session/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/{token.js.map → token.cjs.map} +0 -0
- /package/dist/cjs/{types.js.map → types.cjs.map} +0 -0
package/src/keycloak/keycloak.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
2
|
* File: /src/keycloak/keycloak.ts
|
|
3
3
|
* Project: @multiplatform.one/keycloak
|
|
4
|
-
* File Created:
|
|
4
|
+
* File Created: 01-01-1970 00:00:00
|
|
5
5
|
* Author: Clay Risser
|
|
6
6
|
* -----
|
|
7
7
|
* BitSpur (c) Copyright 2021 - 2024
|
|
@@ -27,7 +27,15 @@ import type {
|
|
|
27
27
|
KeycloakLogoutOptions as KeycloakJsLogoutOptions,
|
|
28
28
|
} from "keycloak-js";
|
|
29
29
|
import { MultiPlatform } from "multiplatform.one";
|
|
30
|
-
import {
|
|
30
|
+
import {
|
|
31
|
+
type SignInAuthorizationParams,
|
|
32
|
+
type SignInOptions,
|
|
33
|
+
type SignInResponse,
|
|
34
|
+
getCsrfToken,
|
|
35
|
+
getProviders,
|
|
36
|
+
getSession,
|
|
37
|
+
signOut,
|
|
38
|
+
} from "next-auth/react";
|
|
31
39
|
import { useContext } from "react";
|
|
32
40
|
import { useAuthConfig } from "../hooks";
|
|
33
41
|
import type { Session } from "../session/session";
|
|
@@ -169,10 +177,12 @@ export class Keycloak {
|
|
|
169
177
|
this.token = undefined;
|
|
170
178
|
if (this.keycloakClient) {
|
|
171
179
|
await this.keycloakClient.login(options);
|
|
172
|
-
} else if (MultiPlatform.
|
|
173
|
-
await
|
|
180
|
+
} else if (MultiPlatform.isBrowser && !MultiPlatform.isServer) {
|
|
181
|
+
await cookieSignIn({
|
|
174
182
|
callbackUrl: options.redirectUri,
|
|
175
|
-
|
|
183
|
+
...(typeof options.redirect !== "undefined"
|
|
184
|
+
? { redirect: options.redirect }
|
|
185
|
+
: {}),
|
|
176
186
|
});
|
|
177
187
|
} else {
|
|
178
188
|
await this._login?.(options);
|
|
@@ -185,7 +195,7 @@ export class Keycloak {
|
|
|
185
195
|
this.token = undefined;
|
|
186
196
|
if (this.keycloakClient) {
|
|
187
197
|
await this.keycloakClient.logout(options);
|
|
188
|
-
} else if (MultiPlatform.
|
|
198
|
+
} else if (MultiPlatform.isBrowser && !MultiPlatform.isServer) {
|
|
189
199
|
await fetch("/api/auth/logout", { method: "GET" });
|
|
190
200
|
await signOut({
|
|
191
201
|
callbackUrl: options.redirectUri,
|
|
@@ -223,3 +233,58 @@ export function useKeycloak() {
|
|
|
223
233
|
return new Keycloak(keycloakConfig, session as Session);
|
|
224
234
|
}
|
|
225
235
|
}
|
|
236
|
+
|
|
237
|
+
export async function cookieSignIn(
|
|
238
|
+
options?: SignInOptions,
|
|
239
|
+
authorizationParams?: SignInAuthorizationParams,
|
|
240
|
+
): Promise<SignInResponse | undefined> {
|
|
241
|
+
const provider = "keycloak";
|
|
242
|
+
const baseUrl = `${new URL(window.location.href).origin}/api/auth`;
|
|
243
|
+
const { callbackUrl = window.location.href, redirect = true } = options ?? {};
|
|
244
|
+
const providers = await getProviders();
|
|
245
|
+
if (!providers) {
|
|
246
|
+
window.location.href = `${baseUrl}/error`;
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
if (!provider || !(provider in providers)) {
|
|
250
|
+
window.location.href = `${baseUrl}/signin?${new URLSearchParams({
|
|
251
|
+
callbackUrl,
|
|
252
|
+
})}`;
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
const isCredentials = providers[provider].type === "credentials";
|
|
256
|
+
const isEmail = providers[provider].type === "email";
|
|
257
|
+
const isSupportingReturn = isCredentials || isEmail;
|
|
258
|
+
const signInUrl = `${baseUrl}/${
|
|
259
|
+
isCredentials ? "callback" : "signin"
|
|
260
|
+
}/${provider}`;
|
|
261
|
+
const _signInUrl = `${signInUrl}${authorizationParams ? `?${new URLSearchParams(authorizationParams)}` : ""}`;
|
|
262
|
+
const res = await fetch(_signInUrl, {
|
|
263
|
+
method: "post",
|
|
264
|
+
headers: {
|
|
265
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
266
|
+
"X-Auth-Return-Redirect": "1",
|
|
267
|
+
},
|
|
268
|
+
body: new URLSearchParams({
|
|
269
|
+
...(options as any),
|
|
270
|
+
csrfToken: await getCsrfToken(),
|
|
271
|
+
callbackUrl,
|
|
272
|
+
json: true,
|
|
273
|
+
}),
|
|
274
|
+
});
|
|
275
|
+
const data = await res.json();
|
|
276
|
+
if (redirect || !isSupportingReturn) {
|
|
277
|
+
const url = data.url ?? callbackUrl;
|
|
278
|
+
window.location.href = url;
|
|
279
|
+
if (url.includes("#")) window.location.reload();
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
const error = new URL(data.url).searchParams.get("error");
|
|
283
|
+
if (res.ok) await getSession({ event: "storage" });
|
|
284
|
+
return {
|
|
285
|
+
error,
|
|
286
|
+
status: res.status,
|
|
287
|
+
ok: res.ok,
|
|
288
|
+
url: error ? null : data.url,
|
|
289
|
+
};
|
|
290
|
+
}
|
package/src/{routes.ts → one.ts}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* File: /src/
|
|
2
|
+
* File: /src/one.ts
|
|
3
3
|
* Project: @multiplatform.one/keycloak
|
|
4
|
-
* File Created:
|
|
4
|
+
* File Created: 07-10-2024 16:17:04
|
|
5
5
|
* Author: Clay Risser
|
|
6
6
|
* -----
|
|
7
7
|
* BitSpur (c) Copyright 2021 - 2024
|
|
@@ -19,27 +19,16 @@
|
|
|
19
19
|
* limitations under the License.
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
+
import type { AuthConfig } from "@auth/core";
|
|
23
|
+
import type { AdapterUser } from "@auth/core/adapters";
|
|
24
|
+
import type { JWT } from "@auth/core/jwt";
|
|
25
|
+
import type { OAuthUserConfig } from "@auth/core/providers";
|
|
26
|
+
import KeycloakProvider from "@auth/core/providers/keycloak";
|
|
22
27
|
import { jwtDecode } from "jwt-decode";
|
|
23
|
-
import type { AuthOptions, CallbacksOptions } from "next-auth";
|
|
24
|
-
import { getServerSession } from "next-auth";
|
|
25
|
-
import type { JWT } from "next-auth/jwt";
|
|
26
|
-
import type { OAuthUserConfig } from "next-auth/providers";
|
|
27
28
|
import type { Session } from "./session";
|
|
28
29
|
import type { AccessTokenParsed } from "./token";
|
|
29
30
|
|
|
30
|
-
|
|
31
|
-
.default as typeof import("next-auth").default;
|
|
32
|
-
const NextResponse = require("next/server")
|
|
33
|
-
.NextResponse as typeof import("next/server").NextResponse;
|
|
34
|
-
const logger = console;
|
|
35
|
-
let _nextAuth: AuthOptions | undefined;
|
|
36
|
-
const KeycloakProvider = require("next-auth/providers/keycloak")
|
|
37
|
-
.default as typeof import("next-auth/providers/keycloak").default;
|
|
38
|
-
|
|
39
|
-
export function createAuthHandler(options: AuthHandlerOptions) {
|
|
40
|
-
return NextAuth(createNextAuthOptions(options));
|
|
41
|
-
}
|
|
42
|
-
|
|
31
|
+
let _authConfig: AuthConfig | undefined;
|
|
43
32
|
const defaults = {
|
|
44
33
|
keycloak: {
|
|
45
34
|
baseUrl: "http://localhost:8080",
|
|
@@ -47,44 +36,22 @@ const defaults = {
|
|
|
47
36
|
},
|
|
48
37
|
};
|
|
49
38
|
|
|
50
|
-
|
|
51
|
-
return {
|
|
52
|
-
async GET() {
|
|
53
|
-
const idToken = (
|
|
54
|
-
(await getServerSession(createNextAuthOptions(options))) as Session
|
|
55
|
-
)?.idToken;
|
|
56
|
-
if (idToken) {
|
|
57
|
-
try {
|
|
58
|
-
await fetch(
|
|
59
|
-
`${options.keycloak?.baseUrl || defaults.keycloak.baseUrl}/realms/${
|
|
60
|
-
options.keycloak?.realm || defaults.keycloak.realm
|
|
61
|
-
}/protocol/openid-connect/logout?id_token_hint=${idToken}&post_logout_redirect_uri=${encodeURIComponent(
|
|
62
|
-
options.baseUrl,
|
|
63
|
-
)}`,
|
|
64
|
-
{ method: "GET" },
|
|
65
|
-
);
|
|
66
|
-
} catch (err) {
|
|
67
|
-
logger.error(err);
|
|
68
|
-
return new NextResponse(null, { status: 500 });
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return new NextResponse();
|
|
72
|
-
},
|
|
73
|
-
};
|
|
74
|
-
}
|
|
39
|
+
process.env.NEXTAUTH_URL = "http://localhost:8081/api/auth";
|
|
75
40
|
|
|
76
|
-
export function
|
|
77
|
-
if (
|
|
41
|
+
export function createAuthConfig(config: AuthHandlerConfig) {
|
|
42
|
+
if (_authConfig) return _authConfig;
|
|
78
43
|
const authorization =
|
|
79
|
-
|
|
80
|
-
typeof
|
|
81
|
-
?
|
|
44
|
+
config.keycloak.authorization &&
|
|
45
|
+
typeof config.keycloak.authorization === "object"
|
|
46
|
+
? config.keycloak.authorization
|
|
82
47
|
: {};
|
|
83
|
-
|
|
84
|
-
...
|
|
48
|
+
_authConfig = {
|
|
49
|
+
...config.auth,
|
|
50
|
+
basePath: "/api/auth",
|
|
51
|
+
trustHost: true,
|
|
85
52
|
providers: [
|
|
86
53
|
KeycloakProvider({
|
|
87
|
-
issuer: `${
|
|
54
|
+
issuer: `${config.keycloak?.baseUrl || defaults.keycloak.baseUrl}/realms/${config.keycloak?.realm || defaults.keycloak.realm}`,
|
|
88
55
|
authorization: {
|
|
89
56
|
...authorization,
|
|
90
57
|
params: {
|
|
@@ -94,20 +61,20 @@ export function createNextAuthOptions(options: AuthHandlerOptions) {
|
|
|
94
61
|
"openid",
|
|
95
62
|
"profile",
|
|
96
63
|
...(authorization.params?.scope?.split(" ") || []),
|
|
97
|
-
...(
|
|
64
|
+
...(config.scopes || []),
|
|
98
65
|
]),
|
|
99
66
|
].join(" "),
|
|
100
67
|
},
|
|
101
68
|
},
|
|
102
|
-
...
|
|
69
|
+
...config.keycloak,
|
|
103
70
|
}),
|
|
104
|
-
...(
|
|
71
|
+
...(config.auth?.providers || []),
|
|
105
72
|
],
|
|
106
73
|
callbacks: {
|
|
107
|
-
...
|
|
74
|
+
...config.auth?.callbacks,
|
|
108
75
|
async jwt(params) {
|
|
109
|
-
if (typeof
|
|
110
|
-
return
|
|
76
|
+
if (typeof config.auth?.callbacks?.jwt === "function") {
|
|
77
|
+
return config.auth?.callbacks.jwt(params);
|
|
111
78
|
}
|
|
112
79
|
const { token, account } = params;
|
|
113
80
|
if (account) {
|
|
@@ -126,55 +93,31 @@ export function createNextAuthOptions(options: AuthHandlerOptions) {
|
|
|
126
93
|
return token;
|
|
127
94
|
}
|
|
128
95
|
try {
|
|
129
|
-
return refreshAccessToken(
|
|
96
|
+
return refreshAccessToken(config, token as AuthToken);
|
|
130
97
|
} catch (err) {
|
|
131
98
|
return { ...token, err };
|
|
132
99
|
}
|
|
133
100
|
},
|
|
134
101
|
async session(params) {
|
|
135
|
-
if (typeof
|
|
136
|
-
return
|
|
102
|
+
if (typeof config.auth?.callbacks?.session === "function") {
|
|
103
|
+
return config.auth.callbacks.session(params);
|
|
137
104
|
}
|
|
138
105
|
const { session: nextSession, token: nextToken } = params;
|
|
139
106
|
const session = nextSession as Session;
|
|
140
|
-
const token = nextToken as
|
|
107
|
+
const token = nextToken as AuthToken;
|
|
141
108
|
if (token.accessToken) session.accessToken = token.accessToken;
|
|
142
109
|
if (token.idToken) session.idToken = token.idToken;
|
|
143
110
|
session.err = token.err;
|
|
144
111
|
return session;
|
|
145
112
|
},
|
|
146
|
-
} as
|
|
147
|
-
} as
|
|
148
|
-
return
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
export interface AuthHandlerOptions {
|
|
152
|
-
baseUrl: string;
|
|
153
|
-
keycloak: KeycloakOptions;
|
|
154
|
-
nextAuth?: Partial<AuthOptions>;
|
|
155
|
-
scopes?: string[];
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
export interface KeycloakOptions extends OAuthUserConfig<any> {
|
|
159
|
-
adminPassword?: string;
|
|
160
|
-
adminUsername?: string;
|
|
161
|
-
baseUrl?: string;
|
|
162
|
-
realm?: string;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
export interface NextToken extends JWT {
|
|
166
|
-
accessToken?: string;
|
|
167
|
-
decoded: AccessTokenParsed;
|
|
168
|
-
err?: Error;
|
|
169
|
-
expiresAt: number;
|
|
170
|
-
idToken?: string;
|
|
171
|
-
refreshToken: string;
|
|
172
|
-
roles: string[];
|
|
113
|
+
} as AuthConfig["callbacks"],
|
|
114
|
+
} as AuthConfig;
|
|
115
|
+
return _authConfig;
|
|
173
116
|
}
|
|
174
117
|
|
|
175
118
|
async function refreshAccessToken(
|
|
176
|
-
options:
|
|
177
|
-
nextToken:
|
|
119
|
+
options: AuthHandlerConfig,
|
|
120
|
+
nextToken: AuthToken,
|
|
178
121
|
) {
|
|
179
122
|
const res = await fetch(
|
|
180
123
|
`${options.keycloak?.baseUrl || defaults.keycloak.baseUrl}/realms/${
|
|
@@ -186,8 +129,8 @@ async function refreshAccessToken(
|
|
|
186
129
|
"Content-Type": "application/x-www-form-urlencoded",
|
|
187
130
|
},
|
|
188
131
|
body: new URLSearchParams({
|
|
189
|
-
client_id: options.keycloak.clientId,
|
|
190
|
-
client_secret: options.keycloak.clientSecret,
|
|
132
|
+
client_id: options.keycloak.clientId || "",
|
|
133
|
+
client_secret: options.keycloak.clientSecret || "",
|
|
191
134
|
grant_type: "refresh_token",
|
|
192
135
|
refresh_token: nextToken.refreshToken,
|
|
193
136
|
}),
|
|
@@ -204,3 +147,27 @@ async function refreshAccessToken(
|
|
|
204
147
|
refreshToken: refreshToken.refresh_token,
|
|
205
148
|
};
|
|
206
149
|
}
|
|
150
|
+
|
|
151
|
+
export interface AuthToken extends JWT {
|
|
152
|
+
accessToken?: string;
|
|
153
|
+
decoded: AccessTokenParsed;
|
|
154
|
+
err?: Error;
|
|
155
|
+
expiresAt: number;
|
|
156
|
+
idToken?: string;
|
|
157
|
+
refreshToken: string;
|
|
158
|
+
roles: string[];
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export interface KeycloakOptions extends OAuthUserConfig<any> {
|
|
162
|
+
adminPassword?: string;
|
|
163
|
+
adminUsername?: string;
|
|
164
|
+
baseUrl?: string;
|
|
165
|
+
realm?: string;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export interface AuthHandlerConfig {
|
|
169
|
+
baseUrl: string;
|
|
170
|
+
keycloak: KeycloakOptions;
|
|
171
|
+
auth?: Partial<AuthConfig>;
|
|
172
|
+
scopes?: string[];
|
|
173
|
+
}
|
|
@@ -19,13 +19,7 @@
|
|
|
19
19
|
* limitations under the License.
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
import React, {
|
|
25
|
-
type ComponentType,
|
|
26
|
-
type PropsWithChildren,
|
|
27
|
-
useEffect,
|
|
28
|
-
} from "react";
|
|
22
|
+
import { type ComponentType, type PropsWithChildren, useEffect } from "react";
|
|
29
23
|
import { Loading } from "../Loading";
|
|
30
24
|
import { useAuthConfig } from "../hooks";
|
|
31
25
|
import { useKeycloak } from "../keycloak";
|
|
@@ -41,10 +35,9 @@ export function AfterAuth({ children, loadingComponent }: AfterAuthProps) {
|
|
|
41
35
|
const authConfig = useAuthConfig();
|
|
42
36
|
const authStore = useAuthStore();
|
|
43
37
|
const keycloak = useKeycloak();
|
|
44
|
-
if (!authStore) return <Loading loadingComponent={loadingComponent} />;
|
|
45
38
|
|
|
46
39
|
useEffect(() => {
|
|
47
|
-
if (!persist || !keycloak?.authenticated) return;
|
|
40
|
+
if (!authStore || !persist || !keycloak?.authenticated) return;
|
|
48
41
|
if (keycloak.token) {
|
|
49
42
|
authStore.token = keycloak.token;
|
|
50
43
|
if (keycloak.idToken) authStore.idToken = keycloak.idToken;
|
|
@@ -77,5 +70,6 @@ export function AfterAuth({ children, loadingComponent }: AfterAuthProps) {
|
|
|
77
70
|
logger.debug("authenticated", keycloak.authenticated);
|
|
78
71
|
}, [keycloak?.authenticated]);
|
|
79
72
|
|
|
73
|
+
if (!authStore) return <Loading loadingComponent={loadingComponent} />;
|
|
80
74
|
return <>{children}</>;
|
|
81
75
|
}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
10
|
* you may not use this file except in compliance with the License.
|
|
11
|
+
*
|
|
11
12
|
* You may obtain a copy of the License at
|
|
12
13
|
*
|
|
13
14
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
@@ -19,17 +20,13 @@
|
|
|
19
20
|
* limitations under the License.
|
|
20
21
|
*/
|
|
21
22
|
|
|
22
|
-
"use client";
|
|
23
|
-
|
|
24
23
|
import KeycloakClient from "keycloak-js";
|
|
25
24
|
import type { KeycloakInitOptions } from "keycloak-js";
|
|
26
25
|
import { MultiPlatform } from "multiplatform.one";
|
|
27
26
|
import type { SessionProviderProps } from "next-auth/react";
|
|
28
27
|
import { SessionProvider } from "next-auth/react";
|
|
29
|
-
import { useRouter } from "next/router";
|
|
30
28
|
import type { PropsWithChildren } from "react";
|
|
31
29
|
import { type ComponentType, useEffect, useMemo, useState } from "react";
|
|
32
|
-
import { Text } from "tamagui";
|
|
33
30
|
import { Loading } from "../../Loading";
|
|
34
31
|
import { useAuthConfig } from "../../hooks";
|
|
35
32
|
import type { KeycloakConfig } from "../../keycloak";
|
|
@@ -62,18 +59,21 @@ export function AuthProvider({
|
|
|
62
59
|
sessionProvider,
|
|
63
60
|
}: AuthProviderProps) {
|
|
64
61
|
const { debug, messageHandlerKeys } = useAuthConfig();
|
|
65
|
-
const
|
|
62
|
+
const query = new URLSearchParams(
|
|
63
|
+
typeof window === "undefined" ? "" : window?.location?.search || "",
|
|
64
|
+
);
|
|
66
65
|
const authStore = useAuthStore();
|
|
67
|
-
if (typeof authStore === "undefined") {
|
|
68
|
-
return <Loading loadingComponent={loadingComponent} />;
|
|
69
|
-
}
|
|
70
66
|
const [keycloak, setKeycloak] = useState<Keycloak>();
|
|
67
|
+
const idTokenQuery = query.get("idToken");
|
|
68
|
+
const refreshTokenQuery = query.get("refreshToken");
|
|
69
|
+
const tokenQuery = query.get("token");
|
|
71
70
|
const initialRefreshToken = useMemo(
|
|
72
71
|
() =>
|
|
72
|
+
typeof authStore !== "undefined" &&
|
|
73
73
|
validOrRefreshableToken(
|
|
74
74
|
MultiPlatform.isIframe
|
|
75
|
-
? ("
|
|
76
|
-
(
|
|
75
|
+
? (typeof refreshTokenQuery === "string" &&
|
|
76
|
+
(refreshTokenQuery || true)) ||
|
|
77
77
|
(persist && authStore.refreshToken) ||
|
|
78
78
|
undefined
|
|
79
79
|
: undefined,
|
|
@@ -82,22 +82,26 @@ export function AuthProvider({
|
|
|
82
82
|
);
|
|
83
83
|
const [tokens, setTokens] = useState<Tokens>({
|
|
84
84
|
refreshToken: initialRefreshToken,
|
|
85
|
-
token:
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
85
|
+
token:
|
|
86
|
+
typeof authStore !== "undefined" &&
|
|
87
|
+
validOrRefreshableToken(
|
|
88
|
+
MultiPlatform.isIframe
|
|
89
|
+
? (typeof tokenQuery === "string" && (tokenQuery || true)) ||
|
|
90
|
+
(persist && authStore.token) ||
|
|
91
|
+
undefined
|
|
92
|
+
: undefined,
|
|
93
|
+
initialRefreshToken,
|
|
94
|
+
),
|
|
95
|
+
idToken:
|
|
96
|
+
typeof authStore !== "undefined" &&
|
|
97
|
+
validOrRefreshableToken(
|
|
98
|
+
MultiPlatform.isIframe
|
|
99
|
+
? (typeof idTokenQuery === "string" && (idTokenQuery || true)) ||
|
|
100
|
+
(persist && authStore.idToken) ||
|
|
101
|
+
undefined
|
|
102
|
+
: undefined,
|
|
103
|
+
initialRefreshToken,
|
|
104
|
+
),
|
|
101
105
|
});
|
|
102
106
|
|
|
103
107
|
useEffect(() => {
|
|
@@ -230,9 +234,8 @@ export function AuthProvider({
|
|
|
230
234
|
|
|
231
235
|
const keycloakClient = useMemo(
|
|
232
236
|
() =>
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
MultiPlatform.isIframe) &&
|
|
237
|
+
!MultiPlatform.isServer &&
|
|
238
|
+
(!MultiPlatform.isBrowser || MultiPlatform.isIframe) &&
|
|
236
239
|
keycloakConfig
|
|
237
240
|
? new KeycloakClient({
|
|
238
241
|
url: keycloakConfig.url,
|
|
@@ -251,11 +254,11 @@ export function AuthProvider({
|
|
|
251
254
|
|
|
252
255
|
const initOptions = useMemo(() => {
|
|
253
256
|
if (
|
|
254
|
-
MultiPlatform.
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
)
|
|
257
|
+
MultiPlatform.isServer ||
|
|
258
|
+
(MultiPlatform.isBrowser && !MultiPlatform.isIframe)
|
|
259
|
+
) {
|
|
258
260
|
return;
|
|
261
|
+
}
|
|
259
262
|
const initOptions: KeycloakInitOptions = {
|
|
260
263
|
...defaultKeycloakInitOptions,
|
|
261
264
|
...keycloakInitOptions,
|
|
@@ -298,12 +301,14 @@ export function AuthProvider({
|
|
|
298
301
|
|
|
299
302
|
useEffect(() => {
|
|
300
303
|
function onError() {
|
|
301
|
-
if (keycloakClient && initOptions)
|
|
304
|
+
if (keycloakClient && initOptions) {
|
|
302
305
|
setKeycloak(new Keycloak(keycloakConfig, keycloakClient));
|
|
306
|
+
}
|
|
303
307
|
}
|
|
304
308
|
function onUpdate() {
|
|
305
|
-
if (keycloakClient && initOptions)
|
|
309
|
+
if (keycloakClient && initOptions) {
|
|
306
310
|
setKeycloak(new Keycloak(keycloakConfig, keycloakClient));
|
|
311
|
+
}
|
|
307
312
|
}
|
|
308
313
|
if (keycloakClient && initOptions) {
|
|
309
314
|
(async () => {
|
|
@@ -326,6 +331,10 @@ export function AuthProvider({
|
|
|
326
331
|
}
|
|
327
332
|
}, []);
|
|
328
333
|
|
|
334
|
+
if (typeof authStore === "undefined") {
|
|
335
|
+
return <Loading loadingComponent={loadingComponent} />;
|
|
336
|
+
}
|
|
337
|
+
|
|
329
338
|
function render() {
|
|
330
339
|
return (
|
|
331
340
|
<KeycloakConfigContext.Provider value={keycloakConfig}>
|
|
@@ -336,7 +345,7 @@ export function AuthProvider({
|
|
|
336
345
|
);
|
|
337
346
|
}
|
|
338
347
|
|
|
339
|
-
if (MultiPlatform.
|
|
348
|
+
if (MultiPlatform.isBrowser && !MultiPlatform.isElectron) {
|
|
340
349
|
return <SessionProvider {...sessionProvider}>{render()}</SessionProvider>;
|
|
341
350
|
}
|
|
342
351
|
return render();
|
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
* limitations under the License.
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
import type { Session } from "next-auth";
|
|
23
|
-
import React, { useMemo } from "react";
|
|
24
22
|
import type { PropsWithChildren } from "react";
|
|
23
|
+
import { useMemo } from "react";
|
|
25
24
|
import type { AuthConfig } from "../authConfig";
|
|
26
25
|
import { AuthConfigContext } from "../authConfig";
|
|
26
|
+
import type { Session } from "../session";
|
|
27
27
|
import { AuthProvider } from "./AuthProvider";
|
|
28
28
|
|
|
29
29
|
export interface KeycloakProviderProps extends PropsWithChildren, AuthConfig {
|
|
@@ -31,7 +31,6 @@ export interface KeycloakProviderProps extends PropsWithChildren, AuthConfig {
|
|
|
31
31
|
clientId?: string;
|
|
32
32
|
publicClientId?: string;
|
|
33
33
|
realm?: string;
|
|
34
|
-
session?: Session;
|
|
35
34
|
}
|
|
36
35
|
|
|
37
36
|
export function KeycloakProvider({
|
|
@@ -43,7 +42,6 @@ export function KeycloakProvider({
|
|
|
43
42
|
disabled,
|
|
44
43
|
publicClientId,
|
|
45
44
|
realm,
|
|
46
|
-
session,
|
|
47
45
|
}: KeycloakProviderProps) {
|
|
48
46
|
const authConfig = useMemo(
|
|
49
47
|
() => ({ debug, disabled, loginRedirectUri }),
|
|
@@ -55,7 +53,6 @@ export function KeycloakProvider({
|
|
|
55
53
|
<>{children}</>
|
|
56
54
|
) : (
|
|
57
55
|
<AuthProvider
|
|
58
|
-
sessionProvider={{ session }}
|
|
59
56
|
keycloakConfig={{
|
|
60
57
|
clientId: clientId || "app",
|
|
61
58
|
publicClientId,
|
package/src/session/session.ts
CHANGED
|
@@ -37,7 +37,7 @@ let useSession = <R extends boolean>(
|
|
|
37
37
|
return {};
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
-
if (MultiPlatform.
|
|
40
|
+
if (MultiPlatform.isBrowser && !MultiPlatform.isElectron) {
|
|
41
41
|
useSession = <R extends boolean>(
|
|
42
42
|
options?: UseSessionOptions<R>,
|
|
43
43
|
): SessionContextValue<R> => {
|
package/src/state.ts
CHANGED
|
@@ -23,7 +23,8 @@ import { createUseStore } from "@multiplatform.one/use-store";
|
|
|
23
23
|
import { MultiPlatform } from "multiplatform.one";
|
|
24
24
|
|
|
25
25
|
export const persist =
|
|
26
|
-
MultiPlatform.isIframe ||
|
|
26
|
+
MultiPlatform.isIframe ||
|
|
27
|
+
(!MultiPlatform.isBrowser && !MultiPlatform.isServer);
|
|
27
28
|
|
|
28
29
|
class AuthStore {
|
|
29
30
|
idToken = "";
|
package/types/Authenticated.d.ts
CHANGED
|
@@ -1,9 +1,29 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* File: /src/Authenticated.tsx
|
|
3
|
+
* Project: @multiplatform.one/keycloak
|
|
4
|
+
* File Created: 22-06-2023 10:07:56
|
|
5
|
+
* Author: Clay Risser
|
|
6
|
+
* -----
|
|
7
|
+
* BitSpur (c) Copyright 2021 - 2023
|
|
8
|
+
*
|
|
9
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
* you may not use this file except in compliance with the License.
|
|
11
|
+
* You may obtain a copy of the License at
|
|
12
|
+
*
|
|
13
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
*
|
|
15
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
16
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
+
* See the License for the specific language governing permissions and
|
|
19
|
+
* limitations under the License.
|
|
20
|
+
*/
|
|
21
|
+
import { type ComponentType, type PropsWithChildren } from "react";
|
|
2
22
|
export interface AuthenticatedProps extends PropsWithChildren {
|
|
3
23
|
disabled?: boolean;
|
|
4
24
|
loadingComponent?: ComponentType;
|
|
5
25
|
loggedOutComponent?: ComponentType;
|
|
6
26
|
}
|
|
7
|
-
export declare function Authenticated({ children, disabled, loggedOutComponent, loadingComponent, }: AuthenticatedProps):
|
|
8
|
-
export declare function withAuthenticated<P extends object>(Component: ComponentType<P>, options?: AuthenticatedProps): (props: P) =>
|
|
27
|
+
export declare function Authenticated({ children, disabled, loggedOutComponent, loadingComponent, }: AuthenticatedProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
export declare function withAuthenticated<P extends object>(Component: ComponentType<P>, options?: AuthenticatedProps): (props: P) => import("react/jsx-runtime").JSX.Element;
|
|
9
29
|
//# sourceMappingURL=Authenticated.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Authenticated.d.ts","sourceRoot":"","sources":["../src/Authenticated.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Authenticated.d.ts","sourceRoot":"","sources":["../src/Authenticated.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAa,MAAM,OAAO,CAAC;AAO9E,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,aAAa,CAAC;IACjC,kBAAkB,CAAC,EAAE,aAAa,CAAC;CACpC;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAQ,EACR,kBAAkB,EAClB,gBAAgB,GACjB,EAAE,kBAAkB,2CAqCpB;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,EAC3B,OAAO,GAAE,kBAAuB,WAEjB,CAAC,6CAKjB"}
|
package/types/Loading.d.ts
CHANGED
|
@@ -1,6 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File: /src/Loading.tsx
|
|
3
|
+
* Project: @multiplatform.one/keycloak
|
|
4
|
+
* File Created: 01-01-1970 00:00:00
|
|
5
|
+
* Author: Clay Risser
|
|
6
|
+
* -----
|
|
7
|
+
* BitSpur (c) Copyright 2021 - 2024
|
|
8
|
+
*
|
|
9
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
* you may not use this file except in compliance with the License.
|
|
11
|
+
* You may obtain a copy of the License at
|
|
12
|
+
*
|
|
13
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
*
|
|
15
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
16
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
+
* See the License for the specific language governing permissions and
|
|
19
|
+
* limitations under the License.
|
|
20
|
+
*/
|
|
1
21
|
import type { ComponentType } from "react";
|
|
2
22
|
export interface LoadingProps {
|
|
3
23
|
loadingComponent?: ComponentType;
|
|
4
24
|
}
|
|
5
|
-
export declare function Loading({ loadingComponent }: LoadingProps): import("react").JSX.Element;
|
|
25
|
+
export declare function Loading({ loadingComponent }: LoadingProps): import("react/jsx-runtime").JSX.Element;
|
|
6
26
|
//# sourceMappingURL=Loading.d.ts.map
|
package/types/Loading.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Loading.d.ts","sourceRoot":"","sources":["../src/Loading.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Loading.d.ts","sourceRoot":"","sources":["../src/Loading.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI3C,MAAM,WAAW,YAAY;IAC3B,gBAAgB,CAAC,EAAE,aAAa,CAAC;CAClC;AAED,wBAAgB,OAAO,CAAC,EAAE,gBAAgB,EAAE,EAAE,YAAY,2CAOzD"}
|
package/types/authConfig.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authConfig.d.ts","sourceRoot":"","sources":["../src/authConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"authConfig.d.ts","sourceRoot":"","sources":["../src/authConfig.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,iBAAiB,EAAE,UAAe,CAAC;AAEhD,eAAO,MAAM,iBAAiB,qCAA+C,CAAC;AAE9E,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B"}
|