@seamless-auth/core 0.7.0 → 0.10.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 +16 -0
- package/dist/authFetch.d.ts.map +1 -1
- package/dist/authFetch.js +3 -5
- package/dist/authFetch.js.map +1 -1
- package/dist/authMessaging.d.ts +0 -13
- package/dist/authMessaging.d.ts.map +1 -1
- package/dist/createServiceToken.d.ts.map +1 -1
- package/dist/createServiceToken.js +2 -0
- package/dist/createServiceToken.js.map +1 -1
- package/dist/ensureCookies.d.ts.map +1 -1
- package/dist/ensureCookies.js +32 -4
- package/dist/ensureCookies.js.map +1 -1
- package/dist/getSeamlessUser.d.ts +17 -2
- package/dist/getSeamlessUser.d.ts.map +1 -1
- package/dist/getSeamlessUser.js +4 -1
- package/dist/getSeamlessUser.js.map +1 -1
- package/dist/handlers/admin.d.ts +1 -0
- package/dist/handlers/admin.d.ts.map +1 -1
- package/dist/handlers/admin.js +8 -7
- package/dist/handlers/admin.js.map +1 -1
- package/dist/handlers/finishLogin.d.ts +2 -0
- package/dist/handlers/finishLogin.d.ts.map +1 -1
- package/dist/handlers/finishLogin.js +2 -1
- package/dist/handlers/finishLogin.js.map +1 -1
- package/dist/handlers/finishRegister.d.ts +2 -0
- package/dist/handlers/finishRegister.d.ts.map +1 -1
- package/dist/handlers/finishRegister.js +2 -1
- package/dist/handlers/finishRegister.js.map +1 -1
- package/dist/handlers/internalMetrics.d.ts +2 -1
- package/dist/handlers/internalMetrics.d.ts.map +1 -1
- package/dist/handlers/internalMetrics.js +1 -0
- package/dist/handlers/internalMetrics.js.map +1 -1
- package/dist/handlers/login.d.ts +2 -0
- package/dist/handlers/login.d.ts.map +1 -1
- package/dist/handlers/login.js +2 -1
- package/dist/handlers/login.js.map +1 -1
- package/dist/handlers/logout.d.ts +1 -0
- package/dist/handlers/logout.d.ts.map +1 -1
- package/dist/handlers/logout.js +1 -0
- package/dist/handlers/logout.js.map +1 -1
- package/dist/handlers/me.d.ts +1 -0
- package/dist/handlers/me.d.ts.map +1 -1
- package/dist/handlers/me.js +1 -0
- package/dist/handlers/me.js.map +1 -1
- package/dist/handlers/oauthHandlers.d.ts +2 -0
- package/dist/handlers/oauthHandlers.d.ts.map +1 -1
- package/dist/handlers/oauthHandlers.js +3 -1
- package/dist/handlers/oauthHandlers.js.map +1 -1
- package/dist/handlers/pollMagicLinkConfirmationHandler.d.ts +1 -0
- package/dist/handlers/pollMagicLinkConfirmationHandler.d.ts.map +1 -1
- package/dist/handlers/pollMagicLinkConfirmationHandler.js +1 -2
- package/dist/handlers/pollMagicLinkConfirmationHandler.js.map +1 -1
- package/dist/handlers/sessions.d.ts +1 -0
- 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 -0
- package/dist/handlers/switchOrganizationHandler.d.ts.map +1 -1
- package/dist/handlers/switchOrganizationHandler.js +2 -1
- package/dist/handlers/switchOrganizationHandler.js.map +1 -1
- package/dist/handlers/systemConfig.d.ts +1 -0
- package/dist/handlers/systemConfig.d.ts.map +1 -1
- package/dist/handlers/systemConfig.js +3 -0
- package/dist/handlers/systemConfig.js.map +1 -1
- package/dist/handlers/verifyLoginOtpHandler.d.ts +2 -0
- package/dist/handlers/verifyLoginOtpHandler.d.ts.map +1 -1
- package/dist/handlers/verifyLoginOtpHandler.js +3 -2
- package/dist/handlers/verifyLoginOtpHandler.js.map +1 -1
- package/dist/handlers/verifyMagicLinkHandler.d.ts +1 -0
- 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 +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/refreshAccessToken.d.ts.map +1 -1
- package/dist/refreshAccessToken.js +26 -1
- package/dist/refreshAccessToken.js.map +1 -1
- package/dist/validateSecrets.d.ts +7 -0
- package/dist/validateSecrets.d.ts.map +1 -0
- package/dist/validateSecrets.js +14 -0
- package/dist/validateSecrets.js.map +1 -0
- package/dist/verifySignedAuthResponse.d.ts +1 -1
- package/dist/verifySignedAuthResponse.d.ts.map +1 -1
- package/dist/verifySignedAuthResponse.js +15 -2
- package/dist/verifySignedAuthResponse.js.map +1 -1
- package/package.json +15 -3
- package/dist/handlers/bootstrapAdminInvite.d.ts +0 -20
- package/dist/handlers/bootstrapAdminInvite.d.ts.map +0 -1
- package/dist/handlers/bootstrapAdminInvite.js +0 -29
- package/dist/handlers/bootstrapAdminInvite.js.map +0 -1
package/README.md
CHANGED
|
@@ -88,13 +88,29 @@ Key exports include:
|
|
|
88
88
|
- `refreshAccessToken(...)` – rotates expired access sessions
|
|
89
89
|
- `verifyCookieJwt(...)` – verifies signed cookie payloads
|
|
90
90
|
- `createServiceToken(...)` – creates short-lived M2M assertions
|
|
91
|
+
- `getSeamlessUser(...)` – resolves the hydrated user, typed as `SeamlessUser | null`
|
|
91
92
|
- `hasScopedRole(...)` – checks scoped role grants such as `admin:read`
|
|
93
|
+
- `assertSecretStrength(...)` / `assertSecrets(...)` – enforce the minimum secret length
|
|
94
|
+
- `redactSensitiveText(...)` – masks tokens, bearer values, and secrets before logging
|
|
92
95
|
- `listOAuthProvidersHandler(...)` – retrieves public OAuth provider metadata
|
|
93
96
|
- `startOAuthLoginHandler(...)` – starts an OAuth authorization-code login
|
|
94
97
|
- `finishOAuthLoginHandler(...)` – finishes OAuth login and returns cookie instructions
|
|
95
98
|
|
|
96
99
|
These functions return **descriptive results**, not HTTP responses.
|
|
97
100
|
|
|
101
|
+
### Secret strength
|
|
102
|
+
|
|
103
|
+
`cookieSecret` and `serviceSecret` must be at least 32 characters (`MIN_SECRET_LENGTH`). A shorter
|
|
104
|
+
secret can be brute forced offline, which would let an attacker forge cookie sessions and service
|
|
105
|
+
tokens.
|
|
106
|
+
|
|
107
|
+
The check runs wherever a secret enters the core as configuration: `ensureCookies`,
|
|
108
|
+
`refreshAccessToken`, `getSeamlessUser`, and `createServiceToken` all throw on a missing or weak
|
|
109
|
+
secret. `verifyCookieJwt` and `verifyRefreshCookie` are low-level primitives and keep their
|
|
110
|
+
"return `null` on failure" contract unchanged.
|
|
111
|
+
|
|
112
|
+
Generate secrets with a CSPRNG, for example `openssl rand -base64 48`.
|
|
113
|
+
|
|
98
114
|
---
|
|
99
115
|
|
|
100
116
|
## Example (Adapter Pseudocode)
|
package/dist/authFetch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authFetch.d.ts","sourceRoot":"","sources":["../src/authFetch.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"authFetch.d.ts","sourceRoot":"","sources":["../src/authFetch.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,QAAQ,CAAC,CAoBnB"}
|
package/dist/authFetch.js
CHANGED
|
@@ -3,10 +3,8 @@ export async function authFetch(url, options) {
|
|
|
3
3
|
"Content-Type": "application/json",
|
|
4
4
|
...options.headers,
|
|
5
5
|
...(options.authorization ? { Authorization: options.authorization } : {}),
|
|
6
|
-
...(
|
|
7
|
-
? {
|
|
8
|
-
"x-seamless-service-token": options.serviceAuthorization ?? options.authorization,
|
|
9
|
-
}
|
|
6
|
+
...(options.serviceAuthorization
|
|
7
|
+
? { "x-seamless-service-token": options.serviceAuthorization }
|
|
10
8
|
: {}),
|
|
11
9
|
...(options.forwardedClientIp
|
|
12
10
|
? { "x-seamless-client-ip": options.forwardedClientIp }
|
|
@@ -22,7 +20,7 @@ export async function authFetch(url, options) {
|
|
|
22
20
|
// Upstream responses aren't always JSON: a rate-limited request comes back as plain
|
|
23
21
|
// text ("Too many requests…") and a 204 has no body. Native Response.json() throws on
|
|
24
22
|
// both, which would crash callers that parse the body before checking the status. Make
|
|
25
|
-
// json() tolerant so callers always get a value
|
|
23
|
+
// json() tolerant so callers always get a value: parsed JSON, { message: text } for a
|
|
26
24
|
// non-JSON body, or undefined for an empty one.
|
|
27
25
|
function makeJsonTolerant(response) {
|
|
28
26
|
if (typeof response.text !== "function") {
|
package/dist/authFetch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authFetch.js","sourceRoot":"","sources":["../src/authFetch.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAW,EACX,OAAyB;IAEzB,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;QAClC,GAAG,OAAO,CAAC,OAAO;QAClB,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"authFetch.js","sourceRoot":"","sources":["../src/authFetch.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAW,EACX,OAAyB;IAEzB,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;QAClC,GAAG,OAAO,CAAC,OAAO;QAClB,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,OAAO,CAAC,oBAAoB;YAC9B,CAAC,CAAC,EAAE,0BAA0B,EAAE,OAAO,CAAC,oBAAoB,EAAE;YAC9D,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,iBAAiB;YAC3B,CAAC,CAAC,EAAE,sBAAsB,EAAE,OAAO,CAAC,iBAAiB,EAAE;YACvD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO;QACP,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KAC9D,CAAC,CAAC;IAEH,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC;AAED,oFAAoF;AACpF,sFAAsF;AACtF,uFAAuF;AACvF,sFAAsF;AACtF,gDAAgD;AAChD,SAAS,gBAAgB,CAAC,QAAkB;IAC1C,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACxC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,QAAQ,CAAC,IAAI,GAAG,KAAK,IAAI,EAAE;QACzB,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/authMessaging.d.ts
CHANGED
|
@@ -44,12 +44,6 @@ export interface SendMagicLinkEmailInput {
|
|
|
44
44
|
from?: string;
|
|
45
45
|
subject?: string;
|
|
46
46
|
}
|
|
47
|
-
export interface SendBootstrapInviteEmailInput {
|
|
48
|
-
to: string;
|
|
49
|
-
inviteUrl: string;
|
|
50
|
-
from?: string;
|
|
51
|
-
subject?: string;
|
|
52
|
-
}
|
|
53
47
|
export interface AuthMessageOverrideContext {
|
|
54
48
|
appName?: string;
|
|
55
49
|
}
|
|
@@ -57,13 +51,11 @@ export interface AuthMessageOverrides {
|
|
|
57
51
|
otpEmail?: (input: SendOtpEmailInput, defaults: EmailMessage, context: AuthMessageOverrideContext) => EmailMessage;
|
|
58
52
|
otpSms?: (input: SendOtpSmsInput, defaults: SmsMessage, context: AuthMessageOverrideContext) => SmsMessage;
|
|
59
53
|
magicLinkEmail?: (input: SendMagicLinkEmailInput, defaults: EmailMessage, context: AuthMessageOverrideContext) => EmailMessage;
|
|
60
|
-
bootstrapInviteEmail?: (input: SendBootstrapInviteEmailInput, defaults: EmailMessage, context: AuthMessageOverrideContext) => EmailMessage;
|
|
61
54
|
}
|
|
62
55
|
export interface AuthMessagingHandlers {
|
|
63
56
|
sendOtpEmail(input: SendOtpEmailInput): Promise<DeliveryResult>;
|
|
64
57
|
sendOtpSms(input: SendOtpSmsInput): Promise<DeliveryResult>;
|
|
65
58
|
sendMagicLinkEmail(input: SendMagicLinkEmailInput): Promise<DeliveryResult>;
|
|
66
|
-
sendBootstrapInviteEmail(input: SendBootstrapInviteEmailInput): Promise<DeliveryResult>;
|
|
67
59
|
}
|
|
68
60
|
export interface SeamlessAuthMessagingOptions {
|
|
69
61
|
email?: EmailTransport;
|
|
@@ -89,10 +81,5 @@ export type AuthDeliveryInstruction = {
|
|
|
89
81
|
to: string;
|
|
90
82
|
token?: string;
|
|
91
83
|
magicLinkUrl: string;
|
|
92
|
-
} | {
|
|
93
|
-
kind: "bootstrap_invite_email";
|
|
94
|
-
to: string;
|
|
95
|
-
token?: string;
|
|
96
|
-
inviteUrl: string;
|
|
97
84
|
};
|
|
98
85
|
//# sourceMappingURL=authMessaging.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authMessaging.d.ts","sourceRoot":"","sources":["../src/authMessaging.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,KAAK,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"authMessaging.d.ts","sourceRoot":"","sources":["../src/authMessaging.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createServiceToken.d.ts","sourceRoot":"","sources":["../src/createServiceToken.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createServiceToken.d.ts","sourceRoot":"","sources":["../src/createServiceToken.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAmBpE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createServiceToken.js","sourceRoot":"","sources":["../src/createServiceToken.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"createServiceToken.js","sourceRoot":"","sources":["../src/createServiceToken.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,cAAc,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAY5D,MAAM,UAAU,kBAAkB,CAAC,IAAyB;IAC1D,oBAAoB,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAE1D,OAAO,GAAG,CAAC,IAAI,CACb;QACE,GAAG,EAAE,IAAI,CAAC,MAAM;QAChB,GAAG,EAAE,IAAI,CAAC,QAAQ;QAClB,GAAG,EAAE,IAAI,CAAC,OAAO;QACjB,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAChE,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;KACnC,EACD,IAAI,CAAC,aAAa,EAClB;QACE,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,OAAO;QAClB,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensureCookies.d.ts","sourceRoot":"","sources":["../src/ensureCookies.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"ensureCookies.d.ts","sourceRoot":"","sources":["../src/ensureCookies.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAiND,wBAAsB,aAAa,CACjC,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,mBAAmB,CAAC,CA+F9B"}
|
package/dist/ensureCookies.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { verifyCookieJwt } from "./verifyCookieJwt.js";
|
|
2
2
|
import { refreshAccessToken } from "./refreshAccessToken.js";
|
|
3
|
-
import {
|
|
3
|
+
import { assertSecrets } from "./validateSecrets.js";
|
|
4
4
|
const COOKIE_REQUIREMENTS = {
|
|
5
5
|
"/webAuthn/login/finish": { name: "preAuthCookieName", required: true },
|
|
6
6
|
"/webAuthn/login/start": { name: "preAuthCookieName", required: true },
|
|
@@ -44,17 +44,30 @@ const COOKIE_REQUIREMENTS = {
|
|
|
44
44
|
name: "preAuthCookieName",
|
|
45
45
|
required: true,
|
|
46
46
|
},
|
|
47
|
-
"/magic-link"
|
|
47
|
+
// The token in "/magic-link/verify/:token" is itself the credential, so a
|
|
48
|
+
// link opened on a different device (no pre-auth or refresh cookie) must not
|
|
49
|
+
// be gated. This entry must precede "/magic-link" so the prefix-match find()
|
|
50
|
+
// below selects it first.
|
|
51
|
+
"/magic-link/verify": {
|
|
48
52
|
name: "preAuthCookieName",
|
|
49
|
-
required:
|
|
53
|
+
required: false,
|
|
50
54
|
},
|
|
55
|
+
// Must precede "/magic-link" for the same prefix-match reason; otherwise this
|
|
56
|
+
// entry is shadowed and would silently stop applying if its config diverged.
|
|
51
57
|
"/magic-link/check": {
|
|
52
58
|
name: "preAuthCookieName",
|
|
53
59
|
required: true,
|
|
54
60
|
},
|
|
61
|
+
"/magic-link": {
|
|
62
|
+
name: "preAuthCookieName",
|
|
63
|
+
required: true,
|
|
64
|
+
},
|
|
55
65
|
"/logout/all": { name: "accessCookieName", required: true },
|
|
56
66
|
"/logout": { name: "accessCookieName", required: true },
|
|
57
67
|
"/users/me": { name: "accessCookieName", required: true },
|
|
68
|
+
"/users/update": { name: "accessCookieName", required: true },
|
|
69
|
+
"/users/credentials": { name: "accessCookieName", required: true },
|
|
70
|
+
"/sessions": { name: "accessCookieName", required: true },
|
|
58
71
|
"/organizations": { name: "accessCookieName", required: true },
|
|
59
72
|
"/step-up/status": { name: "accessCookieName", required: true },
|
|
60
73
|
"/step-up/webauthn/start": { name: "accessCookieName", required: true },
|
|
@@ -83,6 +96,10 @@ const COOKIE_REQUIREMENTS = {
|
|
|
83
96
|
name: "accessCookieName",
|
|
84
97
|
required: true,
|
|
85
98
|
},
|
|
99
|
+
"/admin/credential-count": {
|
|
100
|
+
name: "accessCookieName",
|
|
101
|
+
required: true,
|
|
102
|
+
},
|
|
86
103
|
"/admin/sessions": {
|
|
87
104
|
name: "accessCookieName",
|
|
88
105
|
required: true,
|
|
@@ -99,6 +116,11 @@ const COOKIE_REQUIREMENTS = {
|
|
|
99
116
|
name: "accessCookieName",
|
|
100
117
|
required: true,
|
|
101
118
|
},
|
|
119
|
+
// Prefix match covers both the collection and the id-scoped provider routes.
|
|
120
|
+
"/system-config/oauth-providers": {
|
|
121
|
+
name: "accessCookieName",
|
|
122
|
+
required: true,
|
|
123
|
+
},
|
|
102
124
|
"/system-config/roles": {
|
|
103
125
|
name: "accessCookieName",
|
|
104
126
|
required: true,
|
|
@@ -169,6 +191,7 @@ async function refreshRequiredCookie(cookieName, refreshCookie, opts) {
|
|
|
169
191
|
};
|
|
170
192
|
}
|
|
171
193
|
export async function ensureCookies(input, opts) {
|
|
194
|
+
assertSecrets(opts);
|
|
172
195
|
// Match case-insensitively: Express route matching is case-insensitive by
|
|
173
196
|
// default, so a client may send a path whose casing differs from the mounted
|
|
174
197
|
// route (e.g. "/webauthn/..." vs "/webAuthn/..."). A case-sensitive miss here
|
|
@@ -177,10 +200,15 @@ export async function ensureCookies(input, opts) {
|
|
|
177
200
|
const requestPath = input.path.toLowerCase();
|
|
178
201
|
const match = Object.entries(COOKIE_REQUIREMENTS).find(([path]) => requestPath.startsWith(path.toLowerCase()));
|
|
179
202
|
if (!match) {
|
|
180
|
-
console.debug("[SEAMLESS-AUTH-CORE] - (ensureCookies) - No cookie requirements for this path. Path: ", redactSensitiveText(input.path));
|
|
181
203
|
return { type: "ok" };
|
|
182
204
|
}
|
|
183
205
|
const [, { name, required }] = match;
|
|
206
|
+
// A not-required entry marks a route that is explicitly ungated: it must pass
|
|
207
|
+
// through regardless of which cookies are (or are not) present, so a stale or
|
|
208
|
+
// absent cookie never blocks it.
|
|
209
|
+
if (!required) {
|
|
210
|
+
return { type: "ok" };
|
|
211
|
+
}
|
|
184
212
|
const cookieName = opts[name];
|
|
185
213
|
if (!cookieName) {
|
|
186
214
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensureCookies.js","sourceRoot":"","sources":["../src/ensureCookies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ensureCookies.js","sourceRoot":"","sources":["../src/ensureCookies.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The user object returned by the auth server's `GET /users/me`.
|
|
3
|
+
*
|
|
4
|
+
* `lastLogin` is an ISO 8601 timestamp, null until the user's first login.
|
|
5
|
+
* `activeOrganizationId` is null when the access token carries no org context.
|
|
6
|
+
*/
|
|
7
|
+
export interface SeamlessUser {
|
|
8
|
+
id: string;
|
|
9
|
+
email: string;
|
|
10
|
+
phone: string | null;
|
|
11
|
+
roles: string[];
|
|
12
|
+
lastLogin?: string | null;
|
|
13
|
+
activeOrganizationId?: string | null;
|
|
14
|
+
}
|
|
1
15
|
export interface GetSeamlessUserOptions {
|
|
2
16
|
authServerUrl: string;
|
|
3
17
|
cookieSecret: string;
|
|
4
|
-
authorization
|
|
18
|
+
authorization?: string;
|
|
5
19
|
cookieName?: string;
|
|
20
|
+
serviceAuthorization?: string;
|
|
6
21
|
forwardedClientIp?: string;
|
|
7
22
|
}
|
|
8
23
|
/**
|
|
@@ -15,5 +30,5 @@ export interface GetSeamlessUserOptions {
|
|
|
15
30
|
*
|
|
16
31
|
* This is intended for server-side usage (SSR, API routes, edge functions).
|
|
17
32
|
*/
|
|
18
|
-
export declare function getSeamlessUser<T =
|
|
33
|
+
export declare function getSeamlessUser<T = SeamlessUser>(cookies: Record<string, string | undefined>, opts: GetSeamlessUserOptions): Promise<T | null>;
|
|
19
34
|
//# sourceMappingURL=getSeamlessUser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSeamlessUser.d.ts","sourceRoot":"","sources":["../src/getSeamlessUser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getSeamlessUser.d.ts","sourceRoot":"","sources":["../src/getSeamlessUser.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,CAAC,GAAG,YAAY,EACpD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC3C,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAsBnB"}
|
package/dist/getSeamlessUser.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { verifyCookieJwt } from "./verifyCookieJwt.js";
|
|
2
2
|
import { authFetch } from "./authFetch.js";
|
|
3
|
+
import { assertSecretStrength } from "./validateSecrets.js";
|
|
3
4
|
/**
|
|
4
5
|
* Resolves the authenticated Seamless Auth user from an access cookie.
|
|
5
6
|
*
|
|
@@ -11,6 +12,7 @@ import { authFetch } from "./authFetch.js";
|
|
|
11
12
|
* This is intended for server-side usage (SSR, API routes, edge functions).
|
|
12
13
|
*/
|
|
13
14
|
export async function getSeamlessUser(cookies, opts) {
|
|
15
|
+
assertSecretStrength("cookieSecret", opts.cookieSecret);
|
|
14
16
|
const cookieName = opts.cookieName ?? "seamless-access";
|
|
15
17
|
const token = cookies[cookieName];
|
|
16
18
|
if (!token)
|
|
@@ -21,11 +23,12 @@ export async function getSeamlessUser(cookies, opts) {
|
|
|
21
23
|
const response = await authFetch(`${opts.authServerUrl}/users/me`, {
|
|
22
24
|
method: "GET",
|
|
23
25
|
authorization: opts.authorization,
|
|
26
|
+
serviceAuthorization: opts.serviceAuthorization,
|
|
24
27
|
forwardedClientIp: opts.forwardedClientIp,
|
|
25
28
|
});
|
|
26
29
|
if (!response.ok)
|
|
27
30
|
return null;
|
|
28
31
|
const data = await response.json();
|
|
29
|
-
return data
|
|
32
|
+
return data?.user ?? null;
|
|
30
33
|
}
|
|
31
34
|
//# sourceMappingURL=getSeamlessUser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSeamlessUser.js","sourceRoot":"","sources":["../src/getSeamlessUser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"getSeamlessUser.js","sourceRoot":"","sources":["../src/getSeamlessUser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AA0B5D;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA2C,EAC3C,IAA4B;IAE5B,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAExD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,iBAAiB,CAAC;IACxD,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAElC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1D,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,WAAW,EAAE;QACjE,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,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC;AAC5B,CAAC"}
|
package/dist/handlers/admin.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/handlers/admin.ts"],"names":[],"mappings":"AAEA,KAAK,QAAQ,GAAG;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,KAAK,SAAS,GAAG,QAAQ,GAAG;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B,CAAC;AAEF,KAAK,QAAQ,GAAG,QAAQ,GAAG;IACzB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF,KAAK,MAAM,GAAG;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/handlers/admin.ts"],"names":[],"mappings":"AAEA,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,SAAS,GAAG,QAAQ,GAAG;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B,CAAC;AAEF,KAAK,QAAQ,GAAG,QAAQ,GAAG;IACzB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF,KAAK,MAAM,GAAG;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AA6CF,eAAO,MAAM,eAAe,GAAI,MAAM,QAAQ,oBACR,CAAC;AAEvC,eAAO,MAAM,iBAAiB,GAAI,MAAM,QAAQ,oBACT,CAAC;AAExC,eAAO,MAAM,iBAAiB,GAAI,MAAM,QAAQ,oBACP,CAAC;AAE1C,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,MAAM,QAAQ,oBACM,CAAC;AAEvE,eAAO,MAAM,oBAAoB,GAAI,QAAQ,MAAM,EAAE,MAAM,QAAQ,oBACC,CAAC;AAErE,eAAO,MAAM,uBAAuB,GAAI,QAAQ,MAAM,EAAE,MAAM,QAAQ,oBACQ,CAAC;AAE/E,eAAO,MAAM,oBAAoB,GAAI,MAAM,SAAS,oBACR,CAAC;AAE7C,eAAO,MAAM,yBAAyB,GAAI,MAAM,QAAQ,oBACP,CAAC;AAElD,eAAO,MAAM,sBAAsB,GAAI,MAAM,SAAS,oBACb,CAAC;AAE1C,eAAO,MAAM,uBAAuB,GAAI,QAAQ,MAAM,EAAE,MAAM,QAAQ,oBACC,CAAC;AAExE,eAAO,MAAM,wBAAwB,GAAI,IAAI,MAAM,EAAE,MAAM,QAAQ,oBACS,CAAC;AAE7E,eAAO,MAAM,4BAA4B,GAAI,QAAQ,MAAM,EAAE,MAAM,QAAQ,oBAKxE,CAAC;AAEJ,eAAO,MAAM,sCAAsC,GACjD,QAAQ,MAAM,EACd,MAAM,QAAQ,oBAMb,CAAC"}
|
package/dist/handlers/admin.js
CHANGED
|
@@ -12,6 +12,7 @@ async function request(method, path, opts) {
|
|
|
12
12
|
method,
|
|
13
13
|
authorization: opts.authorization,
|
|
14
14
|
body: opts.body,
|
|
15
|
+
serviceAuthorization: opts.serviceAuthorization,
|
|
15
16
|
forwardedClientIp: opts.forwardedClientIp,
|
|
16
17
|
});
|
|
17
18
|
const data = await up.json();
|
|
@@ -29,14 +30,14 @@ async function request(method, path, opts) {
|
|
|
29
30
|
export const getUsersHandler = (opts) => request("GET", "/admin/users", opts);
|
|
30
31
|
export const createUserHandler = (opts) => request("POST", "/admin/users", opts);
|
|
31
32
|
export const deleteUserHandler = (opts) => request("DELETE", "/admin/users", opts);
|
|
32
|
-
export const updateUserHandler = (userId, opts) => request("PATCH", `/admin/users/${userId}`, opts);
|
|
33
|
-
export const getUserDetailHandler = (userId, opts) => request("GET", `/admin/users/${userId}`, opts);
|
|
34
|
-
export const getUserAnomaliesHandler = (userId, opts) => request("GET", `/admin/users/${userId}/anomalies`, opts);
|
|
33
|
+
export const updateUserHandler = (userId, opts) => request("PATCH", `/admin/users/${encodeURIComponent(userId)}`, opts);
|
|
34
|
+
export const getUserDetailHandler = (userId, opts) => request("GET", `/admin/users/${encodeURIComponent(userId)}`, opts);
|
|
35
|
+
export const getUserAnomaliesHandler = (userId, opts) => request("GET", `/admin/users/${encodeURIComponent(userId)}/anomalies`, opts);
|
|
35
36
|
export const getAuthEventsHandler = (opts) => request("GET", "/admin/auth-events", opts);
|
|
36
37
|
export const getCredentialCountHandler = (opts) => request("GET", "/admin/credential-count", opts);
|
|
37
38
|
export const listAllSessionsHandler = (opts) => request("GET", "/admin/sessions", opts);
|
|
38
|
-
export const listUserSessionsHandler = (userId, opts) => request("GET", `/admin/sessions/${userId}`, opts);
|
|
39
|
-
export const revokeUserSessionHandler = (id, opts) => request("DELETE", `/admin/sessions/by-id/${id}`, opts);
|
|
40
|
-
export const revokeAllUserSessionsHandler = (userId, opts) => request("DELETE", `/admin/sessions/${userId}/revoke-all`, opts);
|
|
41
|
-
export const recoverUserForDeviceReplacementHandler = (userId, opts) => request("POST", `/admin/users/${userId}/recovery/device-replacement`, opts);
|
|
39
|
+
export const listUserSessionsHandler = (userId, opts) => request("GET", `/admin/sessions/${encodeURIComponent(userId)}`, opts);
|
|
40
|
+
export const revokeUserSessionHandler = (id, opts) => request("DELETE", `/admin/sessions/by-id/${encodeURIComponent(id)}`, opts);
|
|
41
|
+
export const revokeAllUserSessionsHandler = (userId, opts) => request("DELETE", `/admin/sessions/${encodeURIComponent(userId)}/revoke-all`, opts);
|
|
42
|
+
export const recoverUserForDeviceReplacementHandler = (userId, opts) => request("POST", `/admin/users/${encodeURIComponent(userId)}/recovery/device-replacement`, opts);
|
|
42
43
|
//# sourceMappingURL=admin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/handlers/admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/handlers/admin.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,12 @@ import type { CookiePayload } from "../ensureCookies.js";
|
|
|
2
2
|
export interface FinishLoginInput {
|
|
3
3
|
body: unknown;
|
|
4
4
|
authorization?: string;
|
|
5
|
+
serviceAuthorization?: string;
|
|
5
6
|
forwardedClientIp?: string;
|
|
6
7
|
}
|
|
7
8
|
export interface FinishLoginOptions {
|
|
8
9
|
authServerUrl: string;
|
|
10
|
+
audience: string;
|
|
9
11
|
cookieDomain?: string;
|
|
10
12
|
accessCookieName: string;
|
|
11
13
|
refreshCookieName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finishLogin.d.ts","sourceRoot":"","sources":["../../src/handlers/finishLogin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,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,kBAAkB,CACtC,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"finishLogin.d.ts","sourceRoot":"","sources":["../../src/handlers/finishLogin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,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,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,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,kBAAkB,CACtC,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAkE5B"}
|
|
@@ -5,6 +5,7 @@ export async function finishLoginHandler(input, opts) {
|
|
|
5
5
|
method: "POST",
|
|
6
6
|
body: input.body,
|
|
7
7
|
authorization: input.authorization,
|
|
8
|
+
serviceAuthorization: input.serviceAuthorization,
|
|
8
9
|
forwardedClientIp: input.forwardedClientIp,
|
|
9
10
|
});
|
|
10
11
|
const data = await up.json();
|
|
@@ -14,7 +15,7 @@ export async function finishLoginHandler(input, opts) {
|
|
|
14
15
|
error: data,
|
|
15
16
|
};
|
|
16
17
|
}
|
|
17
|
-
const verifiedAccessToken = await verifySignedAuthResponse(data.token, opts.authServerUrl);
|
|
18
|
+
const verifiedAccessToken = await verifySignedAuthResponse(data.token, opts.authServerUrl, opts.audience);
|
|
18
19
|
if (!verifiedAccessToken) {
|
|
19
20
|
throw new Error("Invalid signed response from Auth Server");
|
|
20
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finishLogin.js","sourceRoot":"","sources":["../../src/handlers/finishLogin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"finishLogin.js","sourceRoot":"","sources":["../../src/handlers/finishLogin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AA6B1E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAuB,EACvB,IAAwB;IAExB,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,wBAAwB,EAAE;QACxE,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,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAED,MAAM,mBAAmB,GAAG,MAAM,wBAAwB,CACxD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,QAAQ,CACd,CAAC;IAEF,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,mBAAmB,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,SAAS,GACb,OAAO,mBAAmB,CAAC,GAAG,KAAK,QAAQ;QACzC,CAAC,CAAC,mBAAmB,CAAC,GAAG;QACzB,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO;QACL,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,IAAI;QACV,UAAU,EAAE;YACV;gBACE,IAAI,EAAE,IAAI,CAAC,gBAAgB;gBAC3B,KAAK,EAAE;oBACL,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;oBACjD,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI;iBAC5C;gBACD,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,MAAM,EAAE,IAAI,CAAC,YAAY;aAC1B;YACD;gBACE,IAAI,EAAE,IAAI,CAAC,iBAAiB;gBAC5B,KAAK,EAAE;oBACL,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,YAAY,EAAE,IAAI,CAAC,YAAY;iBAChC;gBACD,GAAG,EAAE,IAAI,CAAC,UAAU;gBACpB,MAAM,EAAE,IAAI,CAAC,YAAY;aAC1B;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -3,10 +3,12 @@ export interface FinishRegisterInput {
|
|
|
3
3
|
authorization?: string;
|
|
4
4
|
headers?: Record<string, string>;
|
|
5
5
|
body: unknown;
|
|
6
|
+
serviceAuthorization?: string;
|
|
6
7
|
forwardedClientIp?: string;
|
|
7
8
|
}
|
|
8
9
|
export interface FinishRegisterOptions {
|
|
9
10
|
authServerUrl: string;
|
|
11
|
+
audience: string;
|
|
10
12
|
cookieDomain?: string;
|
|
11
13
|
accessCookieName: string;
|
|
12
14
|
refreshCookieName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finishRegister.d.ts","sourceRoot":"","sources":["../../src/handlers/finishRegister.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,mBAAmB;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,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,qBAAqB,CACzC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"finishRegister.d.ts","sourceRoot":"","sources":["../../src/handlers/finishRegister.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,mBAAmB;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;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,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,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,qBAAqB,CACzC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CA+D/B"}
|
|
@@ -6,6 +6,7 @@ export async function finishRegisterHandler(input, opts) {
|
|
|
6
6
|
authorization: input.authorization,
|
|
7
7
|
headers: input.headers,
|
|
8
8
|
body: input.body,
|
|
9
|
+
serviceAuthorization: input.serviceAuthorization,
|
|
9
10
|
forwardedClientIp: input.forwardedClientIp,
|
|
10
11
|
});
|
|
11
12
|
const data = await up.json();
|
|
@@ -15,7 +16,7 @@ export async function finishRegisterHandler(input, opts) {
|
|
|
15
16
|
error: data,
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
|
-
const verified = await verifySignedAuthResponse(data.token, opts.authServerUrl);
|
|
19
|
+
const verified = await verifySignedAuthResponse(data.token, opts.authServerUrl, opts.audience);
|
|
19
20
|
if (!verified) {
|
|
20
21
|
throw new Error("Invalid signed response from Auth Server");
|
|
21
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finishRegister.js","sourceRoot":"","sources":["../../src/handlers/finishRegister.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"finishRegister.js","sourceRoot":"","sources":["../../src/handlers/finishRegister.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AA6B1E,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAA0B,EAC1B,IAA2B;IAE3B,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,2BAA2B,EAAE;QAC3E,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,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,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAC7C,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,QAAQ,CACd,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,QAAQ,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,SAAS,GACb,OAAO,QAAQ,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9D,OAAO;QACL,MAAM,EAAE,GAAG;QACX,UAAU,EAAE;YACV;gBACE,IAAI,EAAE,IAAI,CAAC,gBAAgB;gBAC3B,KAAK,EAAE;oBACL,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;oBACjD,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;iBAClB;gBACD,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,MAAM,EAAE,IAAI,CAAC,YAAY;aAC1B;YACD;gBACE,IAAI,EAAE,IAAI,CAAC,iBAAiB;gBAC5B,KAAK,EAAE;oBACL,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,YAAY,EAAE,IAAI,CAAC,YAAY;iBAChC;gBACD,GAAG,EAAE,IAAI,CAAC,UAAU;gBACpB,MAAM,EAAE,IAAI,CAAC,YAAY;aAC1B;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
type BaseOpts = {
|
|
2
2
|
authServerUrl: string;
|
|
3
3
|
authorization?: string;
|
|
4
|
+
serviceAuthorization?: string;
|
|
4
5
|
forwardedClientIp?: string;
|
|
5
6
|
};
|
|
6
7
|
type WithQuery = BaseOpts & {
|
|
@@ -16,6 +17,6 @@ export declare const getAuthEventTimeseriesHandler: (opts: WithQuery) => Promise
|
|
|
16
17
|
export declare const getLoginStatsHandler: (opts: BaseOpts) => Promise<Result>;
|
|
17
18
|
export declare const getSecurityAnomaliesHandler: (opts: BaseOpts) => Promise<Result>;
|
|
18
19
|
export declare const getDashboardMetricsHandler: (opts: BaseOpts) => Promise<Result>;
|
|
19
|
-
export declare const getGroupedEventSummaryHandler: (opts:
|
|
20
|
+
export declare const getGroupedEventSummaryHandler: (opts: WithQuery) => Promise<Result>;
|
|
20
21
|
export {};
|
|
21
22
|
//# sourceMappingURL=internalMetrics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internalMetrics.d.ts","sourceRoot":"","sources":["../../src/handlers/internalMetrics.ts"],"names":[],"mappings":"AAEA,KAAK,QAAQ,GAAG;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,KAAK,SAAS,GAAG,QAAQ,GAAG;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;CAC/D,CAAC;AAEF,KAAK,MAAM,GAAG;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"internalMetrics.d.ts","sourceRoot":"","sources":["../../src/handlers/internalMetrics.ts"],"names":[],"mappings":"AAEA,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,SAAS,GAAG,QAAQ,GAAG;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;CAC/D,CAAC;AAEF,KAAK,MAAM,GAAG;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAuCF,eAAO,MAAM,0BAA0B,GAAI,MAAM,SAAS,oBACd,CAAC;AAE7C,eAAO,MAAM,6BAA6B,GAAI,MAAM,SAAS,oBACd,CAAC;AAEhD,eAAO,MAAM,oBAAoB,GAAI,MAAM,QAAQ,oBACH,CAAC;AAEjD,eAAO,MAAM,2BAA2B,GAAI,MAAM,QAAQ,oBACf,CAAC;AAE5C,eAAO,MAAM,0BAA0B,GAAI,MAAM,QAAQ,oBACf,CAAC;AAE3C,eAAO,MAAM,6BAA6B,GAAI,MAAM,SAAS,oBACjB,CAAC"}
|
|
@@ -11,6 +11,7 @@ async function get(path, opts) {
|
|
|
11
11
|
const up = await authFetch(buildUrl(`${opts.authServerUrl}${path}`, opts.query), {
|
|
12
12
|
method: "GET",
|
|
13
13
|
authorization: opts.authorization,
|
|
14
|
+
serviceAuthorization: opts.serviceAuthorization,
|
|
14
15
|
forwardedClientIp: opts.forwardedClientIp,
|
|
15
16
|
});
|
|
16
17
|
const data = await up.json();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internalMetrics.js","sourceRoot":"","sources":["../../src/handlers/internalMetrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"internalMetrics.js","sourceRoot":"","sources":["../../src/handlers/internalMetrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAmB5C,SAAS,QAAQ,CAAC,IAAY,EAAE,KAA0B;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,EAAE,GAAG,IAAI,eAAe,CAC5B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC;SAChD,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CACnC,CAAC,QAAQ,EAAE,CAAC;IAEb,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,IAAY,EAAE,IAAe;IAC9C,MAAM,EAAE,GAAG,MAAM,SAAS,CACxB,QAAQ,CAAC,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EACpD;QACE,MAAM,EAAE,KAAK;QACb,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,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,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,yBAAyB;SAChD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,IAAe,EAAE,EAAE,CAC5D,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;AAE7C,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,IAAe,EAAE,EAAE,CAC/D,GAAG,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAAC;AAEhD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAc,EAAE,EAAE,CACrD,GAAG,CAAC,mCAAmC,EAAE,IAAI,CAAC,CAAC;AAEjD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,IAAc,EAAE,EAAE,CAC5D,GAAG,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,IAAc,EAAE,EAAE,CAC3D,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;AAE3C,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,IAAe,EAAE,EAAE,CAC/D,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC"}
|
package/dist/handlers/login.d.ts
CHANGED
|
@@ -4,8 +4,10 @@ export interface LoginInput {
|
|
|
4
4
|
}
|
|
5
5
|
export interface LoginOptions {
|
|
6
6
|
authServerUrl: string;
|
|
7
|
+
audience: string;
|
|
7
8
|
cookieDomain?: string;
|
|
8
9
|
preAuthCookieName: string;
|
|
10
|
+
serviceAuthorization?: string;
|
|
9
11
|
forwardedClientIp?: string;
|
|
10
12
|
}
|
|
11
13
|
export interface LoginResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/handlers/login.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,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,YAAY,CAChC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/handlers/login.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,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,YAAY,CAChC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,CAAC,CAyDtB"}
|
package/dist/handlers/login.js
CHANGED
|
@@ -4,6 +4,7 @@ export async function loginHandler(input, opts) {
|
|
|
4
4
|
const up = await authFetch(`${opts.authServerUrl}/login`, {
|
|
5
5
|
method: "POST",
|
|
6
6
|
body: input.body,
|
|
7
|
+
serviceAuthorization: opts.serviceAuthorization,
|
|
7
8
|
forwardedClientIp: opts.forwardedClientIp,
|
|
8
9
|
});
|
|
9
10
|
const data = await up.json();
|
|
@@ -13,7 +14,7 @@ export async function loginHandler(input, opts) {
|
|
|
13
14
|
error: data,
|
|
14
15
|
};
|
|
15
16
|
}
|
|
16
|
-
const verified = await verifySignedAuthResponse(data.token, opts.authServerUrl);
|
|
17
|
+
const verified = await verifySignedAuthResponse(data.token, opts.authServerUrl, opts.audience);
|
|
17
18
|
if (!verified) {
|
|
18
19
|
throw new Error("Invalid signed response from Auth Server");
|
|
19
20
|
}
|