@schemavaults/auth-react-provider 0.6.8 → 0.8.0
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/auth-provider/auth-provider-props.d.ts +1 -0
- package/dist/auth-provider/auth-provider.d.ts +1 -1
- package/dist/auth-provider/auth-provider.js +89 -51
- package/dist/auth-provider/auth-provider.js.map +1 -1
- package/dist/contexts/app-id-context.d.ts +2 -0
- package/dist/contexts/app-id-context.js +4 -0
- package/dist/contexts/app-id-context.js.map +1 -0
- package/dist/contexts/default-access-token-audiences-context.d.ts +2 -0
- package/dist/contexts/default-access-token-audiences-context.js +5 -0
- package/dist/contexts/default-access-token-audiences-context.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/use-app-id.d.ts +3 -0
- package/dist/hooks/use-app-id.js +12 -0
- package/dist/hooks/use-app-id.js.map +1 -0
- package/dist/hooks/use-auth-client-initialization.d.ts +1 -0
- package/dist/hooks/use-auth-client-initialization.js +4 -2
- package/dist/hooks/use-auth-client-initialization.js.map +1 -1
- package/dist/hooks/use-check-if-authenticated-with-server.d.ts +2 -0
- package/dist/hooks/use-check-if-authenticated-with-server.js +13 -0
- package/dist/hooks/use-check-if-authenticated-with-server.js.map +1 -0
- package/dist/hooks/use-default-access-token-audiences.d.ts +3 -0
- package/dist/hooks/use-default-access-token-audiences.js +13 -0
- package/dist/hooks/use-default-access-token-audiences.js.map +1 -0
- package/dist/hooks/use-effect-if-authenticated.js +19 -2
- package/dist/hooks/use-effect-if-authenticated.js.map +1 -1
- package/dist/hooks/use-is-auth-server.d.ts +2 -0
- package/dist/hooks/use-is-auth-server.js +10 -0
- package/dist/hooks/use-is-auth-server.js.map +1 -0
- package/dist/hooks/use-start-login-oauth-pkce-flow.js +53 -23
- package/dist/hooks/use-start-login-oauth-pkce-flow.js.map +1 -1
- package/dist/hooks/use-start-register-oauth-pkce-flow.js +11 -3
- package/dist/hooks/use-start-register-oauth-pkce-flow.js.map +1 -1
- package/dist/lib/auth-client-factory.d.ts +4 -2
- package/dist/lib/auth-client-factory.js +5 -1
- package/dist/lib/auth-client-factory.js.map +1 -1
- package/dist/lib/react-auth-client-adapter.d.ts +11 -4
- package/dist/lib/react-auth-client-adapter.js +144 -90
- package/dist/lib/react-auth-client-adapter.js.map +1 -1
- package/dist/subproviders/app-id-provider.d.ts +6 -0
- package/dist/subproviders/app-id-provider.js +16 -0
- package/dist/subproviders/app-id-provider.js.map +1 -0
- package/dist/subproviders/default-access-token-audiences-provider.d.ts +6 -0
- package/dist/subproviders/default-access-token-audiences-provider.js +22 -0
- package/dist/subproviders/default-access-token-audiences-provider.js.map +1 -0
- package/dist/types/IReactAuthClientSdkAdapterInitOptions.d.ts +3 -1
- package/package.json +4 -4
- package/dist/hooks/useCheckIfAuthenticatedWithServer.d.ts +0 -1
- package/dist/hooks/useCheckIfAuthenticatedWithServer.js +0 -8
- package/dist/hooks/useCheckIfAuthenticatedWithServer.js.map +0 -1
|
@@ -1,37 +1,30 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useRouter } from "next/navigation";
|
|
3
|
-
import useEffectIfAuthenticated from "./use-effect-if-authenticated";
|
|
4
3
|
import useAuth from "./use-auth";
|
|
5
4
|
import { useEffect } from "react";
|
|
6
5
|
import useAppEnvironment from "./use-app-environment";
|
|
7
6
|
import useDebug from "./use-debug";
|
|
8
|
-
import useCheckIfAuthenticatedWithServer from "./
|
|
7
|
+
import useCheckIfAuthenticatedWithServer from "./use-check-if-authenticated-with-server";
|
|
8
|
+
import useIsAuthServer from "./use-is-auth-server";
|
|
9
|
+
import useDefaultAccessTokenAudiences from "./use-default-access-token-audiences";
|
|
9
10
|
export function useStartLoginOauthPKCEFlow({ onError, }) {
|
|
10
11
|
const router = useRouter();
|
|
11
12
|
const authContext = useAuth();
|
|
12
13
|
const environment = useAppEnvironment();
|
|
13
14
|
const debug = useDebug(environment);
|
|
14
15
|
const checkIfAuthenticatedWithServer = useCheckIfAuthenticatedWithServer();
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if (debug) {
|
|
18
|
-
console.log("[useEffectIfAuthenticated] Sending to account page...");
|
|
19
|
-
}
|
|
20
|
-
const redirect_uri = auth.successful_authentication_redirect_uri;
|
|
21
|
-
router.push(redirect_uri);
|
|
22
|
-
return () => { };
|
|
23
|
-
});
|
|
16
|
+
const isAuthServer = useIsAuthServer();
|
|
17
|
+
const defaultAccessTokenAudiences = useDefaultAccessTokenAudiences();
|
|
24
18
|
useEffect(() => {
|
|
19
|
+
if (isAuthServer) {
|
|
20
|
+
throw new Error("useStartLoginOauthPKCEFlow should not be run from @schemavaults/auth-server!");
|
|
21
|
+
}
|
|
25
22
|
let cancelLoginEffect = false;
|
|
26
|
-
async function
|
|
23
|
+
async function hasValidRefreshTokenSaved(auth) {
|
|
27
24
|
if (!auth.isAuthenticated) {
|
|
28
25
|
return false;
|
|
29
26
|
}
|
|
30
|
-
|
|
31
|
-
if (!hasValidRefreshTokenSet) {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
return true;
|
|
27
|
+
return await checkIfAuthenticatedWithServer(auth);
|
|
35
28
|
}
|
|
36
29
|
async function startLoginPkceFlow(auth) {
|
|
37
30
|
if (cancelLoginEffect) {
|
|
@@ -39,22 +32,52 @@ export function useStartLoginOauthPKCEFlow({ onError, }) {
|
|
|
39
32
|
}
|
|
40
33
|
await auth.login();
|
|
41
34
|
}
|
|
35
|
+
async function acquireDefaultAccessTokens(auth) {
|
|
36
|
+
if (!defaultAccessTokenAudiences)
|
|
37
|
+
return;
|
|
38
|
+
await Promise.all(defaultAccessTokenAudiences.map(async (defaultAccessTokenAudience) => {
|
|
39
|
+
await auth.acquireAccessToken({
|
|
40
|
+
audience: defaultAccessTokenAudience,
|
|
41
|
+
ensure_fresh: true,
|
|
42
|
+
});
|
|
43
|
+
}));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
42
46
|
async function handleAuthClientReady(auth) {
|
|
43
47
|
if (cancelLoginEffect) {
|
|
44
48
|
return;
|
|
45
49
|
}
|
|
46
|
-
let
|
|
50
|
+
let isValidRefreshTokenSaved = false;
|
|
47
51
|
try {
|
|
48
|
-
|
|
52
|
+
isValidRefreshTokenSaved = await hasValidRefreshTokenSaved(auth);
|
|
49
53
|
}
|
|
50
54
|
catch (e) {
|
|
51
55
|
// no-op
|
|
52
|
-
console.error("[useStartLoginOauthPKCEFlow] Error checking if user
|
|
56
|
+
console.error("[useStartLoginOauthPKCEFlow] (No-op) Error checking if user already has a valid refresh token: ", e);
|
|
53
57
|
}
|
|
54
|
-
if (
|
|
58
|
+
if (isValidRefreshTokenSaved) {
|
|
59
|
+
if (cancelLoginEffect) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
55
62
|
if (debug) {
|
|
56
|
-
console.log("[startLoginPkceFlow] User appears to already be logged in
|
|
63
|
+
console.log("[startLoginPkceFlow] User appears to already be logged in with a valid refresh token!");
|
|
64
|
+
}
|
|
65
|
+
if (Array.isArray(defaultAccessTokenAudiences) &&
|
|
66
|
+
defaultAccessTokenAudiences.length > 0) {
|
|
67
|
+
if (debug) {
|
|
68
|
+
console.log("[startLoginPkceFlow] They have refresh token-- but we need to make sure they have access tokens ready in order to potentially access server-side rendered account page!");
|
|
69
|
+
}
|
|
70
|
+
await acquireDefaultAccessTokens(auth);
|
|
71
|
+
}
|
|
72
|
+
if (debug) {
|
|
73
|
+
console.log("[startLoginPkceFlow] User appears to already be logged in! Not triggering Oauth2 PKCE flow-- but redirecting the user to 'successful_authentication_redirect_uri': ", auth.successful_authentication_redirect_uri);
|
|
74
|
+
}
|
|
75
|
+
const redirect_uri = auth.successful_authentication_redirect_uri;
|
|
76
|
+
if (cancelLoginEffect) {
|
|
77
|
+
// don't redirect if page unmounted
|
|
78
|
+
return;
|
|
57
79
|
}
|
|
80
|
+
router.push(redirect_uri);
|
|
58
81
|
return;
|
|
59
82
|
}
|
|
60
83
|
else {
|
|
@@ -99,7 +122,14 @@ export function useStartLoginOauthPKCEFlow({ onError, }) {
|
|
|
99
122
|
console.log("[useStartLoginOauthPKCEFlow] Auth client not ready.");
|
|
100
123
|
}
|
|
101
124
|
}
|
|
102
|
-
}, [
|
|
125
|
+
}, [
|
|
126
|
+
authContext,
|
|
127
|
+
debug,
|
|
128
|
+
router,
|
|
129
|
+
onError,
|
|
130
|
+
checkIfAuthenticatedWithServer,
|
|
131
|
+
defaultAccessTokenAudiences,
|
|
132
|
+
]);
|
|
103
133
|
}
|
|
104
134
|
export default useStartLoginOauthPKCEFlow;
|
|
105
135
|
//# sourceMappingURL=use-start-login-oauth-pkce-flow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-start-login-oauth-pkce-flow.js","sourceRoot":"","sources":["../../src/hooks/use-start-login-oauth-pkce-flow.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"use-start-login-oauth-pkce-flow.js","sourceRoot":"","sources":["../../src/hooks/use-start-login-oauth-pkce-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,28 +5,36 @@ import { useEffect } from "react";
|
|
|
5
5
|
import useAppEnvironment from "./use-app-environment";
|
|
6
6
|
import useDebug from "./use-debug";
|
|
7
7
|
import { useRouter } from "next/navigation";
|
|
8
|
-
import useCheckIfAuthenticatedWithServer from "./
|
|
8
|
+
import useCheckIfAuthenticatedWithServer from "./use-check-if-authenticated-with-server";
|
|
9
|
+
import useIsAuthServer from "./use-is-auth-server";
|
|
9
10
|
export function useStartRegisterOauthPKCEFlow({ onError, }) {
|
|
10
11
|
const router = useRouter();
|
|
11
12
|
const authContext = useAuth();
|
|
12
13
|
const environment = useAppEnvironment();
|
|
13
14
|
const debug = useDebug(environment);
|
|
14
15
|
const checkIfAuthenticatedWithServer = useCheckIfAuthenticatedWithServer();
|
|
16
|
+
const isAuthServer = useIsAuthServer();
|
|
15
17
|
useEffectIfAuthenticated((auth) => {
|
|
18
|
+
if (!auth.isAuthenticated) {
|
|
19
|
+
return () => { };
|
|
20
|
+
}
|
|
16
21
|
if (debug) {
|
|
17
|
-
console.log("[useEffectIfAuthenticated] Sending to
|
|
22
|
+
console.log("[useEffectIfAuthenticated] Sending to 'successful_authentication_redirect_uri': ", auth.successful_authentication_redirect_uri);
|
|
18
23
|
}
|
|
19
24
|
const redirect_uri = auth.successful_authentication_redirect_uri;
|
|
20
25
|
router.push(redirect_uri);
|
|
21
26
|
return () => { };
|
|
22
27
|
});
|
|
23
28
|
useEffect(() => {
|
|
29
|
+
if (isAuthServer) {
|
|
30
|
+
throw new Error("useStartRegisterOauthPKCEFlow should not be run from @schemavaults/auth-server!");
|
|
31
|
+
}
|
|
24
32
|
let cancelRegisterEffect = false;
|
|
25
33
|
async function checkIfAlreadyAuthenticated(auth) {
|
|
26
34
|
if (!auth.isAuthenticated) {
|
|
27
35
|
return false;
|
|
28
36
|
}
|
|
29
|
-
const hasValidRefreshTokenSet = await checkIfAuthenticatedWithServer();
|
|
37
|
+
const hasValidRefreshTokenSet = await checkIfAuthenticatedWithServer(auth);
|
|
30
38
|
if (!hasValidRefreshTokenSet) {
|
|
31
39
|
return false;
|
|
32
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-start-register-oauth-pkce-flow.js","sourceRoot":"","sources":["../../src/hooks/use-start-register-oauth-pkce-flow.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,wBAAwB,MAAM,qCAAqC,CAAC;AAC3E,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,iBAEN,MAAM,6BAA6B,CAAC;AACrC,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,iCAAiC,MAAM,
|
|
1
|
+
{"version":3,"file":"use-start-register-oauth-pkce-flow.js","sourceRoot":"","sources":["../../src/hooks/use-start-register-oauth-pkce-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type ISchemaVaultsAuthClient } from "@schemavaults/auth-client-sdk";
|
|
2
|
-
import type { ApiServerId, SchemaVaultsAppEnvironment } from "@schemavaults/app-definitions";
|
|
2
|
+
import type { ApiServerId, AppId, SchemaVaultsAppEnvironment } from "@schemavaults/app-definitions";
|
|
3
3
|
export interface IAuthClientFactoryInitOpts {
|
|
4
4
|
environment: SchemaVaultsAppEnvironment;
|
|
5
|
-
app_id:
|
|
5
|
+
app_id: AppId;
|
|
6
6
|
debug?: boolean;
|
|
7
7
|
default_audiences?: readonly ApiServerId[];
|
|
8
8
|
auth_server_uri: string;
|
|
@@ -10,6 +10,7 @@ export interface IAuthClientFactoryInitOpts {
|
|
|
10
10
|
successful_logout_redirect_uri: string;
|
|
11
11
|
authorize_uri?: string | undefined;
|
|
12
12
|
invite_code_required?: boolean;
|
|
13
|
+
fetch: (url: string, init: RequestInit | undefined) => Promise<Response>;
|
|
13
14
|
}
|
|
14
15
|
export declare class AuthClientFactory {
|
|
15
16
|
private readonly environment;
|
|
@@ -22,6 +23,7 @@ export declare class AuthClientFactory {
|
|
|
22
23
|
private readonly successful_logout_redirect_uri;
|
|
23
24
|
private readonly authorize_uri;
|
|
24
25
|
private readonly invite_code_required;
|
|
26
|
+
private readonly fetch;
|
|
25
27
|
constructor(opts: IAuthClientFactoryInitOpts);
|
|
26
28
|
private createAuthClientWithUuidGenerator;
|
|
27
29
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import SchemaVaultsAuthClient from "@schemavaults/auth-client-sdk";
|
|
3
|
-
import
|
|
3
|
+
import ReactAuthClientSdkAdapter from "./react-auth-client-adapter";
|
|
4
4
|
export class AuthClientFactory {
|
|
5
5
|
environment;
|
|
6
6
|
secure;
|
|
@@ -12,6 +12,7 @@ export class AuthClientFactory {
|
|
|
12
12
|
successful_logout_redirect_uri;
|
|
13
13
|
authorize_uri;
|
|
14
14
|
invite_code_required;
|
|
15
|
+
fetch;
|
|
15
16
|
constructor(opts) {
|
|
16
17
|
const environment = opts.environment;
|
|
17
18
|
this.environment = environment;
|
|
@@ -34,6 +35,7 @@ export class AuthClientFactory {
|
|
|
34
35
|
typeof opts.invite_code_required === "boolean"
|
|
35
36
|
? opts.invite_code_required
|
|
36
37
|
: true;
|
|
38
|
+
this.fetch = fetch;
|
|
37
39
|
}
|
|
38
40
|
async createAuthClientWithUuidGenerator() {
|
|
39
41
|
let uuid_generator;
|
|
@@ -58,6 +60,8 @@ export class AuthClientFactory {
|
|
|
58
60
|
environment: this.environment,
|
|
59
61
|
auth_server_uri: this.auth_server_uri,
|
|
60
62
|
debug: this.debug,
|
|
63
|
+
client_app_id: this.app_id,
|
|
64
|
+
fetch: this.fetch,
|
|
61
65
|
});
|
|
62
66
|
}
|
|
63
67
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-client-factory.js","sourceRoot":"","sources":["../../src/lib/auth-client-factory.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,sBAIN,MAAM,+BAA+B,CAAC;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"auth-client-factory.js","sourceRoot":"","sources":["../../src/lib/auth-client-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +1,29 @@
|
|
|
1
1
|
import { type AccessToken, type RefreshToken, type UserData } from "@schemavaults/auth-common";
|
|
2
|
-
import { type ISchemaVaultsAuthClientAdapter
|
|
2
|
+
import { type ISchemaVaultsAuthClientAdapter } from "@schemavaults/auth-client-sdk";
|
|
3
3
|
import type { IReactAuthClientSdkAdapterInitOptions } from "../types/IReactAuthClientSdkAdapterInitOptions";
|
|
4
4
|
export declare class ReactAuthClientSdkAdapter implements ISchemaVaultsAuthClientAdapter {
|
|
5
5
|
private readonly environment;
|
|
6
6
|
private readonly debug;
|
|
7
7
|
private readonly auth_server_uri;
|
|
8
|
+
private readonly client_app_id;
|
|
9
|
+
private readonly _fetch;
|
|
10
|
+
fetch(url: string, init: RequestInit | undefined): Promise<Response>;
|
|
8
11
|
constructor({ uuid, environment, ...opts }: IReactAuthClientSdkAdapterInitOptions);
|
|
9
12
|
private get ssl_enabled();
|
|
10
13
|
private _uuid_generator;
|
|
11
14
|
uuid(): string;
|
|
12
|
-
private accessTokens;
|
|
13
15
|
redirect(uri: string): void;
|
|
14
16
|
private clearCookie;
|
|
15
|
-
sendPOSTRequest(url: string, body: Record<string, unknown>, headers: Record<string, string>): Promise<IAuthClientPOSTResultType<object>>;
|
|
16
17
|
storeCodeVerifier(code_verifier: string, challenge_time: number): void;
|
|
17
18
|
loadCodeVerifiers(): Record<number, string>;
|
|
18
19
|
loadCodeVerifier(challenge_time: number): string | null;
|
|
19
20
|
clearCodeVerifier(challenge_time: number): void;
|
|
20
21
|
clearCodeVerifiers(): void;
|
|
22
|
+
private storeLocalStorageRefreshToken;
|
|
21
23
|
storeRefreshToken(refresh_token: RefreshToken): void;
|
|
22
24
|
storeAccessToken(token_id: string, access_token: AccessToken): void;
|
|
23
25
|
getAccessToken(token_id: string): AccessToken | null;
|
|
26
|
+
private getLocalStorageRefreshToken;
|
|
24
27
|
getRefreshToken(): RefreshToken | null;
|
|
25
28
|
clearAccessTokens(): void;
|
|
26
29
|
clearHttpOnlyRefreshToken(): Promise<void>;
|
|
@@ -29,12 +32,16 @@ export declare class ReactAuthClientSdkAdapter implements ISchemaVaultsAuthClien
|
|
|
29
32
|
getUserData(): UserData | null;
|
|
30
33
|
clearUserData(): void;
|
|
31
34
|
clearAccessToken(token_id: string): void;
|
|
32
|
-
doesSupportHttpOnlyRefreshToken():
|
|
35
|
+
doesSupportHttpOnlyRefreshToken(): boolean;
|
|
33
36
|
/**
|
|
34
37
|
* @description we can't directly read HTTP-only cookies from JS, so we can't access the token itself
|
|
35
38
|
* however, a companion non-HTTP-only cookie is set with the expiry time of the refresh token
|
|
36
39
|
* @returns True if there is a non-HTTP-only cookie indicating a valid HTTP-only refresh token is present, false otherwise
|
|
37
40
|
*/
|
|
38
41
|
hasHttpOnlyRefreshToken(): boolean;
|
|
42
|
+
private hasLocalStorageRefreshToken;
|
|
43
|
+
private clearLocalStorageRefreshToken;
|
|
39
44
|
hasRefreshToken(): boolean;
|
|
45
|
+
relativeUrlToAbsoluteUrl(relative_url: string): string;
|
|
40
46
|
}
|
|
47
|
+
export default ReactAuthClientSdkAdapter;
|