@seamless-auth/core 0.10.0 → 0.11.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/README.md +50 -6
- package/dist/apiContract.d.ts +41 -0
- package/dist/apiContract.d.ts.map +1 -0
- package/dist/apiContract.js +48 -0
- package/dist/apiContract.js.map +1 -0
- package/dist/applyResult.d.ts +100 -0
- package/dist/applyResult.d.ts.map +1 -0
- package/dist/applyResult.js +95 -0
- package/dist/applyResult.js.map +1 -0
- package/dist/authMessaging.d.ts +14 -52
- package/dist/authMessaging.d.ts.map +1 -1
- package/dist/deliverAuthMessage.d.ts +15 -0
- package/dist/deliverAuthMessage.d.ts.map +1 -0
- package/dist/deliverAuthMessage.js +123 -0
- package/dist/deliverAuthMessage.js.map +1 -0
- package/dist/ensureCookies.d.ts +2 -2
- package/dist/ensureCookies.d.ts.map +1 -1
- package/dist/ensureCookies.js +5 -5
- package/dist/ensureCookies.js.map +1 -1
- package/dist/getSeamlessUser.d.ts +9 -8
- package/dist/getSeamlessUser.d.ts.map +1 -1
- package/dist/getSeamlessUser.js.map +1 -1
- package/dist/guards.d.ts +73 -0
- package/dist/guards.d.ts.map +1 -0
- package/dist/guards.js +115 -0
- package/dist/guards.js.map +1 -0
- package/dist/handlers/admin.d.ts +4 -3
- package/dist/handlers/admin.d.ts.map +1 -1
- package/dist/handlers/admin.js +4 -10
- package/dist/handlers/admin.js.map +1 -1
- package/dist/handlers/finishLogin.d.ts +2 -2
- package/dist/handlers/finishLogin.d.ts.map +1 -1
- package/dist/handlers/finishLogin.js +10 -37
- package/dist/handlers/finishLogin.js.map +1 -1
- package/dist/handlers/finishRegister.d.ts +2 -2
- package/dist/handlers/finishRegister.d.ts.map +1 -1
- package/dist/handlers/finishRegister.js +10 -34
- package/dist/handlers/finishRegister.js.map +1 -1
- package/dist/handlers/internalMetrics.d.ts +4 -3
- package/dist/handlers/internalMetrics.d.ts.map +1 -1
- package/dist/handlers/internalMetrics.js +4 -10
- package/dist/handlers/internalMetrics.js.map +1 -1
- package/dist/handlers/login.d.ts +2 -2
- package/dist/handlers/login.d.ts.map +1 -1
- package/dist/handlers/login.js +6 -9
- package/dist/handlers/login.js.map +1 -1
- package/dist/handlers/logout.d.ts.map +1 -1
- package/dist/handlers/logout.js.map +1 -1
- package/dist/handlers/me.d.ts +2 -2
- package/dist/handlers/me.d.ts.map +1 -1
- package/dist/handlers/me.js +1 -1
- package/dist/handlers/me.js.map +1 -1
- package/dist/handlers/oauthHandlers.d.ts +10 -6
- package/dist/handlers/oauthHandlers.d.ts.map +1 -1
- package/dist/handlers/oauthHandlers.js +12 -39
- package/dist/handlers/oauthHandlers.js.map +1 -1
- package/dist/handlers/pollMagicLinkConfirmationHandler.d.ts +2 -2
- package/dist/handlers/pollMagicLinkConfirmationHandler.d.ts.map +1 -1
- package/dist/handlers/pollMagicLinkConfirmationHandler.js +10 -37
- package/dist/handlers/pollMagicLinkConfirmationHandler.js.map +1 -1
- package/dist/handlers/register.d.ts +2 -2
- package/dist/handlers/register.d.ts.map +1 -1
- package/dist/handlers/register.js +4 -4
- package/dist/handlers/register.js.map +1 -1
- package/dist/handlers/requestMagicLinkHandler.d.ts +2 -2
- package/dist/handlers/requestMagicLinkHandler.d.ts.map +1 -1
- package/dist/handlers/requestMagicLinkHandler.js +4 -4
- package/dist/handlers/requestMagicLinkHandler.js.map +1 -1
- package/dist/handlers/requestOtpHandler.d.ts +2 -2
- package/dist/handlers/requestOtpHandler.d.ts.map +1 -1
- package/dist/handlers/requestOtpHandler.js +4 -4
- package/dist/handlers/requestOtpHandler.js.map +1 -1
- package/dist/handlers/sessions.d.ts +2 -2
- package/dist/handlers/sessions.d.ts.map +1 -1
- package/dist/handlers/sessions.js +2 -1
- package/dist/handlers/sessions.js.map +1 -1
- package/dist/handlers/switchOrganizationHandler.d.ts +2 -2
- package/dist/handlers/switchOrganizationHandler.d.ts.map +1 -1
- package/dist/handlers/switchOrganizationHandler.js +9 -28
- package/dist/handlers/switchOrganizationHandler.js.map +1 -1
- package/dist/handlers/systemConfig.d.ts +2 -2
- package/dist/handlers/systemConfig.d.ts.map +1 -1
- package/dist/handlers/systemConfig.js +4 -3
- package/dist/handlers/systemConfig.js.map +1 -1
- package/dist/handlers/verifyLoginOtpHandler.d.ts +2 -2
- package/dist/handlers/verifyLoginOtpHandler.d.ts.map +1 -1
- package/dist/handlers/verifyLoginOtpHandler.js +10 -37
- package/dist/handlers/verifyLoginOtpHandler.js.map +1 -1
- package/dist/handlers/verifyMagicLinkHandler.d.ts +2 -2
- package/dist/handlers/verifyMagicLinkHandler.d.ts.map +1 -1
- package/dist/handlers/verifyMagicLinkHandler.js +2 -1
- package/dist/handlers/verifyMagicLinkHandler.js.map +1 -1
- package/dist/index.d.ts +15 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -1
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +26 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +24 -0
- package/dist/logger.js.map +1 -0
- package/dist/proxyRequest.d.ts +62 -0
- package/dist/proxyRequest.d.ts.map +1 -0
- package/dist/proxyRequest.js +82 -0
- package/dist/proxyRequest.js.map +1 -0
- package/dist/redaction.d.ts.map +1 -1
- package/dist/redaction.js +8 -2
- package/dist/redaction.js.map +1 -1
- package/dist/refreshAccessToken.d.ts.map +1 -1
- package/dist/refreshAccessToken.js.map +1 -1
- package/dist/result.d.ts +23 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js +2 -0
- package/dist/result.js.map +1 -0
- package/dist/upstreamError.d.ts +31 -0
- package/dist/upstreamError.d.ts.map +1 -0
- package/dist/upstreamError.js +49 -0
- package/dist/upstreamError.js.map +1 -0
- package/dist/upstreamSession.d.ts +53 -0
- package/dist/upstreamSession.d.ts.map +1 -0
- package/dist/upstreamSession.js +56 -0
- package/dist/upstreamSession.js.map +1 -0
- package/dist/verifySignedAuthResponse.d.ts.map +1 -1
- package/dist/verifySignedAuthResponse.js +2 -1
- package/dist/verifySignedAuthResponse.js.map +1 -1
- package/package.json +2 -1
- package/dist/scopedRoles.d.ts +0 -3
- package/dist/scopedRoles.d.ts.map +0 -1
- package/dist/scopedRoles.js +0 -39
- package/dist/scopedRoles.js.map +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import type { ResultFailure } from "../result.js";
|
|
1
2
|
type BaseOpts = {
|
|
2
3
|
authServerUrl: string;
|
|
3
4
|
authorization?: string;
|
|
4
5
|
serviceAuthorization?: string;
|
|
5
6
|
forwardedClientIp?: string;
|
|
6
7
|
};
|
|
7
|
-
type Result = {
|
|
8
|
+
type Result = ResultFailure & {
|
|
8
9
|
status: number;
|
|
9
10
|
body?: any;
|
|
10
|
-
error?: string;
|
|
11
11
|
};
|
|
12
12
|
export declare const listSessionsHandler: (opts: BaseOpts) => Promise<Result>;
|
|
13
13
|
export declare const revokeSessionHandler: (id: string, opts: BaseOpts) => Promise<Result>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/handlers/sessions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/handlers/sessions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,KAAK,QAAQ,GAAG;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,KAAK,MAAM,GAAG,aAAa,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,CAAC;AA6BF,eAAO,MAAM,mBAAmB,GAAI,MAAM,QAAQ,oBACf,CAAC;AAEpC,eAAO,MAAM,oBAAoB,GAAI,IAAI,MAAM,EAAE,MAAM,QAAQ,oBACC,CAAC;AAEjE,eAAO,MAAM,wBAAwB,GAAI,MAAM,QAAQ,oBACjB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { authFetch } from "../authFetch.js";
|
|
2
|
+
import { readUpstreamFailure } from "../upstreamError.js";
|
|
2
3
|
async function request(method, path, opts) {
|
|
3
4
|
const up = await authFetch(`${opts.authServerUrl}${path}`, {
|
|
4
5
|
method,
|
|
@@ -10,7 +11,7 @@ async function request(method, path, opts) {
|
|
|
10
11
|
if (!up.ok) {
|
|
11
12
|
return {
|
|
12
13
|
status: up.status,
|
|
13
|
-
|
|
14
|
+
...readUpstreamFailure(data, "session_request_failed"),
|
|
14
15
|
};
|
|
15
16
|
}
|
|
16
17
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/handlers/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/handlers/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAc1D,KAAK,UAAU,OAAO,CACpB,MAAwB,EACxB,IAAY,EACZ,IAAc;IAEd,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,EAAE,EAAE;QACzD,MAAM;QACN,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;KAC1C,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,GAAG,mBAAmB,CAAC,IAAI,EAAE,wBAAwB,CAAC;SACvD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAc,EAAE,EAAE,CACpD,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AAEpC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EAAU,EAAE,IAAc,EAAE,EAAE,CACjE,OAAO,CAAC,QAAQ,EAAE,aAAa,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAEjE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,IAAc,EAAE,EAAE,CACzD,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ResultFailure } from "../result.js";
|
|
1
2
|
import type { CookiePayload } from "../ensureCookies.js";
|
|
2
3
|
export interface SwitchOrganizationInput {
|
|
3
4
|
organizationId: string;
|
|
@@ -11,10 +12,9 @@ export interface SwitchOrganizationOptions {
|
|
|
11
12
|
cookieDomain?: string;
|
|
12
13
|
accessCookieName: string;
|
|
13
14
|
}
|
|
14
|
-
export interface SwitchOrganizationResult {
|
|
15
|
+
export interface SwitchOrganizationResult extends ResultFailure {
|
|
15
16
|
status: number;
|
|
16
17
|
body?: unknown;
|
|
17
|
-
error?: unknown;
|
|
18
18
|
setCookies?: {
|
|
19
19
|
name: string;
|
|
20
20
|
value: CookiePayload;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchOrganizationHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/switchOrganizationHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"switchOrganizationHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/switchOrganizationHandler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAyB,SAAQ,aAAa;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,aAAa,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL;AAED,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,uBAAuB,EAC9B,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,CAqCnC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { authFetch } from "../authFetch.js";
|
|
2
|
-
import {
|
|
2
|
+
import { issueSessionCookies } from "../upstreamSession.js";
|
|
3
|
+
import { readPassthroughFailure } from "../upstreamError.js";
|
|
3
4
|
export async function switchOrganizationHandler(input, opts) {
|
|
4
5
|
const up = await authFetch(`${opts.authServerUrl}/organizations/${encodeURIComponent(input.organizationId)}/switch`, {
|
|
5
6
|
method: "POST",
|
|
@@ -11,7 +12,7 @@ export async function switchOrganizationHandler(input, opts) {
|
|
|
11
12
|
if (!up.ok) {
|
|
12
13
|
return {
|
|
13
14
|
status: up.status,
|
|
14
|
-
|
|
15
|
+
...readPassthroughFailure(data),
|
|
15
16
|
};
|
|
16
17
|
}
|
|
17
18
|
if (!data?.token || !data?.sub) {
|
|
@@ -20,35 +21,15 @@ export async function switchOrganizationHandler(input, opts) {
|
|
|
20
21
|
body: data,
|
|
21
22
|
};
|
|
22
23
|
}
|
|
23
|
-
const verifiedAccessToken = await verifySignedAuthResponse(data.token, opts.authServerUrl, opts.audience);
|
|
24
|
-
if (!verifiedAccessToken) {
|
|
25
|
-
throw new Error("Invalid signed response from Auth Server");
|
|
26
|
-
}
|
|
27
|
-
if (verifiedAccessToken.sub !== data.sub) {
|
|
28
|
-
throw new Error("Signature mismatch with data payload");
|
|
29
|
-
}
|
|
30
|
-
const sessionId = typeof verifiedAccessToken.sid === "string"
|
|
31
|
-
? verifiedAccessToken.sid
|
|
32
|
-
: undefined;
|
|
33
24
|
return {
|
|
34
25
|
status: up.status,
|
|
35
26
|
body: data,
|
|
36
|
-
setCookies:
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
token: data.token,
|
|
43
|
-
roles: data.roles,
|
|
44
|
-
email: data.email,
|
|
45
|
-
phone: data.phone,
|
|
46
|
-
organizationId: data.organizationId ?? null,
|
|
47
|
-
},
|
|
48
|
-
ttl: data.ttl,
|
|
49
|
-
domain: opts.cookieDomain,
|
|
50
|
-
},
|
|
51
|
-
],
|
|
27
|
+
setCookies: await issueSessionCookies(data, {
|
|
28
|
+
authServerUrl: opts.authServerUrl,
|
|
29
|
+
audience: opts.audience,
|
|
30
|
+
accessCookieName: opts.accessCookieName,
|
|
31
|
+
cookieDomain: opts.cookieDomain,
|
|
32
|
+
}),
|
|
52
33
|
};
|
|
53
34
|
}
|
|
54
35
|
//# sourceMappingURL=switchOrganizationHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchOrganizationHandler.js","sourceRoot":"","sources":["../../src/handlers/switchOrganizationHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"switchOrganizationHandler.js","sourceRoot":"","sources":["../../src/handlers/switchOrganizationHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AA6B7D,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,KAA8B,EAC9B,IAA+B;IAE/B,MAAM,EAAE,GAAG,MAAM,SAAS,CACxB,GAAG,IAAI,CAAC,aAAa,kBAAkB,kBAAkB,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EACxF;QACE,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;KAC3C,CACF,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,GAAG,sBAAsB,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;QAC/B,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,MAAM,mBAAmB,CAAC,IAAI,EAAE;YAC1C,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;KACH,CAAC;AACJ,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import type { ResultFailure } from "../result.js";
|
|
1
2
|
export interface SystemConfigOptions {
|
|
2
3
|
authServerUrl: string;
|
|
3
4
|
authorization?: string;
|
|
4
5
|
serviceAuthorization?: string;
|
|
5
6
|
forwardedClientIp?: string;
|
|
6
7
|
}
|
|
7
|
-
export interface SystemConfigResult {
|
|
8
|
+
export interface SystemConfigResult extends ResultFailure {
|
|
8
9
|
status: number;
|
|
9
10
|
body?: any;
|
|
10
|
-
error?: string;
|
|
11
11
|
}
|
|
12
12
|
export declare function getAvailableRolesHandler(opts: SystemConfigOptions): Promise<SystemConfigResult>;
|
|
13
13
|
export declare function getSystemConfigAdminHandler(opts: SystemConfigOptions): Promise<SystemConfigResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systemConfig.d.ts","sourceRoot":"","sources":["../../src/handlers/systemConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"systemConfig.d.ts","sourceRoot":"","sources":["../../src/handlers/systemConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAqB7B;AAED,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAqB7B;AAED,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,mBAAmB,GAAG;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,GAC3C,OAAO,CAAC,kBAAkB,CAAC,CAsB7B"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { authFetch } from "../authFetch.js";
|
|
2
|
+
import { readUpstreamFailure } from "../upstreamError.js";
|
|
2
3
|
export async function getAvailableRolesHandler(opts) {
|
|
3
4
|
const up = await authFetch(`${opts.authServerUrl}/system-config/roles`, {
|
|
4
5
|
method: "GET",
|
|
@@ -10,7 +11,7 @@ export async function getAvailableRolesHandler(opts) {
|
|
|
10
11
|
if (!up.ok) {
|
|
11
12
|
return {
|
|
12
13
|
status: up.status,
|
|
13
|
-
|
|
14
|
+
...readUpstreamFailure(data, "failed_to_fetch_roles"),
|
|
14
15
|
};
|
|
15
16
|
}
|
|
16
17
|
return {
|
|
@@ -29,7 +30,7 @@ export async function getSystemConfigAdminHandler(opts) {
|
|
|
29
30
|
if (!up.ok) {
|
|
30
31
|
return {
|
|
31
32
|
status: up.status,
|
|
32
|
-
|
|
33
|
+
...readUpstreamFailure(data, "failed_to_fetch_config"),
|
|
33
34
|
};
|
|
34
35
|
}
|
|
35
36
|
return {
|
|
@@ -49,7 +50,7 @@ export async function updateSystemConfigHandler(opts) {
|
|
|
49
50
|
if (!up.ok) {
|
|
50
51
|
return {
|
|
51
52
|
status: up.status,
|
|
52
|
-
|
|
53
|
+
...readUpstreamFailure(data, "failed_to_update_config"),
|
|
53
54
|
};
|
|
54
55
|
}
|
|
55
56
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systemConfig.js","sourceRoot":"","sources":["../../src/handlers/systemConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"systemConfig.js","sourceRoot":"","sources":["../../src/handlers/systemConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAc1D,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,IAAyB;IAEzB,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,sBAAsB,EAAE;QACtE,MAAM,EAAE,KAAK;QACb,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;KAC1C,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,GAAG,mBAAmB,CAAC,IAAI,EAAE,uBAAuB,CAAC;SACtD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAAyB;IAEzB,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,sBAAsB,EAAE;QACtE,MAAM,EAAE,KAAK;QACb,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;KAC1C,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,GAAG,mBAAmB,CAAC,IAAI,EAAE,wBAAwB,CAAC;SACvD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAA4C;IAE5C,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,sBAAsB,EAAE;QACtE,MAAM,EAAE,OAAO;QACf,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,IAAI,EAAE,IAAI,CAAC,OAAO;QAClB,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;KAC1C,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,GAAG,mBAAmB,CAAC,IAAI,EAAE,yBAAyB,CAAC;SACxD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ResultFailure } from "../result.js";
|
|
1
2
|
import type { CookiePayload } from "../ensureCookies.js";
|
|
2
3
|
export interface VerifyLoginOtpInput {
|
|
3
4
|
body: unknown;
|
|
@@ -13,10 +14,9 @@ export interface VerifyLoginOtpOptions {
|
|
|
13
14
|
accessCookieName: string;
|
|
14
15
|
refreshCookieName: string;
|
|
15
16
|
}
|
|
16
|
-
export interface VerifyLoginOtpResult {
|
|
17
|
+
export interface VerifyLoginOtpResult extends ResultFailure {
|
|
17
18
|
status: number;
|
|
18
19
|
body?: unknown;
|
|
19
|
-
error?: unknown;
|
|
20
20
|
setCookies?: {
|
|
21
21
|
name: string;
|
|
22
22
|
value: CookiePayload;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyLoginOtpHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/verifyLoginOtpHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verifyLoginOtpHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/verifyLoginOtpHandler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,aAAa,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL;AAiDD,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CAO/B;AAED,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CAK/B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { authFetch } from "../authFetch.js";
|
|
2
|
-
import {
|
|
2
|
+
import { issueSessionCookies } from "../upstreamSession.js";
|
|
3
|
+
import { readPassthroughFailure } from "../upstreamError.js";
|
|
3
4
|
// Shared by the login and registration OTP verify handlers: POST to the given
|
|
4
5
|
// auth-server path and, when the response carries a session, validate the signed
|
|
5
6
|
// access token and build the session cookies. Registration can complete without
|
|
@@ -17,7 +18,7 @@ async function verifyOtp(path, input, opts) {
|
|
|
17
18
|
if (!up.ok) {
|
|
18
19
|
return {
|
|
19
20
|
status: up.status,
|
|
20
|
-
|
|
21
|
+
...readPassthroughFailure(data),
|
|
21
22
|
};
|
|
22
23
|
}
|
|
23
24
|
if (!data?.token) {
|
|
@@ -26,44 +27,16 @@ async function verifyOtp(path, input, opts) {
|
|
|
26
27
|
body: data,
|
|
27
28
|
};
|
|
28
29
|
}
|
|
29
|
-
const verifiedAccessToken = await verifySignedAuthResponse(data.token, opts.authServerUrl, opts.audience);
|
|
30
|
-
if (!verifiedAccessToken) {
|
|
31
|
-
throw new Error("Invalid signed response from Auth Server");
|
|
32
|
-
}
|
|
33
|
-
if (verifiedAccessToken.sub !== data.sub) {
|
|
34
|
-
throw new Error("Signature mismatch with data payload");
|
|
35
|
-
}
|
|
36
|
-
const sessionId = typeof verifiedAccessToken.sid === "string"
|
|
37
|
-
? verifiedAccessToken.sid
|
|
38
|
-
: undefined;
|
|
39
30
|
return {
|
|
40
31
|
status: up.status,
|
|
41
32
|
body: data,
|
|
42
|
-
setCookies:
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
roles: data.roles,
|
|
50
|
-
email: data.email,
|
|
51
|
-
phone: data.phone,
|
|
52
|
-
organizationId: data.organizationId ?? null,
|
|
53
|
-
},
|
|
54
|
-
ttl: data.ttl,
|
|
55
|
-
domain: opts.cookieDomain,
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
name: opts.refreshCookieName,
|
|
59
|
-
value: {
|
|
60
|
-
sub: data.sub,
|
|
61
|
-
refreshToken: data.refreshToken,
|
|
62
|
-
},
|
|
63
|
-
ttl: data.refreshTtl,
|
|
64
|
-
domain: opts.cookieDomain,
|
|
65
|
-
},
|
|
66
|
-
],
|
|
33
|
+
setCookies: await issueSessionCookies(data, {
|
|
34
|
+
authServerUrl: opts.authServerUrl,
|
|
35
|
+
audience: opts.audience,
|
|
36
|
+
accessCookieName: opts.accessCookieName,
|
|
37
|
+
refreshCookieName: opts.refreshCookieName,
|
|
38
|
+
cookieDomain: opts.cookieDomain,
|
|
39
|
+
}),
|
|
67
40
|
};
|
|
68
41
|
}
|
|
69
42
|
export async function verifyLoginOtpHandler(input, opts) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyLoginOtpHandler.js","sourceRoot":"","sources":["../../src/handlers/verifyLoginOtpHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"verifyLoginOtpHandler.js","sourceRoot":"","sources":["../../src/handlers/verifyLoginOtpHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AA+B7D,8EAA8E;AAC9E,iFAAiF;AACjF,gFAAgF;AAChF,kFAAkF;AAClF,yEAAyE;AACzE,KAAK,UAAU,SAAS,CACtB,IAAY,EACZ,KAA0B,EAC1B,IAA2B;IAE3B,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE,EAAE;QAC1D,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;KAC3C,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,GAAG,sBAAsB,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QACjB,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,MAAM,mBAAmB,CAAC,IAAI,EAAE;YAC1C,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAA0B,EAC1B,IAA2B;IAE3B,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,OAAO;QACpB,CAAC,CAAC,4BAA4B;QAC9B,CAAC,CAAC,4BAA4B,CAAC;IAEnC,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,KAA0B,EAC1B,IAA2B;IAE3B,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAE3E,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ResultFailure } from "../result.js";
|
|
1
2
|
export interface VerifyMagicLinkInput {
|
|
2
3
|
token: string;
|
|
3
4
|
}
|
|
@@ -6,10 +7,9 @@ export interface VerifyMagicLinkOptions {
|
|
|
6
7
|
serviceAuthorization?: string;
|
|
7
8
|
forwardedClientIp?: string;
|
|
8
9
|
}
|
|
9
|
-
export interface VerifyMagicLinkResult {
|
|
10
|
+
export interface VerifyMagicLinkResult extends ResultFailure {
|
|
10
11
|
status: number;
|
|
11
12
|
body?: unknown;
|
|
12
|
-
error?: unknown;
|
|
13
13
|
}
|
|
14
14
|
export declare function verifyMagicLinkHandler(input: VerifyMagicLinkInput, opts: VerifyMagicLinkOptions): Promise<VerifyMagicLinkResult>;
|
|
15
15
|
//# sourceMappingURL=verifyMagicLinkHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyMagicLinkHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/verifyMagicLinkHandler.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"verifyMagicLinkHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/verifyMagicLinkHandler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,oBAAoB,EAC3B,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,CAuBhC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { authFetch } from "../authFetch.js";
|
|
2
|
+
import { readPassthroughFailure } from "../upstreamError.js";
|
|
2
3
|
export async function verifyMagicLinkHandler(input, opts) {
|
|
3
4
|
const up = await authFetch(`${opts.authServerUrl}/magic-link/verify/${encodeURIComponent(input.token)}`, {
|
|
4
5
|
method: "GET",
|
|
@@ -9,7 +10,7 @@ export async function verifyMagicLinkHandler(input, opts) {
|
|
|
9
10
|
if (!up.ok) {
|
|
10
11
|
return {
|
|
11
12
|
status: up.status,
|
|
12
|
-
|
|
13
|
+
...readPassthroughFailure(data),
|
|
13
14
|
};
|
|
14
15
|
}
|
|
15
16
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyMagicLinkHandler.js","sourceRoot":"","sources":["../../src/handlers/verifyMagicLinkHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"verifyMagicLinkHandler.js","sourceRoot":"","sources":["../../src/handlers/verifyMagicLinkHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAkB7D,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAA2B,EAC3B,IAA4B;IAE5B,MAAM,EAAE,GAAG,MAAM,SAAS,CACxB,GAAG,IAAI,CAAC,aAAa,sBAAsB,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAC5E;QACE,MAAM,EAAE,KAAK;QACb,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;KAC1C,CACF,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,GAAG,sBAAsB,CAAC,IAAI,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
export * from "./authFetch.js";
|
|
2
2
|
export * from "./authMessaging.js";
|
|
3
|
+
export * from "./deliverAuthMessage.js";
|
|
3
4
|
export * from "./ensureCookies.js";
|
|
4
5
|
export * from "./verifyCookieJwt.js";
|
|
6
|
+
export * from "./verifyRefreshCookie.js";
|
|
7
|
+
export * from "./verifySignedAuthResponse.js";
|
|
5
8
|
export * from "./refreshAccessToken.js";
|
|
6
9
|
export * from "./getSeamlessUser.js";
|
|
10
|
+
export * from "./logger.js";
|
|
11
|
+
export * from "./guards.js";
|
|
7
12
|
export * from "./createServiceToken.js";
|
|
8
13
|
export * from "./validateSecrets.js";
|
|
9
|
-
export
|
|
14
|
+
export { hasScopedRole, roleGrantsAccess, } from "@seamless-auth/types/role/matching";
|
|
15
|
+
export * from "./apiContract.js";
|
|
16
|
+
export * from "./applyResult.js";
|
|
17
|
+
export * from "./proxyRequest.js";
|
|
18
|
+
export * from "./result.js";
|
|
19
|
+
export * from "./upstreamSession.js";
|
|
10
20
|
export * from "./redaction.js";
|
|
11
21
|
export * from "./handlers/login.js";
|
|
12
22
|
export * from "./handlers/finishLogin.js";
|
|
@@ -21,4 +31,8 @@ export * from "./handlers/requestMagicLinkHandler.js";
|
|
|
21
31
|
export * from "./handlers/pollMagicLinkConfirmationHandler.js";
|
|
22
32
|
export * from "./handlers/switchOrganizationHandler.js";
|
|
23
33
|
export * from "./handlers/oauthHandlers.js";
|
|
34
|
+
export * from "./handlers/admin.js";
|
|
35
|
+
export * from "./handlers/sessions.js";
|
|
36
|
+
export * from "./handlers/internalMetrics.js";
|
|
37
|
+
export * from "./handlers/systemConfig.js";
|
|
24
38
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AAKrC,OAAO,EACL,aAAa,EACb,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,26 @@
|
|
|
1
1
|
export * from "./authFetch.js";
|
|
2
2
|
export * from "./authMessaging.js";
|
|
3
|
+
export * from "./deliverAuthMessage.js";
|
|
3
4
|
export * from "./ensureCookies.js";
|
|
4
5
|
export * from "./verifyCookieJwt.js";
|
|
6
|
+
export * from "./verifyRefreshCookie.js";
|
|
7
|
+
export * from "./verifySignedAuthResponse.js";
|
|
5
8
|
export * from "./refreshAccessToken.js";
|
|
6
9
|
export * from "./getSeamlessUser.js";
|
|
10
|
+
export * from "./logger.js";
|
|
11
|
+
export * from "./guards.js";
|
|
7
12
|
export * from "./createServiceToken.js";
|
|
8
13
|
export * from "./validateSecrets.js";
|
|
9
|
-
|
|
14
|
+
// Role matching decides whether a request is authorized, and the auth API runs
|
|
15
|
+
// the same check on its side. Both take it from @seamless-auth/types so the two
|
|
16
|
+
// cannot drift into disagreeing about who can do what. The /role/matching entry
|
|
17
|
+
// is the zod-free one, so importing core does not pull zod or the schema barrel.
|
|
18
|
+
export { hasScopedRole, roleGrantsAccess, } from "@seamless-auth/types/role/matching";
|
|
19
|
+
export * from "./apiContract.js";
|
|
20
|
+
export * from "./applyResult.js";
|
|
21
|
+
export * from "./proxyRequest.js";
|
|
22
|
+
export * from "./result.js";
|
|
23
|
+
export * from "./upstreamSession.js";
|
|
10
24
|
export * from "./redaction.js";
|
|
11
25
|
export * from "./handlers/login.js";
|
|
12
26
|
export * from "./handlers/finishLogin.js";
|
|
@@ -21,4 +35,8 @@ export * from "./handlers/requestMagicLinkHandler.js";
|
|
|
21
35
|
export * from "./handlers/pollMagicLinkConfirmationHandler.js";
|
|
22
36
|
export * from "./handlers/switchOrganizationHandler.js";
|
|
23
37
|
export * from "./handlers/oauthHandlers.js";
|
|
38
|
+
export * from "./handlers/admin.js";
|
|
39
|
+
export * from "./handlers/sessions.js";
|
|
40
|
+
export * from "./handlers/internalMetrics.js";
|
|
41
|
+
export * from "./handlers/systemConfig.js";
|
|
24
42
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,+EAA+E;AAC/E,gFAAgF;AAChF,gFAAgF;AAChF,iFAAiF;AACjF,OAAO,EACL,aAAa,EACb,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC"}
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where this package writes its diagnostics.
|
|
3
|
+
*
|
|
4
|
+
* Only the two levels it actually uses. Keeping the interface at what is needed
|
|
5
|
+
* means an adopter can satisfy it with an object literal, and a platform logger
|
|
6
|
+
* (`pino`, `console`, a Fastify `request.log`) already does.
|
|
7
|
+
*/
|
|
8
|
+
export interface SeamlessLogger {
|
|
9
|
+
warn(message: string): void;
|
|
10
|
+
error(message: string): void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Routes this package's diagnostics somewhere other than `console`.
|
|
14
|
+
*
|
|
15
|
+
* Serverless and edge runtimes often ship logs through a platform logger, and a
|
|
16
|
+
* structured setup wants these as events rather than strings. Without this an
|
|
17
|
+
* adopter cannot capture, level, or silence them: an adapter that logs through
|
|
18
|
+
* its own logger still leaks core's lines to `console`, so one request produces
|
|
19
|
+
* output in two places.
|
|
20
|
+
*
|
|
21
|
+
* Pass nothing to go back to `console`.
|
|
22
|
+
*/
|
|
23
|
+
export declare function setSeamlessLogger(logger?: SeamlessLogger): void;
|
|
24
|
+
/** The logger in effect. Read per call, so a later swap takes effect. */
|
|
25
|
+
export declare function getSeamlessLogger(): SeamlessLogger;
|
|
26
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AASD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAE/D;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,IAAI,cAAc,CAElD"}
|
package/dist/logger.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const consoleLogger = {
|
|
2
|
+
warn: (message) => console.warn(message),
|
|
3
|
+
error: (message) => console.error(message),
|
|
4
|
+
};
|
|
5
|
+
let activeLogger = consoleLogger;
|
|
6
|
+
/**
|
|
7
|
+
* Routes this package's diagnostics somewhere other than `console`.
|
|
8
|
+
*
|
|
9
|
+
* Serverless and edge runtimes often ship logs through a platform logger, and a
|
|
10
|
+
* structured setup wants these as events rather than strings. Without this an
|
|
11
|
+
* adopter cannot capture, level, or silence them: an adapter that logs through
|
|
12
|
+
* its own logger still leaks core's lines to `console`, so one request produces
|
|
13
|
+
* output in two places.
|
|
14
|
+
*
|
|
15
|
+
* Pass nothing to go back to `console`.
|
|
16
|
+
*/
|
|
17
|
+
export function setSeamlessLogger(logger) {
|
|
18
|
+
activeLogger = logger ?? consoleLogger;
|
|
19
|
+
}
|
|
20
|
+
/** The logger in effect. Read per call, so a later swap takes effect. */
|
|
21
|
+
export function getSeamlessLogger() {
|
|
22
|
+
return activeLogger;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAYA,MAAM,aAAa,GAAmB;IACpC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IACxC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;CAC3C,CAAC;AAEF,IAAI,YAAY,GAAmB,aAAa,CAAC;AAEjD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAuB;IACvD,YAAY,GAAG,MAAM,IAAI,aAAa,CAAC;AACzC,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,iBAAiB;IAC/B,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { AppliableResult } from "./applyResult.js";
|
|
2
|
+
import { type AuthFetchOptions } from "./authFetch.js";
|
|
3
|
+
/**
|
|
4
|
+
* Query parameters to forward upstream.
|
|
5
|
+
*
|
|
6
|
+
* Values are deliberately `unknown`: adapters hand over whatever their
|
|
7
|
+
* framework parsed, and Express's `ParsedQs` can nest objects. Scalars and
|
|
8
|
+
* arrays of scalars are forwarded, everything else is dropped, so a nested
|
|
9
|
+
* object cannot reach the auth API as `[object Object]`.
|
|
10
|
+
*/
|
|
11
|
+
export type QueryInput = Record<string, unknown>;
|
|
12
|
+
/**
|
|
13
|
+
* Builds a querystring for an upstream call.
|
|
14
|
+
*
|
|
15
|
+
* An array becomes repeated parameters (`?type=login&type=logout`), which is
|
|
16
|
+
* what the auth API's schemas accept. Joining them into one comma-separated
|
|
17
|
+
* value produces a parameter that matches nothing upstream.
|
|
18
|
+
*/
|
|
19
|
+
export declare function buildQueryString(query?: QueryInput): string;
|
|
20
|
+
export declare function buildUpstreamUrl(authServerUrl: string, path: string, query?: QueryInput): string;
|
|
21
|
+
export type ProxyIdentity = "preAuth" | "access" | "register";
|
|
22
|
+
export interface ProxyIdentityInput {
|
|
23
|
+
/** `sub` from the verified cookie payload, if the request carried one. */
|
|
24
|
+
subject?: string;
|
|
25
|
+
cookies: Record<string, unknown>;
|
|
26
|
+
identity: ProxyIdentity;
|
|
27
|
+
accessCookieName: string;
|
|
28
|
+
preAuthCookieName: string;
|
|
29
|
+
registrationCookieName: string;
|
|
30
|
+
}
|
|
31
|
+
export interface ProxyIdentityRejection {
|
|
32
|
+
status: number;
|
|
33
|
+
errorCode: string;
|
|
34
|
+
/** Set when the caller should log the rejection rather than only return it. */
|
|
35
|
+
warn?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Checks that a request carries the session a proxied route requires.
|
|
39
|
+
*
|
|
40
|
+
* Returns the rejection to send, or `undefined` when the request may proceed.
|
|
41
|
+
* The cookie payload alone is not enough: it survives a refresh, so the route
|
|
42
|
+
* also has to see the specific cookie for the identity it needs.
|
|
43
|
+
*/
|
|
44
|
+
export declare function checkProxyIdentity(input: ProxyIdentityInput): ProxyIdentityRejection | undefined;
|
|
45
|
+
export interface ProxyRequestOptions {
|
|
46
|
+
authServerUrl: string;
|
|
47
|
+
path: string;
|
|
48
|
+
method?: AuthFetchOptions["method"];
|
|
49
|
+
authorization?: string;
|
|
50
|
+
serviceAuthorization?: string;
|
|
51
|
+
forwardedClientIp?: string;
|
|
52
|
+
query?: QueryInput;
|
|
53
|
+
body?: unknown;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Forwards a request to the auth API and returns its status and body unchanged.
|
|
57
|
+
*
|
|
58
|
+
* Transparent on purpose: a proxied route has no view into what the response
|
|
59
|
+
* means, so a failure body is returned as-is rather than reshaped into a code.
|
|
60
|
+
*/
|
|
61
|
+
export declare function proxyRequest(opts: ProxyRequestOptions): Promise<AppliableResult>;
|
|
62
|
+
//# sourceMappingURL=proxyRequest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxyRequest.d.ts","sourceRoot":"","sources":["../src/proxyRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElE;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAUjD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CAiB3D;AAED,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,UAAU,GACjB,MAAM,CAKR;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,kBAAkB,GACxB,sBAAsB,GAAG,SAAS,CAwBpC;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,eAAe,CAAC,CAe1B"}
|