@workos-inc/authkit-nextjs 3.0.0-beta.1 → 3.0.1
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/README.md +305 -102
- package/dist/esm/actions.js +35 -5
- package/dist/esm/actions.js.map +1 -1
- package/dist/esm/auth.js +71 -21
- package/dist/esm/auth.js.map +1 -1
- package/dist/esm/authkit-callback-route.js +90 -92
- package/dist/esm/authkit-callback-route.js.map +1 -1
- package/dist/esm/components/authkit-provider.js +36 -15
- package/dist/esm/components/authkit-provider.js.map +1 -1
- package/dist/esm/components/impersonation.js +17 -15
- package/dist/esm/components/impersonation.js.map +1 -1
- package/dist/esm/components/min-max-button.js +1 -1
- package/dist/esm/components/min-max-button.js.map +1 -1
- package/dist/esm/components/tokenStore.js +28 -19
- package/dist/esm/components/tokenStore.js.map +1 -1
- package/dist/esm/components/useAccessToken.js +1 -1
- package/dist/esm/components/useAccessToken.js.map +1 -1
- package/dist/esm/components/useTokenClaims.js +1 -1
- package/dist/esm/components/useTokenClaims.js.map +1 -1
- package/dist/esm/cookie.js +20 -5
- package/dist/esm/cookie.js.map +1 -1
- package/dist/esm/env-variables.js +6 -6
- package/dist/esm/env-variables.js.map +1 -1
- package/dist/esm/errors.js +36 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/get-authorization-url.js +51 -12
- package/dist/esm/get-authorization-url.js.map +1 -1
- package/dist/esm/index.js +5 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces.js +7 -1
- package/dist/esm/interfaces.js.map +1 -1
- package/dist/esm/middleware-helpers.js +102 -0
- package/dist/esm/middleware-helpers.js.map +1 -0
- package/dist/esm/middleware.js +3 -1
- package/dist/esm/middleware.js.map +1 -1
- package/dist/esm/pkce.js +52 -0
- package/dist/esm/pkce.js.map +1 -0
- package/dist/esm/session.js +82 -35
- package/dist/esm/session.js.map +1 -1
- package/dist/esm/test-helpers.js +1 -1
- package/dist/esm/test-helpers.js.map +1 -1
- package/dist/esm/types/actions.d.ts +34 -5
- package/dist/esm/types/auth.d.ts +7 -15
- package/dist/esm/types/components/authkit-provider.d.ts +6 -2
- package/dist/esm/types/components/impersonation.d.ts +2 -1
- package/dist/esm/types/cookie.d.ts +9 -0
- package/dist/esm/types/env-variables.d.ts +2 -1
- package/dist/esm/types/errors.d.ts +15 -0
- package/dist/esm/types/get-authorization-url.d.ts +2 -2
- package/dist/esm/types/index.d.ts +5 -2
- package/dist/esm/types/interfaces.d.ts +12 -0
- package/dist/esm/types/jwt.d.ts +9 -9
- package/dist/esm/types/middleware-helpers.d.ts +27 -0
- package/dist/esm/types/middleware.d.ts +3 -1
- package/dist/esm/types/pkce.d.ts +17 -0
- package/dist/esm/types/session.d.ts +1 -1
- package/dist/esm/types/utils.d.ts +5 -0
- package/dist/esm/types/validate-api-key.d.ts +1 -0
- package/dist/esm/types/workos.d.ts +1 -1
- package/dist/esm/utils.js +10 -2
- package/dist/esm/utils.js.map +1 -1
- package/dist/esm/validate-api-key.js +16 -0
- package/dist/esm/validate-api-key.js.map +1 -0
- package/dist/esm/workos.js +1 -1
- package/package.json +33 -34
- package/src/actions.spec.ts +91 -18
- package/src/actions.ts +44 -6
- package/src/auth.spec.ts +79 -29
- package/src/auth.ts +74 -42
- package/src/authkit-callback-route.spec.ts +372 -58
- package/src/authkit-callback-route.ts +121 -103
- package/src/components/authkit-provider.spec.tsx +264 -70
- package/src/components/authkit-provider.tsx +40 -15
- package/src/components/button.spec.tsx +4 -6
- package/src/components/impersonation.spec.tsx +152 -35
- package/src/components/impersonation.tsx +37 -30
- package/src/components/min-max-button.spec.tsx +2 -1
- package/src/components/tokenStore.spec.ts +59 -44
- package/src/components/tokenStore.ts +11 -3
- package/src/components/useAccessToken.spec.tsx +82 -83
- package/src/components/useTokenClaims.spec.tsx +23 -22
- package/src/cookie.spec.ts +63 -9
- package/src/cookie.ts +35 -0
- package/src/env-variables.ts +2 -0
- package/src/errors.spec.ts +108 -0
- package/src/errors.ts +46 -0
- package/src/get-authorization-url.spec.ts +170 -15
- package/src/get-authorization-url.ts +69 -23
- package/src/index.ts +20 -2
- package/src/interfaces.ts +15 -0
- package/src/jwt.ts +9 -9
- package/src/middleware-helpers.spec.ts +238 -0
- package/src/middleware-helpers.ts +134 -0
- package/src/middleware.spec.ts +25 -0
- package/src/middleware.ts +4 -1
- package/src/pkce.spec.ts +146 -0
- package/src/pkce.ts +59 -0
- package/src/session.spec.ts +87 -89
- package/src/session.ts +104 -27
- package/src/test-helpers.ts +1 -1
- package/src/utils.spec.ts +14 -31
- package/src/utils.ts +9 -0
- package/src/validate-api-key.spec.ts +111 -0
- package/src/validate-api-key.ts +19 -0
- package/src/workos.spec.ts +2 -2
- package/src/workos.ts +1 -1
package/dist/esm/auth.js
CHANGED
|
@@ -4,15 +4,37 @@ import { revalidatePath, revalidateTag } from 'next/cache';
|
|
|
4
4
|
import { cookies, headers } from 'next/headers';
|
|
5
5
|
import { redirect } from 'next/navigation';
|
|
6
6
|
import { WORKOS_COOKIE_NAME } from './env-variables.js';
|
|
7
|
-
import { getCookieOptions } from './cookie.js';
|
|
7
|
+
import { getCookieOptions, getPKCECookieOptions } from './cookie.js';
|
|
8
8
|
import { getAuthorizationUrl } from './get-authorization-url.js';
|
|
9
|
+
import { PKCE_COOKIE_NAME, setPKCECookie } from './pkce.js';
|
|
9
10
|
import { getSessionFromCookie, refreshSession, withAuth } from './session.js';
|
|
10
11
|
import { getWorkOS } from './workos.js';
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
/**
|
|
13
|
+
* A wrapper around revalidateTag to provide compatibility with previous versions.
|
|
14
|
+
* @param tag The tag to revalidate.
|
|
15
|
+
*/
|
|
16
|
+
function revalidateTagCompat(tag) {
|
|
17
|
+
const fn = revalidateTag;
|
|
18
|
+
return fn(tag, 'max');
|
|
19
|
+
}
|
|
20
|
+
async function getAuthURLAndSetPKCECookie(options) {
|
|
21
|
+
const { url, sealedState } = await getAuthorizationUrl(options);
|
|
22
|
+
await setPKCECookie(sealedState);
|
|
23
|
+
return url;
|
|
24
|
+
}
|
|
25
|
+
export async function getSignInUrl(authUrlOptions = {}) {
|
|
26
|
+
return getAuthURLAndSetPKCECookie({
|
|
27
|
+
...authUrlOptions,
|
|
28
|
+
returnPathname: authUrlOptions.returnTo,
|
|
29
|
+
screenHint: 'sign-in',
|
|
30
|
+
});
|
|
13
31
|
}
|
|
14
|
-
export async function getSignUpUrl(
|
|
15
|
-
return
|
|
32
|
+
export async function getSignUpUrl(authUrlOptions = {}) {
|
|
33
|
+
return getAuthURLAndSetPKCECookie({
|
|
34
|
+
...authUrlOptions,
|
|
35
|
+
returnPathname: authUrlOptions.returnTo,
|
|
36
|
+
screenHint: 'sign-up',
|
|
37
|
+
});
|
|
16
38
|
}
|
|
17
39
|
/**
|
|
18
40
|
* Sign out the user and delete the session cookie.
|
|
@@ -41,17 +63,41 @@ export async function signOut({ returnTo } = {}) {
|
|
|
41
63
|
const nextCookies = await cookies();
|
|
42
64
|
const cookieName = WORKOS_COOKIE_NAME || 'wos-session';
|
|
43
65
|
const { domain, path, sameSite, secure } = getCookieOptions();
|
|
44
|
-
|
|
66
|
+
try {
|
|
67
|
+
nextCookies.delete({ name: cookieName, domain, path, sameSite, secure });
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// Some environments (e.g., vinext) only accept a string cookie name
|
|
71
|
+
nextCookies.delete(cookieName);
|
|
72
|
+
}
|
|
73
|
+
// Clear any lingering PKCE verifier cookies so orphans from abandoned
|
|
74
|
+
// flows don't accumulate toward HTTP 431 or confuse future sign-ins.
|
|
75
|
+
const pkceOptions = getPKCECookieOptions();
|
|
76
|
+
for (const { name } of nextCookies.getAll()) {
|
|
77
|
+
if (!name.startsWith(PKCE_COOKIE_NAME))
|
|
78
|
+
continue;
|
|
79
|
+
try {
|
|
80
|
+
nextCookies.delete({
|
|
81
|
+
name,
|
|
82
|
+
domain: pkceOptions.domain,
|
|
83
|
+
path: pkceOptions.path,
|
|
84
|
+
sameSite: pkceOptions.sameSite,
|
|
85
|
+
secure: pkceOptions.secure,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
nextCookies.delete(name);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
45
92
|
if (sessionId) {
|
|
46
93
|
redirect(getWorkOS().userManagement.getLogoutUrl({ sessionId, returnTo }));
|
|
47
94
|
}
|
|
48
95
|
else {
|
|
49
|
-
redirect(returnTo
|
|
96
|
+
redirect(returnTo ?? '/');
|
|
50
97
|
}
|
|
51
98
|
}
|
|
52
99
|
}
|
|
53
100
|
export async function switchToOrganization(organizationId, options = {}) {
|
|
54
|
-
var _a;
|
|
55
101
|
const { returnTo, revalidationStrategy = 'path', revalidationTags = [] } = options;
|
|
56
102
|
const headersList = await headers();
|
|
57
103
|
let result;
|
|
@@ -65,26 +111,30 @@ export async function switchToOrganization(organizationId, options = {}) {
|
|
|
65
111
|
error) {
|
|
66
112
|
const { cause } = error;
|
|
67
113
|
/* istanbul ignore next */
|
|
68
|
-
if (
|
|
114
|
+
if (cause?.rawData?.authkit_redirect_url) {
|
|
69
115
|
redirect(cause.rawData.authkit_redirect_url);
|
|
70
116
|
}
|
|
71
117
|
else {
|
|
72
|
-
if (
|
|
73
|
-
|
|
74
|
-
return redirect(url);
|
|
118
|
+
if (cause?.error === 'sso_required' || cause?.error === 'mfa_enrollment') {
|
|
119
|
+
return redirect(await getAuthURLAndSetPKCECookie({ organizationId }));
|
|
75
120
|
}
|
|
76
121
|
throw error;
|
|
77
122
|
}
|
|
78
123
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
124
|
+
try {
|
|
125
|
+
switch (revalidationStrategy) {
|
|
126
|
+
case 'path':
|
|
127
|
+
revalidatePath(pathname);
|
|
128
|
+
break;
|
|
129
|
+
case 'tag':
|
|
130
|
+
for (const tag of revalidationTags) {
|
|
131
|
+
revalidateTagCompat(tag);
|
|
132
|
+
}
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
// revalidatePath/revalidateTag may not be available in non-Next.js environments (e.g., vinext)
|
|
88
138
|
}
|
|
89
139
|
if (revalidationStrategy !== 'none') {
|
|
90
140
|
redirect(pathname);
|
package/dist/esm/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +1,12 @@
|
|
|
1
|
+
import { getPKCECookieOptions } from './cookie.js';
|
|
1
2
|
import { WORKOS_CLIENT_ID } from './env-variables.js';
|
|
3
|
+
import { PKCE_COOKIE_NAME, getPKCECookieNameForState, getStateFromPKCECookieValue } from './pkce.js';
|
|
2
4
|
import { saveSession } from './session.js';
|
|
3
|
-
import { errorResponseWithFallback, redirectWithFallback } from './utils.js';
|
|
5
|
+
import { errorResponseWithFallback, redirectWithFallback, setCachePreventionHeaders } from './utils.js';
|
|
4
6
|
import { getWorkOS } from './workos.js';
|
|
5
|
-
function
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
if (state === null || state === void 0 ? void 0 : state.includes('.')) {
|
|
9
|
-
const [internal, ...rest] = state.split('.');
|
|
10
|
-
userState = rest.join('.');
|
|
11
|
-
try {
|
|
12
|
-
// Reverse URL-safe base64 encoding
|
|
13
|
-
const decoded = internal.replace(/-/g, '+').replace(/_/g, '/');
|
|
14
|
-
returnPathname = JSON.parse(atob(decoded)).returnPathname;
|
|
15
|
-
}
|
|
16
|
-
catch (_a) {
|
|
17
|
-
// Malformed internal part, ignore it
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
else if (state) {
|
|
21
|
-
try {
|
|
22
|
-
const decoded = JSON.parse(atob(state));
|
|
23
|
-
if (decoded.returnPathname) {
|
|
24
|
-
returnPathname = decoded.returnPathname;
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
userState = state;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
catch (_b) {
|
|
31
|
-
userState = state;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return {
|
|
35
|
-
returnPathname,
|
|
36
|
-
state: userState,
|
|
37
|
-
};
|
|
7
|
+
function preventCaching(headers) {
|
|
8
|
+
headers.set('Vary', 'Cookie');
|
|
9
|
+
setCachePreventionHeaders(headers);
|
|
38
10
|
}
|
|
39
11
|
export function handleAuth(options = {}) {
|
|
40
12
|
const { returnPathname: returnPathnameOption = '/', baseURL, onSuccess, onError } = options;
|
|
@@ -48,76 +20,102 @@ export function handleAuth(options = {}) {
|
|
|
48
20
|
}
|
|
49
21
|
}
|
|
50
22
|
return async function GET(request) {
|
|
51
|
-
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
23
|
+
// Fall back to standard URL parsing when nextUrl is not available (e.g., vinext)
|
|
24
|
+
const requestUrl = request.nextUrl ?? new URL(request.url);
|
|
25
|
+
// Gather mandatory information
|
|
26
|
+
const code = requestUrl.searchParams.get('code');
|
|
27
|
+
const state = requestUrl.searchParams.get('state');
|
|
28
|
+
// We want to catch any & all errors and respond the same way, always
|
|
29
|
+
// destroying the 1-use PKCE cookie to prevent replay attacks or stale
|
|
30
|
+
// cookies affecting future auth attempts.
|
|
31
|
+
try {
|
|
32
|
+
if (!code || !state) {
|
|
33
|
+
throw new Error('Missing required auth parameter');
|
|
34
|
+
}
|
|
35
|
+
// Derive the flow-specific cookie name from the state param so each
|
|
36
|
+
// concurrent auth flow reads/deletes its own cookie, not a shared one.
|
|
37
|
+
// Fall back to the legacy shared cookie name so in-flight OAuth flows
|
|
38
|
+
// started on v3.0.x don't fail on the first callback after upgrade.
|
|
39
|
+
// Safe to remove once v3.0.x is unsupported.
|
|
40
|
+
const pkceCookieName = getPKCECookieNameForState(state);
|
|
41
|
+
const pkceCookie = request.cookies.get(pkceCookieName)?.value ?? request.cookies.get(PKCE_COOKIE_NAME)?.value;
|
|
42
|
+
// CSRF verification: both channels (cookie + URL state) must be present and match
|
|
43
|
+
if (!pkceCookie) {
|
|
44
|
+
throw new Error('Auth cookie missing — cannot verify OAuth state. Ensure Set-Cookie headers are propagated on redirects.');
|
|
45
|
+
}
|
|
46
|
+
if (state !== pkceCookie) {
|
|
47
|
+
throw new Error('OAuth state mismatch');
|
|
48
|
+
}
|
|
49
|
+
const { codeVerifier, customState, returnPathname: returnPathnameState, } = await getStateFromPKCECookieValue(pkceCookie);
|
|
50
|
+
// Use the code returned to us by AuthKit and authenticate the user with WorkOS
|
|
51
|
+
const { accessToken, refreshToken, user, impersonator, oauthTokens, authenticationMethod, organizationId } = await getWorkOS().userManagement.authenticateWithCode({
|
|
52
|
+
clientId: WORKOS_CLIENT_ID,
|
|
53
|
+
code,
|
|
54
|
+
codeVerifier,
|
|
55
|
+
});
|
|
56
|
+
if (!accessToken || !refreshToken) {
|
|
57
|
+
throw new Error('response is missing tokens');
|
|
58
|
+
}
|
|
59
|
+
// If baseURL is provided, use it instead of request.nextUrl
|
|
60
|
+
// This is useful if the app is being run in a container like docker where
|
|
61
|
+
// the hostname can be different from the one in the request
|
|
62
|
+
const url = baseURL ? new URL(baseURL) : new URL(requestUrl.toString());
|
|
63
|
+
// Cleanup params
|
|
64
|
+
url.searchParams.delete('code');
|
|
65
|
+
url.searchParams.delete('state');
|
|
66
|
+
// Redirect to the requested path and store the session
|
|
67
|
+
const returnPathname = returnPathnameState ?? returnPathnameOption;
|
|
68
|
+
// Extract pathname and search params from returnPathname
|
|
69
|
+
const parsedReturnUrl = new URL(returnPathname, 'https://placeholder.com');
|
|
70
|
+
url.pathname = parsedReturnUrl.pathname;
|
|
71
|
+
url.search = parsedReturnUrl.search;
|
|
72
|
+
// Fall back to standard Response if NextResponse is not available.
|
|
73
|
+
// This is to support Next.js 13.
|
|
74
|
+
const response = redirectWithFallback(url.toString());
|
|
75
|
+
preventCaching(response.headers);
|
|
76
|
+
// Always delete the PKCE cookie after handling the callback, regardless of success or error
|
|
77
|
+
// to avoid stale cookies affecting future auth attempts & prevent replays
|
|
78
|
+
response.headers.append('Set-Cookie', `${pkceCookieName}=; ${getPKCECookieOptions(request.url, true, true)}`);
|
|
79
|
+
await saveSession({ accessToken, refreshToken, user, impersonator }, request);
|
|
80
|
+
if (onSuccess) {
|
|
81
|
+
await onSuccess({
|
|
82
|
+
accessToken,
|
|
83
|
+
refreshToken,
|
|
84
|
+
user,
|
|
85
|
+
impersonator,
|
|
86
|
+
oauthTokens,
|
|
87
|
+
authenticationMethod,
|
|
88
|
+
organizationId,
|
|
89
|
+
state: customState,
|
|
60
90
|
});
|
|
61
|
-
// If baseURL is provided, use it instead of request.nextUrl
|
|
62
|
-
// This is useful if the app is being run in a container like docker where
|
|
63
|
-
// the hostname can be different from the one in the request
|
|
64
|
-
const url = baseURL ? new URL(baseURL) : request.nextUrl.clone();
|
|
65
|
-
// Cleanup params
|
|
66
|
-
url.searchParams.delete('code');
|
|
67
|
-
url.searchParams.delete('state');
|
|
68
|
-
// Redirect to the requested path and store the session
|
|
69
|
-
const returnPathname = returnPathnameState !== null && returnPathnameState !== void 0 ? returnPathnameState : returnPathnameOption;
|
|
70
|
-
// Extract the search params if they are present
|
|
71
|
-
if (returnPathname.includes('?')) {
|
|
72
|
-
const newUrl = new URL(returnPathname, 'https://example.com');
|
|
73
|
-
url.pathname = newUrl.pathname;
|
|
74
|
-
for (const [key, value] of newUrl.searchParams) {
|
|
75
|
-
url.searchParams.append(key, value);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
url.pathname = returnPathname;
|
|
80
|
-
}
|
|
81
|
-
// Fall back to standard Response if NextResponse is not available.
|
|
82
|
-
// This is to support Next.js 13.
|
|
83
|
-
const response = redirectWithFallback(url.toString());
|
|
84
|
-
if (!accessToken || !refreshToken)
|
|
85
|
-
throw new Error('response is missing tokens');
|
|
86
|
-
await saveSession({ accessToken, refreshToken, user, impersonator }, request);
|
|
87
|
-
if (onSuccess) {
|
|
88
|
-
await onSuccess({
|
|
89
|
-
accessToken,
|
|
90
|
-
refreshToken,
|
|
91
|
-
user,
|
|
92
|
-
impersonator,
|
|
93
|
-
oauthTokens,
|
|
94
|
-
authenticationMethod,
|
|
95
|
-
organizationId,
|
|
96
|
-
state: customState,
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
return response;
|
|
100
91
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
92
|
+
return response;
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
console.error('[AuthKit callback error]', error);
|
|
96
|
+
const response = await errorResponse(request, error);
|
|
97
|
+
// Always delete the PKCE cookie after handling the callback, regardless of success or error
|
|
98
|
+
// to avoid stale cookies affecting future auth attempts & prevent replays
|
|
99
|
+
if (state) {
|
|
100
|
+
response.headers.append('Set-Cookie', `${getPKCECookieNameForState(state)}=; ${getPKCECookieOptions(request.url, true, true)}`);
|
|
107
101
|
}
|
|
102
|
+
return response;
|
|
108
103
|
}
|
|
109
|
-
return errorResponse(request);
|
|
110
104
|
};
|
|
111
|
-
function errorResponse(request, error) {
|
|
105
|
+
async function errorResponse(request, error) {
|
|
112
106
|
if (onError) {
|
|
113
|
-
|
|
107
|
+
const response = await onError({ error, request });
|
|
108
|
+
preventCaching(response.headers);
|
|
109
|
+
return response;
|
|
114
110
|
}
|
|
115
|
-
|
|
111
|
+
const response = errorResponseWithFallback({
|
|
116
112
|
error: {
|
|
117
113
|
message: 'Something went wrong',
|
|
118
114
|
description: "Couldn't sign in. If you are not sure what happened, please contact your organization admin.",
|
|
119
115
|
},
|
|
120
116
|
});
|
|
117
|
+
preventCaching(response.headers);
|
|
118
|
+
return response;
|
|
121
119
|
}
|
|
122
120
|
}
|
|
123
121
|
//# sourceMappingURL=authkit-callback-route.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authkit-callback-route.js","sourceRoot":"","sources":["../../src/authkit-callback-route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"authkit-callback-route.js","sourceRoot":"","sources":["../../src/authkit-callback-route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,37 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import React, { createContext, useCallback, useContext, useEffect, useState } from 'react';
|
|
2
|
+
import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react';
|
|
3
3
|
import { checkSessionAction, getAuthAction, handleSignOutAction, refreshAuthAction, switchToOrganizationAction, } from '../actions.js';
|
|
4
4
|
const AuthContext = createContext(undefined);
|
|
5
|
-
export const AuthKitProvider = ({ children, onSessionExpired }) => {
|
|
6
|
-
const [user, setUser] = useState(null);
|
|
7
|
-
const [sessionId, setSessionId] = useState(
|
|
8
|
-
const [organizationId, setOrganizationId] = useState(
|
|
9
|
-
const [role, setRole] = useState(
|
|
10
|
-
const [roles, setRoles] = useState(
|
|
11
|
-
const [permissions, setPermissions] = useState(
|
|
12
|
-
const [entitlements, setEntitlements] = useState(
|
|
13
|
-
const [featureFlags, setFeatureFlags] = useState(
|
|
14
|
-
const [impersonator, setImpersonator] = useState(
|
|
15
|
-
const [loading, setLoading] = useState(
|
|
5
|
+
export const AuthKitProvider = ({ children, onSessionExpired, initialAuth }) => {
|
|
6
|
+
const [user, setUser] = useState(initialAuth?.user ?? null);
|
|
7
|
+
const [sessionId, setSessionId] = useState(initialAuth?.sessionId);
|
|
8
|
+
const [organizationId, setOrganizationId] = useState(initialAuth?.organizationId);
|
|
9
|
+
const [role, setRole] = useState(initialAuth?.role);
|
|
10
|
+
const [roles, setRoles] = useState(initialAuth?.roles);
|
|
11
|
+
const [permissions, setPermissions] = useState(initialAuth?.permissions);
|
|
12
|
+
const [entitlements, setEntitlements] = useState(initialAuth?.entitlements);
|
|
13
|
+
const [featureFlags, setFeatureFlags] = useState(initialAuth?.featureFlags);
|
|
14
|
+
const [impersonator, setImpersonator] = useState(initialAuth?.impersonator);
|
|
15
|
+
const [loading, setLoading] = useState(!initialAuth);
|
|
16
|
+
const redirectingRef = useRef(false);
|
|
17
|
+
// Redirect client-side to avoid CORS errors that occur when redirect()
|
|
18
|
+
// is called from a server action to an external URL.
|
|
19
|
+
const handleSignInRedirect = useCallback((auth) => {
|
|
20
|
+
if ('signInUrl' in auth && auth.signInUrl) {
|
|
21
|
+
redirectingRef.current = true;
|
|
22
|
+
window.location.href = auth.signInUrl;
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
return false;
|
|
26
|
+
}, []);
|
|
16
27
|
const getAuth = useCallback(async ({ ensureSignedIn = false } = {}) => {
|
|
28
|
+
if (redirectingRef.current)
|
|
29
|
+
return;
|
|
17
30
|
setLoading(true);
|
|
18
31
|
try {
|
|
19
32
|
const auth = await getAuthAction({ ensureSignedIn });
|
|
33
|
+
if (handleSignInRedirect(auth))
|
|
34
|
+
return;
|
|
20
35
|
setUser(auth.user);
|
|
21
36
|
setSessionId(auth.sessionId);
|
|
22
37
|
setOrganizationId(auth.organizationId);
|
|
@@ -27,7 +42,7 @@ export const AuthKitProvider = ({ children, onSessionExpired }) => {
|
|
|
27
42
|
setFeatureFlags(auth.featureFlags);
|
|
28
43
|
setImpersonator(auth.impersonator);
|
|
29
44
|
}
|
|
30
|
-
catch
|
|
45
|
+
catch {
|
|
31
46
|
setUser(null);
|
|
32
47
|
setSessionId(undefined);
|
|
33
48
|
setOrganizationId(undefined);
|
|
@@ -54,9 +69,13 @@ export const AuthKitProvider = ({ children, onSessionExpired }) => {
|
|
|
54
69
|
return result;
|
|
55
70
|
}, []);
|
|
56
71
|
const refreshAuth = useCallback(async ({ ensureSignedIn = false, organizationId } = {}) => {
|
|
72
|
+
if (redirectingRef.current)
|
|
73
|
+
return;
|
|
57
74
|
try {
|
|
58
75
|
setLoading(true);
|
|
59
76
|
const auth = await refreshAuthAction({ ensureSignedIn, organizationId });
|
|
77
|
+
if (handleSignInRedirect(auth))
|
|
78
|
+
return;
|
|
60
79
|
setUser(auth.user);
|
|
61
80
|
setSessionId(auth.sessionId);
|
|
62
81
|
setOrganizationId(auth.organizationId);
|
|
@@ -78,7 +97,9 @@ export const AuthKitProvider = ({ children, onSessionExpired }) => {
|
|
|
78
97
|
await handleSignOutAction({ returnTo });
|
|
79
98
|
}, []);
|
|
80
99
|
useEffect(() => {
|
|
81
|
-
|
|
100
|
+
if (!initialAuth) {
|
|
101
|
+
getAuth();
|
|
102
|
+
}
|
|
82
103
|
// Return early if the session expired checks are disabled.
|
|
83
104
|
if (onSessionExpired === false) {
|
|
84
105
|
return;
|
|
@@ -146,7 +167,7 @@ export function useAuth({ ensureSignedIn = false } = {}) {
|
|
|
146
167
|
if (context && ensureSignedIn && !context.user && !context.loading) {
|
|
147
168
|
context.getAuth({ ensureSignedIn });
|
|
148
169
|
}
|
|
149
|
-
}, [ensureSignedIn, context
|
|
170
|
+
}, [ensureSignedIn, context?.user, context?.loading, context?.getAuth]);
|
|
150
171
|
if (!context) {
|
|
151
172
|
throw new Error('useAuth must be used within an AuthKitProvider');
|
|
152
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authkit-provider.js","sourceRoot":"","sources":["../../../src/components/authkit-provider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,KAAK,EAAE,EAAE,aAAa,EAAa,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"authkit-provider.js","sourceRoot":"","sources":["../../../src/components/authkit-provider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,KAAK,EAAE,EAAE,aAAa,EAAa,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9G,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AAwBvB,MAAM,WAAW,GAAG,aAAa,CAA8B,SAAS,CAAC,CAAC;AAe1E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAwB,EAAE,EAAE;IACnG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAc,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;IACzE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAqB,WAAW,EAAE,SAAS,CAAC,CAAC;IACvF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAqB,WAAW,EAAE,cAAc,CAAC,CAAC;IACtG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAqB,WAAW,EAAE,IAAI,CAAC,CAAC;IACxE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAuB,WAAW,EAAE,KAAK,CAAC,CAAC;IAC7E,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAuB,WAAW,EAAE,WAAW,CAAC,CAAC;IAC/F,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAuB,WAAW,EAAE,YAAY,CAAC,CAAC;IAClG,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAuB,WAAW,EAAE,YAAY,CAAC,CAAC;IAClG,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAA2B,WAAW,EAAE,YAAY,CAAC,CAAC;IACtG,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAErC,uEAAuE;IACvE,qDAAqD;IACrD,MAAM,oBAAoB,GAAG,WAAW,CAAC,CAAC,IAA6B,EAAW,EAAE;QAClF,IAAI,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1C,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;YAC9B,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,SAAmB,CAAC;YAChD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,EAAE,cAAc,GAAG,KAAK,KAAmC,EAAE,EAAE,EAAE;QAClG,IAAI,cAAc,CAAC,OAAO;YAAE,OAAO;QACnC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;YAErD,IAAI,oBAAoB,CAAC,IAAI,CAAC;gBAAE,OAAO;YAEvC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACjC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC7B,OAAO,CAAC,SAAS,CAAC,CAAC;YACnB,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,cAAc,CAAC,SAAS,CAAC,CAAC;YAC1B,eAAe,CAAC,SAAS,CAAC,CAAC;YAC3B,eAAe,CAAC,SAAS,CAAC,CAAC;YAC3B,eAAe,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,oBAAoB,GAAG,WAAW,CACtC,KAAK,EAAE,cAAsB,EAAE,UAAuC,EAAE,EAAE,EAAE;QAC1E,MAAM,IAAI,GAAG,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,cAAc,EAAE;YAC9D,oBAAoB,EAAE,MAAM;YAC5B,GAAG,OAAO;SACX,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,oBAAoB,KAAK,MAAM,EAAE,CAAC;YACzC,MAAM,OAAO,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,CAC7B,KAAK,EAAE,EAAE,cAAc,GAAG,KAAK,EAAE,cAAc,KAA4D,EAAE,EAAE,EAAE;QAC/G,IAAI,cAAc,CAAC,OAAO;YAAE,OAAO;QACnC,IAAI,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC;YAEzE,IAAI,oBAAoB,CAAC,IAAI,CAAC;gBAAE,OAAO;YAEvC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACjC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACtF,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,EAAE,QAAQ,KAA4B,EAAE,EAAE,EAAE;QAC7E,MAAM,mBAAmB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,2DAA2D;QAC3D,IAAI,gBAAgB,KAAK,KAAK,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,uBAAuB,GAAG,KAAK,CAAC;QAEpC,MAAM,sBAAsB,GAAG,KAAK,IAAI,EAAE;YACxC,IAAI,uBAAuB,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,oGAAoG;YACpG,qFAAqF;YACrF,oGAAoG;YACpG,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;gBAC3C,uBAAuB,GAAG,IAAI,CAAC;gBAE/B,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,MAAM,kBAAkB,EAAE,CAAC;oBAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,wEAAwE;oBACxE,+EAA+E;oBAC/E,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;wBACxE,IAAI,gBAAgB,EAAE,CAAC;4BACrB,gBAAgB,EAAE,CAAC;wBACrB,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;wBAC3B,CAAC;oBACH,CAAC;gBACH,CAAC;wBAAS,CAAC;oBACT,uBAAuB,GAAG,KAAK,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;QACpE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;QAEzD,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;YAC5D,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;QACzE,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,OAAO,CACL,oBAAC,WAAW,CAAC,QAAQ,IACnB,KAAK,EAAE;YACL,IAAI;YACJ,SAAS;YACT,cAAc;YACd,IAAI;YACJ,KAAK;YACL,WAAW;YACX,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,OAAO;YACP,OAAO;YACP,WAAW;YACX,OAAO;YACP,oBAAoB;SACrB,IAEA,QAAQ,CACY,CACxB,CAAC;AACJ,CAAC,CAAC;AAMF,MAAM,UAAU,OAAO,CAAC,EAAE,cAAc,GAAG,KAAK,KAAmC,EAAE;IACnF,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,IAAI,cAAc,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACnE,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAExE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -4,21 +4,23 @@ import { Button } from './button.js';
|
|
|
4
4
|
import { MinMaxButton } from './min-max-button.js';
|
|
5
5
|
import { getOrganizationAction, handleSignOutAction } from '../actions.js';
|
|
6
6
|
import { useAuth } from './authkit-provider.js';
|
|
7
|
-
export function Impersonation({ side = 'bottom', ...props }) {
|
|
8
|
-
const { user, impersonator, organizationId
|
|
7
|
+
export function Impersonation({ side = 'bottom', returnTo, ...props }) {
|
|
8
|
+
const { user, impersonator, organizationId } = useAuth();
|
|
9
9
|
const [organization, setOrganization] = React.useState(null);
|
|
10
10
|
React.useEffect(() => {
|
|
11
|
-
if (!organizationId)
|
|
11
|
+
if (!organizationId || !impersonator || !user)
|
|
12
|
+
return;
|
|
13
|
+
if (organization && organization.id === organizationId)
|
|
12
14
|
return;
|
|
13
15
|
getOrganizationAction(organizationId).then(setOrganization);
|
|
14
|
-
}, [organizationId]);
|
|
15
|
-
if (
|
|
16
|
+
}, [organizationId, impersonator, user]);
|
|
17
|
+
if (!impersonator || !user)
|
|
16
18
|
return null;
|
|
17
19
|
return (React.createElement("div", { ...props, "data-workos-impersonation-root": "", style: {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
position: 'fixed',
|
|
21
|
+
inset: 0,
|
|
22
|
+
pointerEvents: 'none',
|
|
23
|
+
zIndex: 9999,
|
|
22
24
|
// short properties with defaults for authoring convenience
|
|
23
25
|
'--wi-minimized': '0',
|
|
24
26
|
'--wi-s': 'min(max(var(--workos-impersonation-size, 4px), 2px), 15px)',
|
|
@@ -30,14 +32,14 @@ export function Impersonation({ side = 'bottom', ...props }) {
|
|
|
30
32
|
} },
|
|
31
33
|
React.createElement("div", { style: {
|
|
32
34
|
'--wi-frame-size': 'calc(var(--wi-s) * (1 - var(--wi-minimized)) + var(--wi-minimized) * var(--wi-bw) * -1)',
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
position: 'absolute',
|
|
36
|
+
inset: 'calc(var(--wi-frame-size) * -1)',
|
|
37
|
+
borderRadius: 'calc(var(--wi-frame-size) * 3)',
|
|
38
|
+
boxShadow: `
|
|
37
39
|
inset 0 0 0 calc(var(--wi-frame-size) * 2) var(--wi-bgc),
|
|
38
40
|
inset 0 0 0 calc(var(--wi-frame-size) * 2 + var(--wi-bw)) var(--wi-bc)
|
|
39
41
|
`,
|
|
40
|
-
|
|
42
|
+
transition: 'all 500ms cubic-bezier(0.16, 1, 0.3, 1)',
|
|
41
43
|
} }),
|
|
42
44
|
React.createElement("div", { style: {
|
|
43
45
|
display: 'flex',
|
|
@@ -53,7 +55,7 @@ export function Impersonation({ side = 'bottom', ...props }) {
|
|
|
53
55
|
} },
|
|
54
56
|
React.createElement("form", { onSubmit: async (event) => {
|
|
55
57
|
event.preventDefault();
|
|
56
|
-
await handleSignOutAction();
|
|
58
|
+
await handleSignOutAction({ returnTo });
|
|
57
59
|
}, style: {
|
|
58
60
|
display: 'flex',
|
|
59
61
|
alignItems: 'baseline',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impersonation.js","sourceRoot":"","sources":["../../../src/components/impersonation.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE3E,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"impersonation.js","sourceRoot":"","sources":["../../../src/components/impersonation.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { Button } from './button.js';
|
|
|
4
4
|
export function MinMaxButton({ children, minimizedValue }) {
|
|
5
5
|
return (React.createElement(Button, { onClick: () => {
|
|
6
6
|
const root = document.querySelector('[data-workos-impersonation-root]');
|
|
7
|
-
root
|
|
7
|
+
root?.style.setProperty('--wi-minimized', minimizedValue);
|
|
8
8
|
}, style: { padding: 0, width: '1.714em' } }, children));
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=min-max-button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"min-max-button.js","sourceRoot":"","sources":["../../../src/components/min-max-button.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAOrC,MAAM,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAqB;IAC1E,OAAO,CACL,oBAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,kCAAkC,CAAuB,CAAC;YAC9F,IAAI,
|
|
1
|
+
{"version":3,"file":"min-max-button.js","sourceRoot":"","sources":["../../../src/components/min-max-button.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAOrC,MAAM,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAqB;IAC1E,OAAO,CACL,oBAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,kCAAkC,CAAuB,CAAC;YAC9F,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAC5D,CAAC,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAEtC,QAAQ,CACF,CACV,CAAC;AACJ,CAAC"}
|