@betterportal/auth-workos 10.1.64 → 10.1.65
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/lib/bp-contracts/org.betterportal.auth.workos.json +13 -3
- package/lib/plugins/service-betterportal-auth-workos/.bp-generated/registry.js +1 -1
- package/lib/plugins/service-betterportal-auth-workos/.bp-generated/registry.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/login/GET.d.ts +68 -3
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/login/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/login/GET.js +167 -3
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/login/GET.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/login/_renderer.bootstrap5/GET.d.ts +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/login/_renderer.bootstrap5/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/login/_renderer.bootstrap5/_background.monitor.GET.d.ts +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/login/_renderer.bootstrap5/_background.monitor.GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/login/_renderer.bootstrap5/_nav.profile.GET.d.ts +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/login/_renderer.bootstrap5/_nav.profile.GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/login/index.d.ts +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/login/index.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/login/index.js +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/login/index.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/logout/GET.d.ts +27 -3
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/logout/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/logout/GET.js +26 -3
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/logout/GET.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/logout/index.d.ts +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/logout/index.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/logout/index.js +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/logout/index.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/refresh/POST.d.ts +32 -3
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/refresh/POST.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/refresh/POST.js +147 -3
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/refresh/POST.js.map +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/refresh/index.d.ts +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/refresh/index.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/refresh/index.js +1 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/refresh/index.js.map +1 -1
- package/lib/schemas/service-betterportal-auth-workos.json +1 -1
- package/lib/schemas/service-betterportal-auth-workos.plugin.json +1 -1
- package/package.json +4 -4
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/login/route.impl.d.ts +0 -62
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/login/route.impl.d.ts.map +0 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/login/route.impl.js +0 -165
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/login/route.impl.js.map +0 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/logout/route.impl.d.ts +0 -27
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/logout/route.impl.d.ts.map +0 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/logout/route.impl.js +0 -27
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/logout/route.impl.js.map +0 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/refresh/route.impl.d.ts +0 -32
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/refresh/route.impl.d.ts.map +0 -1
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/refresh/route.impl.js +0 -148
- package/lib/plugins/service-betterportal-auth-workos/bp-routes/refresh/route.impl.js.map +0 -1
|
@@ -1,5 +1,149 @@
|
|
|
1
1
|
export const operationId = "auth.refresh";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import * as av from "anyvali";
|
|
3
|
+
import { createHandler } from "@betterportal/framework";
|
|
4
|
+
import { resolveWorkOSAppConfig, workOSAccessTokenDetails, WorkOSRefreshContextSchema } from "../../index.js";
|
|
5
|
+
export const HeadersSchema = av.object({
|
|
6
|
+
"x-bp-refresh": av.optional(av.string())
|
|
7
|
+
});
|
|
8
|
+
export const RequestSchema = av.object({
|
|
9
|
+
refreshToken: av.optional(av.string().minLength(1))
|
|
10
|
+
});
|
|
11
|
+
export const ResponseSchema = av.object({
|
|
12
|
+
status: av.enum_(["ok", "error"]),
|
|
13
|
+
message: av.optional(av.string()),
|
|
14
|
+
accessToken: av.optional(av.string()),
|
|
15
|
+
expiresInSeconds: av.optional(av.int().min(1))
|
|
16
|
+
});
|
|
17
|
+
export const title = "WorkOS Refresh";
|
|
18
|
+
export const description = "Refresh BetterPortal tokens using a WorkOS-backed BP refresh token.";
|
|
19
|
+
export const role = "auth.refresh";
|
|
20
|
+
export const auth = { required: false, permissions: [] };
|
|
21
|
+
export const cacheHints = { ttlSeconds: 0, varyBy: [] };
|
|
22
|
+
function pluginFrom(ctx) {
|
|
23
|
+
const plugin = ctx.plugin;
|
|
24
|
+
if (!plugin)
|
|
25
|
+
throw new Error("WorkOS plugin not available on handler context");
|
|
26
|
+
return plugin;
|
|
27
|
+
}
|
|
28
|
+
function clearAuth(ctx) {
|
|
29
|
+
ctx.bpHeaders?.remove("Authorization");
|
|
30
|
+
ctx.bpHeaders?.remove("X-BP-Refresh");
|
|
31
|
+
}
|
|
32
|
+
export default createHandler({ response: ResponseSchema, request: RequestSchema, headers: HeadersSchema }, async (ctx) => {
|
|
33
|
+
const config = resolveWorkOSAppConfig(ctx.config);
|
|
34
|
+
if (!config) {
|
|
35
|
+
ctx.setStatus?.(503);
|
|
36
|
+
return { status: "error", message: "WorkOS config is missing clientId or apiKey." };
|
|
37
|
+
}
|
|
38
|
+
const body = ctx.request;
|
|
39
|
+
const headers = ctx.headers;
|
|
40
|
+
const refreshToken = body.refreshToken ?? headers["x-bp-refresh"];
|
|
41
|
+
if (!refreshToken?.trim()) {
|
|
42
|
+
ctx.setStatus?.(401);
|
|
43
|
+
clearAuth(ctx);
|
|
44
|
+
return { status: "error", message: "Refresh token is required." };
|
|
45
|
+
}
|
|
46
|
+
const plugin = pluginFrom(ctx);
|
|
47
|
+
let claims;
|
|
48
|
+
try {
|
|
49
|
+
claims = await plugin.verifyRefreshToken({ refreshToken, tenantId: ctx.tenant.id, appId: ctx.app.id });
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
ctx.setStatus?.(401);
|
|
53
|
+
clearAuth(ctx);
|
|
54
|
+
return { status: "error", message: "Refresh token invalid or expired." };
|
|
55
|
+
}
|
|
56
|
+
let refreshContext;
|
|
57
|
+
try {
|
|
58
|
+
if (claims.authProvider !== "workos" || claims.providerSubject !== claims.sub)
|
|
59
|
+
throw new Error("Wrong auth provider");
|
|
60
|
+
refreshContext = WorkOSRefreshContextSchema.parse(claims.refreshContext);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
ctx.setStatus?.(401);
|
|
64
|
+
clearAuth(ctx);
|
|
65
|
+
return { status: "error", message: "Refresh token belongs to a different auth provider." };
|
|
66
|
+
}
|
|
67
|
+
let state;
|
|
68
|
+
try {
|
|
69
|
+
state = await plugin.getWorkOSSessionState(config, {
|
|
70
|
+
userId: claims.sub,
|
|
71
|
+
sessionId: refreshContext.sessionId,
|
|
72
|
+
organizationId: refreshContext.organizationId
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
ctx.obs?.error(error);
|
|
77
|
+
ctx.setStatus?.(502);
|
|
78
|
+
return { status: "error", message: "WorkOS session lookup failed." };
|
|
79
|
+
}
|
|
80
|
+
if (!state.sessionActive || !state.membershipActive) {
|
|
81
|
+
ctx.setStatus?.(401);
|
|
82
|
+
clearAuth(ctx);
|
|
83
|
+
return { status: "error", message: "WorkOS session or organization membership is inactive." };
|
|
84
|
+
}
|
|
85
|
+
let workosAuth;
|
|
86
|
+
try {
|
|
87
|
+
workosAuth = await plugin.refreshWorkOSToken(config, refreshContext.providerToken, refreshContext.organizationId);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
ctx.obs?.error(error);
|
|
91
|
+
const status = [400, 401, 403, 404, 422].includes(error?.status) ? 401 : 502;
|
|
92
|
+
ctx.setStatus?.(status);
|
|
93
|
+
if (status === 401)
|
|
94
|
+
clearAuth(ctx);
|
|
95
|
+
return {
|
|
96
|
+
status: "error",
|
|
97
|
+
message: status === 401 ? "WorkOS refresh token invalid, expired, or revoked." : "WorkOS token refresh failed."
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
const details = workOSAccessTokenDetails(workosAuth.accessToken, config.roleClaimPath ?? "roles");
|
|
101
|
+
if (!details
|
|
102
|
+
|| workosAuth.user.id !== claims.sub
|
|
103
|
+
|| details.sessionId !== refreshContext.sessionId
|
|
104
|
+
|| (details.organizationId ?? "") !== (refreshContext.organizationId ?? "")
|
|
105
|
+
|| (workosAuth.organizationId ?? details.organizationId ?? "") !== (refreshContext.organizationId ?? "")) {
|
|
106
|
+
ctx.setStatus?.(401);
|
|
107
|
+
clearAuth(ctx);
|
|
108
|
+
return { status: "error", message: "WorkOS refreshed identity does not match the original session." };
|
|
109
|
+
}
|
|
110
|
+
const issued = plugin.issueTokenPair({
|
|
111
|
+
sub: workosAuth.user.id,
|
|
112
|
+
tenantId: ctx.tenant.id,
|
|
113
|
+
appId: ctx.app.id,
|
|
114
|
+
roles: details.roles,
|
|
115
|
+
authProvider: "workos",
|
|
116
|
+
refreshContext: {
|
|
117
|
+
providerToken: workosAuth.refreshToken,
|
|
118
|
+
sessionId: details.sessionId,
|
|
119
|
+
...(details.organizationId ? { organizationId: details.organizationId } : {})
|
|
120
|
+
},
|
|
121
|
+
providerSubject: workosAuth.user.id,
|
|
122
|
+
provider: {
|
|
123
|
+
accountId: workosAuth.user.id,
|
|
124
|
+
scope: details.organizationId ? `organization:${details.organizationId}` : undefined
|
|
125
|
+
},
|
|
126
|
+
name: workosAuth.user.name ?? undefined,
|
|
127
|
+
email: workosAuth.user.email,
|
|
128
|
+
picture: workosAuth.user.profilePictureUrl ?? undefined
|
|
129
|
+
});
|
|
130
|
+
if (!issued.refreshToken)
|
|
131
|
+
throw new Error("Auth token issuer did not return a refresh token");
|
|
132
|
+
ctx.bpHeaders?.set("Authorization", `Bearer ${issued.accessToken}`, {
|
|
133
|
+
locked: true,
|
|
134
|
+
expiresInSeconds: issued.accessTokenExpiresInSeconds,
|
|
135
|
+
refreshPath: "/refresh",
|
|
136
|
+
refreshBeforeSeconds: 60
|
|
137
|
+
});
|
|
138
|
+
ctx.bpHeaders?.set("X-BP-Refresh", issued.refreshToken, {
|
|
139
|
+
locked: true,
|
|
140
|
+
scopeToOwner: true,
|
|
141
|
+
expiresInSeconds: issued.refreshTokenExpiresInSeconds
|
|
142
|
+
});
|
|
143
|
+
return {
|
|
144
|
+
status: "ok",
|
|
145
|
+
accessToken: issued.accessToken,
|
|
146
|
+
expiresInSeconds: issued.accessTokenExpiresInSeconds
|
|
147
|
+
};
|
|
148
|
+
});
|
|
5
149
|
//# sourceMappingURL=POST.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"POST.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-auth-workos/bp-routes/refresh/POST.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,cAAc,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"POST.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-auth-workos/bp-routes/refresh/POST.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { title, description } from "./
|
|
1
|
+
export { title, description } from "./POST.js";
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-auth-workos/bp-routes/refresh/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-auth-workos/bp-routes/refresh/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { title, description } from "./
|
|
1
|
+
export { title, description } from "./POST.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-auth-workos/bp-routes/refresh/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-auth-workos/bp-routes/refresh/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@betterportal/auth-workos",
|
|
3
|
-
"version": "10.1.
|
|
3
|
+
"version": "10.1.65",
|
|
4
4
|
"description": "BetterPortal WorkOS auth service for Node.js",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "src/index.ts",
|
|
@@ -33,9 +33,9 @@
|
|
|
33
33
|
"typescript": "^6.0.3"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@betterportal/framework": "10.1.
|
|
37
|
-
"@betterportal/plugin-bsb": "10.1.
|
|
38
|
-
"@bsb/base": "^9.6.
|
|
36
|
+
"@betterportal/framework": "10.1.65",
|
|
37
|
+
"@betterportal/plugin-bsb": "10.1.65",
|
|
38
|
+
"@bsb/base": "^9.6.66",
|
|
39
39
|
"@workos-inc/node": "^10.7.0",
|
|
40
40
|
"anyvali": "^1.0.6",
|
|
41
41
|
"jsonwebtoken": "^9.0.2",
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import * as av from "anyvali";
|
|
2
|
-
import type { Infer } from "anyvali";
|
|
3
|
-
import { type ApiAuthRequirement, type BetterPortalRouteChrome, type CacheHints } from "@betterportal/framework";
|
|
4
|
-
export declare const QuerySchema: av.ObjectSchema<{
|
|
5
|
-
action: av.OptionalSchema<av.StringSchema>;
|
|
6
|
-
code: av.OptionalSchema<av.StringSchema>;
|
|
7
|
-
state: av.OptionalSchema<av.StringSchema>;
|
|
8
|
-
next: av.OptionalSchema<av.StringSchema>;
|
|
9
|
-
redirect: av.OptionalSchema<av.StringSchema>;
|
|
10
|
-
error: av.OptionalSchema<av.StringSchema>;
|
|
11
|
-
error_description: av.OptionalSchema<av.StringSchema>;
|
|
12
|
-
}>;
|
|
13
|
-
export declare const HeadersSchema: av.ObjectSchema<{}>;
|
|
14
|
-
export declare const ResponseSchema: av.ObjectSchema<{
|
|
15
|
-
status: av.EnumSchema<readonly ["ok", "error"]>;
|
|
16
|
-
message: av.OptionalSchema<av.StringSchema>;
|
|
17
|
-
authorizationUrl: av.OptionalSchema<av.StringSchema>;
|
|
18
|
-
loginUI: av.EnumSchema<readonly ["default", "clean", "redirect"]>;
|
|
19
|
-
alreadyLoggedIn: av.OptionalSchema<av.BoolSchema>;
|
|
20
|
-
loggedOut: av.OptionalSchema<av.BoolSchema>;
|
|
21
|
-
signedIn: av.OptionalSchema<av.BoolSchema>;
|
|
22
|
-
nextUrl: av.OptionalSchema<av.StringSchema>;
|
|
23
|
-
user: av.OptionalSchema<av.ObjectSchema<{
|
|
24
|
-
id: av.OptionalSchema<av.StringSchema>;
|
|
25
|
-
name: av.OptionalSchema<av.StringSchema>;
|
|
26
|
-
email: av.OptionalSchema<av.StringSchema>;
|
|
27
|
-
picture: av.OptionalSchema<av.StringSchema>;
|
|
28
|
-
}>>;
|
|
29
|
-
}>;
|
|
30
|
-
export type ResponseData = Infer<typeof ResponseSchema>;
|
|
31
|
-
export declare const title = "WorkOS Login";
|
|
32
|
-
export declare const description = "Authenticate with WorkOS AuthKit and store BetterPortal auth headers.";
|
|
33
|
-
export declare const role = "auth.login";
|
|
34
|
-
export declare const dependencies: string[];
|
|
35
|
-
export declare const chrome: BetterPortalRouteChrome;
|
|
36
|
-
export declare const auth: ApiAuthRequirement;
|
|
37
|
-
export declare const cacheHints: CacheHints;
|
|
38
|
-
export declare const handleGet: import("@betterportal/framework").RouteHandler<Record<string, string>, {
|
|
39
|
-
action?: string | undefined;
|
|
40
|
-
code?: string | undefined;
|
|
41
|
-
state?: string | undefined;
|
|
42
|
-
next?: string | undefined;
|
|
43
|
-
redirect?: string | undefined;
|
|
44
|
-
error?: string | undefined;
|
|
45
|
-
error_description?: string | undefined;
|
|
46
|
-
}, {}, Record<string, unknown>, {
|
|
47
|
-
status: "error" | "ok";
|
|
48
|
-
loginUI: "redirect" | "default" | "clean";
|
|
49
|
-
message?: string | undefined;
|
|
50
|
-
authorizationUrl?: string | undefined;
|
|
51
|
-
alreadyLoggedIn?: boolean | undefined;
|
|
52
|
-
loggedOut?: boolean | undefined;
|
|
53
|
-
signedIn?: boolean | undefined;
|
|
54
|
-
nextUrl?: string | undefined;
|
|
55
|
-
user?: {
|
|
56
|
-
id?: string | undefined;
|
|
57
|
-
name?: string | undefined;
|
|
58
|
-
email?: string | undefined;
|
|
59
|
-
picture?: string | undefined;
|
|
60
|
-
} | undefined;
|
|
61
|
-
}, unknown, Record<string, unknown>>;
|
|
62
|
-
//# sourceMappingURL=route.impl.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route.impl.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-auth-workos/bp-routes/login/route.impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AAOjC,eAAO,MAAM,WAAW;;;;;;;;EAQtB,CAAC;AAEH,eAAO,MAAM,aAAa,qBAAgB,CAAC;AAE3C,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;EAezB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAExD,eAAO,MAAM,KAAK,iBAAiB,CAAC;AACpC,eAAO,MAAM,WAAW,0EAA0E,CAAC;AACnG,eAAO,MAAM,IAAI,eAAe,CAAC;AACjC,eAAO,MAAM,YAAY,UAAkC,CAAC;AAC5D,eAAO,MAAM,MAAM,EAAE,uBAA8C,CAAC;AACpE,eAAO,MAAM,IAAI,EAAE,kBAAyD,CAAC;AAC7E,eAAO,MAAM,UAAU,EAAE,UAA0C,CAAC;AAYpE,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;oCA2HrB,CAAC"}
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import * as av from "anyvali";
|
|
2
|
-
import { createHandler, resolveAppAuthRedirect } from "@betterportal/framework";
|
|
3
|
-
import { resolveWorkOSAppConfig, workOSAccessTokenDetails } from "../../index.js";
|
|
4
|
-
export const QuerySchema = av.object({
|
|
5
|
-
action: av.optional(av.string()),
|
|
6
|
-
code: av.optional(av.string()),
|
|
7
|
-
state: av.optional(av.string()),
|
|
8
|
-
next: av.optional(av.string()),
|
|
9
|
-
redirect: av.optional(av.string()),
|
|
10
|
-
error: av.optional(av.string()),
|
|
11
|
-
error_description: av.optional(av.string())
|
|
12
|
-
});
|
|
13
|
-
export const HeadersSchema = av.object({});
|
|
14
|
-
export const ResponseSchema = av.object({
|
|
15
|
-
status: av.enum_(["ok", "error"]),
|
|
16
|
-
message: av.optional(av.string()),
|
|
17
|
-
authorizationUrl: av.optional(av.string()),
|
|
18
|
-
loginUI: av.enum_(["default", "clean", "redirect"]).default("default"),
|
|
19
|
-
alreadyLoggedIn: av.optional(av.bool()),
|
|
20
|
-
loggedOut: av.optional(av.bool()),
|
|
21
|
-
signedIn: av.optional(av.bool()),
|
|
22
|
-
nextUrl: av.optional(av.string()),
|
|
23
|
-
user: av.optional(av.object({
|
|
24
|
-
id: av.optional(av.string()),
|
|
25
|
-
name: av.optional(av.string()),
|
|
26
|
-
email: av.optional(av.string()),
|
|
27
|
-
picture: av.optional(av.string())
|
|
28
|
-
}))
|
|
29
|
-
});
|
|
30
|
-
export const title = "WorkOS Login";
|
|
31
|
-
export const description = "Authenticate with WorkOS AuthKit and store BetterPortal auth headers.";
|
|
32
|
-
export const role = "auth.login";
|
|
33
|
-
export const dependencies = ["auth.logout", "auth.refresh"];
|
|
34
|
-
export const chrome = { fullScreen: true };
|
|
35
|
-
export const auth = { required: false, permissions: [] };
|
|
36
|
-
export const cacheHints = { ttlSeconds: 0, varyBy: [] };
|
|
37
|
-
function pluginFrom(ctx) {
|
|
38
|
-
const plugin = ctx.plugin;
|
|
39
|
-
if (!plugin)
|
|
40
|
-
throw new Error("WorkOS plugin not available on handler context");
|
|
41
|
-
return plugin;
|
|
42
|
-
}
|
|
43
|
-
function firstString(...values) {
|
|
44
|
-
return values.find((value) => typeof value === "string" && value.trim().length > 0)?.trim();
|
|
45
|
-
}
|
|
46
|
-
export const handleGet = createHandler({ response: ResponseSchema, query: QuerySchema, headers: HeadersSchema }, async (ctx) => {
|
|
47
|
-
const query = ctx.query;
|
|
48
|
-
const config = resolveWorkOSAppConfig(ctx.config);
|
|
49
|
-
const nextUrl = resolveAppAuthRedirect(ctx, "afterLogin", query.state ?? query.next ?? query.redirect);
|
|
50
|
-
if (query.action === "logout") {
|
|
51
|
-
ctx.bpHeaders?.remove("Authorization");
|
|
52
|
-
ctx.bpHeaders?.remove("X-BP-Refresh");
|
|
53
|
-
if (ctx.serviceId)
|
|
54
|
-
ctx.responseHeaders?.set("HX-Trigger", `bp:fragments:${ctx.serviceId}`);
|
|
55
|
-
return {
|
|
56
|
-
status: "ok",
|
|
57
|
-
message: "Signed out.",
|
|
58
|
-
loginUI: config?.loginUI ?? "default",
|
|
59
|
-
loggedOut: true,
|
|
60
|
-
nextUrl: resolveAppAuthRedirect(ctx, "afterLogout")
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
if (!config) {
|
|
64
|
-
return { status: "error", message: "WorkOS config is missing clientId or apiKey.", loginUI: "default", nextUrl };
|
|
65
|
-
}
|
|
66
|
-
if (query.error) {
|
|
67
|
-
return {
|
|
68
|
-
status: "error",
|
|
69
|
-
message: query.error_description || query.error,
|
|
70
|
-
loginUI: config.loginUI ?? "default",
|
|
71
|
-
nextUrl
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
if (query.code) {
|
|
75
|
-
try {
|
|
76
|
-
const auth = await pluginFrom(ctx).authenticateWithCode(config, query.code);
|
|
77
|
-
const details = workOSAccessTokenDetails(auth.accessToken, config.roleClaimPath ?? "roles");
|
|
78
|
-
if (!details)
|
|
79
|
-
throw new Error("WorkOS access token is missing its session id.");
|
|
80
|
-
if (auth.organizationId && details.organizationId && auth.organizationId !== details.organizationId) {
|
|
81
|
-
throw new Error("WorkOS organization does not match the access token.");
|
|
82
|
-
}
|
|
83
|
-
const organizationId = auth.organizationId ?? details.organizationId;
|
|
84
|
-
const issued = pluginFrom(ctx).issueTokenPair({
|
|
85
|
-
sub: auth.user.id,
|
|
86
|
-
tenantId: ctx.tenant.id,
|
|
87
|
-
appId: ctx.app.id,
|
|
88
|
-
roles: details.roles,
|
|
89
|
-
authProvider: "workos",
|
|
90
|
-
refreshContext: {
|
|
91
|
-
providerToken: auth.refreshToken,
|
|
92
|
-
sessionId: details.sessionId,
|
|
93
|
-
...(organizationId ? { organizationId } : {})
|
|
94
|
-
},
|
|
95
|
-
providerSubject: auth.user.id,
|
|
96
|
-
provider: {
|
|
97
|
-
accountId: auth.user.id,
|
|
98
|
-
scope: organizationId ? `organization:${organizationId}` : undefined
|
|
99
|
-
},
|
|
100
|
-
name: firstString(auth.user.name, [auth.user.firstName, auth.user.lastName].filter(Boolean).join(" ")),
|
|
101
|
-
email: auth.user.email,
|
|
102
|
-
picture: auth.user.profilePictureUrl ?? undefined
|
|
103
|
-
});
|
|
104
|
-
if (!issued.refreshToken)
|
|
105
|
-
throw new Error("Auth token issuer did not return a refresh token");
|
|
106
|
-
ctx.bpHeaders?.set("Authorization", `Bearer ${issued.accessToken}`, {
|
|
107
|
-
locked: true,
|
|
108
|
-
expiresInSeconds: issued.accessTokenExpiresInSeconds,
|
|
109
|
-
refreshPath: "/refresh",
|
|
110
|
-
refreshBeforeSeconds: 60
|
|
111
|
-
});
|
|
112
|
-
ctx.bpHeaders?.set("X-BP-Refresh", issued.refreshToken, {
|
|
113
|
-
locked: true,
|
|
114
|
-
scopeToOwner: true,
|
|
115
|
-
expiresInSeconds: issued.refreshTokenExpiresInSeconds
|
|
116
|
-
});
|
|
117
|
-
ctx.responseHeaders?.set("HX-Redirect", nextUrl);
|
|
118
|
-
if (ctx.serviceId)
|
|
119
|
-
ctx.responseHeaders?.set("HX-Trigger", `bp:fragments:${ctx.serviceId}`);
|
|
120
|
-
return {
|
|
121
|
-
status: "ok",
|
|
122
|
-
message: "Signed in.",
|
|
123
|
-
loginUI: config.loginUI ?? "default",
|
|
124
|
-
signedIn: true,
|
|
125
|
-
nextUrl,
|
|
126
|
-
user: {
|
|
127
|
-
id: auth.user.id,
|
|
128
|
-
name: firstString(auth.user.name, [auth.user.firstName, auth.user.lastName].filter(Boolean).join(" ")),
|
|
129
|
-
email: auth.user.email,
|
|
130
|
-
picture: auth.user.profilePictureUrl ?? undefined
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
catch (error) {
|
|
135
|
-
ctx.obs?.error(error);
|
|
136
|
-
return { status: "error", message: `WorkOS sign in failed: ${error.message}`, loginUI: config.loginUI ?? "default", nextUrl };
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
if (ctx.user) {
|
|
140
|
-
return {
|
|
141
|
-
status: "ok",
|
|
142
|
-
message: "Already signed in.",
|
|
143
|
-
loginUI: config.loginUI ?? "default",
|
|
144
|
-
alreadyLoggedIn: true,
|
|
145
|
-
nextUrl,
|
|
146
|
-
user: {
|
|
147
|
-
id: ctx.user.sub,
|
|
148
|
-
name: ctx.user.name,
|
|
149
|
-
email: ctx.user.email,
|
|
150
|
-
picture: ctx.user.picture
|
|
151
|
-
}
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
const redirectUri = ctx.uiRouteUrl?.("login.index", { absolute: true }) ??
|
|
155
|
-
ctx.routeUrl?.("login.index", { absolute: true }) ??
|
|
156
|
-
"/login";
|
|
157
|
-
return {
|
|
158
|
-
status: "ok",
|
|
159
|
-
message: "Continue to WorkOS.",
|
|
160
|
-
loginUI: config.loginUI ?? "default",
|
|
161
|
-
authorizationUrl: pluginFrom(ctx).getAuthorizationUrl(config, { redirectUri, state: nextUrl }),
|
|
162
|
-
nextUrl
|
|
163
|
-
};
|
|
164
|
-
});
|
|
165
|
-
//# sourceMappingURL=route.impl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route.impl.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-auth-workos/bp-routes/login/route.impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import * as av from "anyvali";
|
|
2
|
-
import type { Infer } from "anyvali";
|
|
3
|
-
import { type ApiAuthRequirement, type CacheHints } from "@betterportal/framework";
|
|
4
|
-
export declare const QuerySchema: av.ObjectSchema<{
|
|
5
|
-
next: av.OptionalSchema<av.StringSchema>;
|
|
6
|
-
redirect: av.OptionalSchema<av.StringSchema>;
|
|
7
|
-
}>;
|
|
8
|
-
export declare const ResponseSchema: av.ObjectSchema<{
|
|
9
|
-
status: av.EnumSchema<readonly ["ok"]>;
|
|
10
|
-
message: av.StringSchema;
|
|
11
|
-
nextUrl: av.StringSchema;
|
|
12
|
-
}>;
|
|
13
|
-
export type ResponseData = Infer<typeof ResponseSchema>;
|
|
14
|
-
export declare const title = "WorkOS Logout";
|
|
15
|
-
export declare const description = "Clear the stored WorkOS bearer token.";
|
|
16
|
-
export declare const role = "auth.logout";
|
|
17
|
-
export declare const auth: ApiAuthRequirement;
|
|
18
|
-
export declare const cacheHints: CacheHints;
|
|
19
|
-
export declare const handleGet: import("@betterportal/framework").RouteHandler<Record<string, string>, {
|
|
20
|
-
next?: string | undefined;
|
|
21
|
-
redirect?: string | undefined;
|
|
22
|
-
}, Record<string, string>, Record<string, unknown>, {
|
|
23
|
-
status: "ok";
|
|
24
|
-
message: string;
|
|
25
|
-
nextUrl: string;
|
|
26
|
-
}, unknown, Record<string, unknown>>;
|
|
27
|
-
//# sourceMappingURL=route.impl.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route.impl.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-auth-workos/bp-routes/logout/route.impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAyC,KAAK,kBAAkB,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1H,eAAO,MAAM,WAAW;;;EAGtB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;EAIzB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAExD,eAAO,MAAM,KAAK,kBAAkB,CAAC;AACrC,eAAO,MAAM,WAAW,0CAA0C,CAAC;AACnE,eAAO,MAAM,IAAI,gBAAgB,CAAC;AAClC,eAAO,MAAM,IAAI,EAAE,kBAAyD,CAAC;AAC7E,eAAO,MAAM,UAAU,EAAE,UAA0C,CAAC;AAEpE,eAAO,MAAM,SAAS;;;;;;;oCAWrB,CAAC"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import * as av from "anyvali";
|
|
2
|
-
import { createHandler, resolveAppAuthRedirect } from "@betterportal/framework";
|
|
3
|
-
export const QuerySchema = av.object({
|
|
4
|
-
next: av.optional(av.string()),
|
|
5
|
-
redirect: av.optional(av.string())
|
|
6
|
-
});
|
|
7
|
-
export const ResponseSchema = av.object({
|
|
8
|
-
status: av.enum_(["ok"]),
|
|
9
|
-
message: av.string(),
|
|
10
|
-
nextUrl: av.string()
|
|
11
|
-
});
|
|
12
|
-
export const title = "WorkOS Logout";
|
|
13
|
-
export const description = "Clear the stored WorkOS bearer token.";
|
|
14
|
-
export const role = "auth.logout";
|
|
15
|
-
export const auth = { required: false, permissions: [] };
|
|
16
|
-
export const cacheHints = { ttlSeconds: 0, varyBy: [] };
|
|
17
|
-
export const handleGet = createHandler({ response: ResponseSchema, query: QuerySchema }, (ctx) => {
|
|
18
|
-
const query = ctx.query;
|
|
19
|
-
const nextUrl = resolveAppAuthRedirect(ctx, "afterLogout", query.next ?? query.redirect);
|
|
20
|
-
ctx.bpHeaders?.remove("Authorization");
|
|
21
|
-
ctx.bpHeaders?.remove("X-BP-Refresh");
|
|
22
|
-
ctx.responseHeaders?.set("HX-Location", "/login?action=logout");
|
|
23
|
-
if (ctx.serviceId)
|
|
24
|
-
ctx.responseHeaders?.set("HX-Trigger", `bp:fragments:${ctx.serviceId}`);
|
|
25
|
-
return { status: "ok", message: "Signed out.", nextUrl };
|
|
26
|
-
});
|
|
27
|
-
//# sourceMappingURL=route.impl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route.impl.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-auth-workos/bp-routes/logout/route.impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAA4C,MAAM,yBAAyB,CAAC;AAE1H,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;IAC9B,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;CACnC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC,MAAM,CAAC;IACtC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAU,CAAC;IACjC,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE;IACpB,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE;CACrB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAAC;AACrC,MAAM,CAAC,MAAM,WAAW,GAAG,uCAAuC,CAAC;AACnE,MAAM,CAAC,MAAM,IAAI,GAAG,aAAa,CAAC;AAClC,MAAM,CAAC,MAAM,IAAI,GAAuB,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;AAC7E,MAAM,CAAC,MAAM,UAAU,GAAe,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AAEpE,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,CACpC,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,EAChD,CAAC,GAAG,EAAE,EAAE;IACN,MAAM,KAAK,GAAG,GAAG,CAAC,KAAkC,CAAC;IACrD,MAAM,OAAO,GAAG,sBAAsB,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzF,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IACvC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IACtC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;IAChE,IAAI,GAAG,CAAC,SAAS;QAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,YAAY,EAAE,gBAAgB,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3F,OAAO,EAAE,MAAM,EAAE,IAAa,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;AACpE,CAAC,CACF,CAAC"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import * as av from "anyvali";
|
|
2
|
-
import type { Infer } from "anyvali";
|
|
3
|
-
import { type ApiAuthRequirement, type CacheHints } from "@betterportal/framework";
|
|
4
|
-
export declare const HeadersSchema: av.ObjectSchema<{
|
|
5
|
-
"x-bp-refresh": av.OptionalSchema<av.StringSchema>;
|
|
6
|
-
}>;
|
|
7
|
-
export declare const RequestSchema: av.ObjectSchema<{
|
|
8
|
-
refreshToken: av.OptionalSchema<av.StringSchema>;
|
|
9
|
-
}>;
|
|
10
|
-
export declare const ResponseSchema: av.ObjectSchema<{
|
|
11
|
-
status: av.EnumSchema<readonly ["ok", "error"]>;
|
|
12
|
-
message: av.OptionalSchema<av.StringSchema>;
|
|
13
|
-
accessToken: av.OptionalSchema<av.StringSchema>;
|
|
14
|
-
expiresInSeconds: av.OptionalSchema<av.IntSchema>;
|
|
15
|
-
}>;
|
|
16
|
-
export type ResponseData = Infer<typeof ResponseSchema>;
|
|
17
|
-
export declare const title = "WorkOS Refresh";
|
|
18
|
-
export declare const description = "Refresh BetterPortal tokens using a WorkOS-backed BP refresh token.";
|
|
19
|
-
export declare const role = "auth.refresh";
|
|
20
|
-
export declare const auth: ApiAuthRequirement;
|
|
21
|
-
export declare const cacheHints: CacheHints;
|
|
22
|
-
export declare const handlePost: import("@betterportal/framework").RouteHandler<Record<string, string>, Record<string, unknown>, {
|
|
23
|
-
"x-bp-refresh"?: string | undefined;
|
|
24
|
-
}, {
|
|
25
|
-
refreshToken?: string | undefined;
|
|
26
|
-
}, {
|
|
27
|
-
status: "error" | "ok";
|
|
28
|
-
message?: string | undefined;
|
|
29
|
-
accessToken?: string | undefined;
|
|
30
|
-
expiresInSeconds?: number | undefined;
|
|
31
|
-
}, unknown, Record<string, unknown>>;
|
|
32
|
-
//# sourceMappingURL=route.impl.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route.impl.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-auth-workos/bp-routes/refresh/route.impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AAQjC,eAAO,MAAM,aAAa;;EAExB,CAAC;AAEH,eAAO,MAAM,aAAa;;EAExB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;EAKzB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAExD,eAAO,MAAM,KAAK,mBAAmB,CAAC;AACtC,eAAO,MAAM,WAAW,wEAAwE,CAAC;AACjG,eAAO,MAAM,IAAI,iBAAiB,CAAC;AACnC,eAAO,MAAM,IAAI,EAAE,kBAAyD,CAAC;AAC7E,eAAO,MAAM,UAAU,EAAE,UAA0C,CAAC;AAapE,eAAO,MAAM,UAAU;;;;;;;;;oCAyHtB,CAAC"}
|