@absolutejs/auth 0.63.0 → 0.65.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/credentials/config.d.ts +11 -0
- package/dist/credentials/login.d.ts +1 -1
- package/dist/credentials/register.d.ts +1 -1
- package/dist/csrf.d.ts +9 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +50 -3
- package/dist/index.js.map +9 -8
- package/dist/server.d.ts +1 -0
- package/dist/server.js +49 -3
- package/dist/server.js.map +10 -9
- package/dist/session/cookieReader.d.ts +10 -0
- package/package.json +1 -1
package/dist/server.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export type { SetupCapability, SetupSession, SetupSessionStore } from './portal/
|
|
|
14
14
|
export { createSetupSession } from './portal/operations';
|
|
15
15
|
export { createPostgresSetupSessionStore } from './portal/postgresSetupSessionStore';
|
|
16
16
|
export { protectRoutePlugin } from './routes/protectRoute';
|
|
17
|
+
export { readSessionCookie } from './session/cookieReader';
|
|
17
18
|
export { requireAuthPlugin } from './routes/requireAuth';
|
|
18
19
|
export type { ScimConfig } from './scim/config';
|
|
19
20
|
export type { ScimFilter, ScimGroup, ScimGroupInput, ScimTokenStore, ScimUser, ScimUserInput } from './scim/types';
|
package/dist/server.js
CHANGED
|
@@ -6149,6 +6149,20 @@ var isTrustedOrigin = (request, trustedOrigins) => {
|
|
|
6149
6149
|
const origin = request.headers.get("origin");
|
|
6150
6150
|
return origin !== null && trustedOrigins.includes(origin);
|
|
6151
6151
|
};
|
|
6152
|
+
var resolveOriginAllowed = async ({
|
|
6153
|
+
enforce = true,
|
|
6154
|
+
onUntrustedOrigin,
|
|
6155
|
+
request,
|
|
6156
|
+
trustedOrigins
|
|
6157
|
+
}) => {
|
|
6158
|
+
if (isTrustedOrigin(request, trustedOrigins))
|
|
6159
|
+
return true;
|
|
6160
|
+
await onUntrustedOrigin?.({
|
|
6161
|
+
origin: request.headers.get("origin"),
|
|
6162
|
+
request
|
|
6163
|
+
});
|
|
6164
|
+
return enforce === false;
|
|
6165
|
+
};
|
|
6152
6166
|
|
|
6153
6167
|
// src/credentials/import.ts
|
|
6154
6168
|
init_crypto();
|
|
@@ -6345,12 +6359,14 @@ var credentialsLogin = ({
|
|
|
6345
6359
|
checkBreachesOnLogin,
|
|
6346
6360
|
cookieSecure,
|
|
6347
6361
|
credentialStore,
|
|
6362
|
+
enforceTrustedOrigins,
|
|
6348
6363
|
getUserByEmail,
|
|
6349
6364
|
isMfaRequired,
|
|
6350
6365
|
lockoutGuard,
|
|
6351
6366
|
loginRoute = "/auth/login",
|
|
6352
6367
|
onCredentialsLoginError,
|
|
6353
6368
|
onCredentialsLoginSuccess,
|
|
6369
|
+
onUntrustedOrigin,
|
|
6354
6370
|
passwordVerifier,
|
|
6355
6371
|
rehashOnLogin = false,
|
|
6356
6372
|
requireEmailVerification = false,
|
|
@@ -6363,7 +6379,12 @@ var credentialsLogin = ({
|
|
|
6363
6379
|
status,
|
|
6364
6380
|
store: { session, unregisteredSession }
|
|
6365
6381
|
}) => withSpan("auth.credentials.login", undefined, async (span) => {
|
|
6366
|
-
if (!
|
|
6382
|
+
if (!await resolveOriginAllowed({
|
|
6383
|
+
enforce: enforceTrustedOrigins,
|
|
6384
|
+
onUntrustedOrigin,
|
|
6385
|
+
request,
|
|
6386
|
+
trustedOrigins
|
|
6387
|
+
})) {
|
|
6367
6388
|
return status("Forbidden", "Request origin is not allowed");
|
|
6368
6389
|
}
|
|
6369
6390
|
const headerBag = {};
|
|
@@ -6521,11 +6542,13 @@ var credentialsRegister = ({
|
|
|
6521
6542
|
authSessionStore,
|
|
6522
6543
|
cookieSecure,
|
|
6523
6544
|
credentialStore,
|
|
6545
|
+
enforceTrustedOrigins,
|
|
6524
6546
|
onCreateCredentialUser,
|
|
6525
6547
|
onCredentialsLoginSuccess,
|
|
6526
6548
|
onExistingAccount,
|
|
6527
6549
|
onRegistrationSuccess,
|
|
6528
6550
|
onSendEmail,
|
|
6551
|
+
onUntrustedOrigin,
|
|
6529
6552
|
passwordPolicy,
|
|
6530
6553
|
registerRoute = "/auth/register",
|
|
6531
6554
|
requireEmailVerification = false,
|
|
@@ -6540,7 +6563,12 @@ var credentialsRegister = ({
|
|
|
6540
6563
|
status,
|
|
6541
6564
|
store: { session }
|
|
6542
6565
|
}) => withSpan("auth.credentials.register", undefined, async () => {
|
|
6543
|
-
if (!
|
|
6566
|
+
if (!await resolveOriginAllowed({
|
|
6567
|
+
enforce: enforceTrustedOrigins,
|
|
6568
|
+
onUntrustedOrigin,
|
|
6569
|
+
request,
|
|
6570
|
+
trustedOrigins
|
|
6571
|
+
})) {
|
|
6544
6572
|
return status("Forbidden", "Request origin is not allowed");
|
|
6545
6573
|
}
|
|
6546
6574
|
const normalizedEmail = email.trim().toLowerCase();
|
|
@@ -25633,6 +25661,23 @@ var decodeSessionUserRecord = (value) => {
|
|
|
25633
25661
|
throw new TypeError("Persisted session user must be an object");
|
|
25634
25662
|
return value;
|
|
25635
25663
|
};
|
|
25664
|
+
// src/session/cookieReader.ts
|
|
25665
|
+
var SESSION_COOKIE_NAME = "user_session_id";
|
|
25666
|
+
var SESSION_COOKIE_PATTERN = new RegExp(`(?:^|;\\s*)${SESSION_COOKIE_NAME}=([^;]*)`);
|
|
25667
|
+
var readSessionCookie = (request) => {
|
|
25668
|
+
const header = request.headers.get("cookie");
|
|
25669
|
+
if (header === null)
|
|
25670
|
+
return null;
|
|
25671
|
+
const match = header.match(SESSION_COOKIE_PATTERN);
|
|
25672
|
+
const value = match?.[1];
|
|
25673
|
+
if (value === undefined)
|
|
25674
|
+
return null;
|
|
25675
|
+
try {
|
|
25676
|
+
return decodeURIComponent(value);
|
|
25677
|
+
} catch {
|
|
25678
|
+
return value;
|
|
25679
|
+
}
|
|
25680
|
+
};
|
|
25636
25681
|
// src/session/inMemoryStore.ts
|
|
25637
25682
|
var cloneSessionData = (value) => ({
|
|
25638
25683
|
...value
|
|
@@ -38749,6 +38794,7 @@ var auth2 = auth;
|
|
|
38749
38794
|
export {
|
|
38750
38795
|
userSessionIdTypebox,
|
|
38751
38796
|
requireAuthPlugin,
|
|
38797
|
+
readSessionCookie,
|
|
38752
38798
|
providers,
|
|
38753
38799
|
protectRoutePlugin,
|
|
38754
38800
|
isValidProviderOption,
|
|
@@ -38765,5 +38811,5 @@ export {
|
|
|
38765
38811
|
VerificationProviderError
|
|
38766
38812
|
};
|
|
38767
38813
|
|
|
38768
|
-
//# debugId=
|
|
38814
|
+
//# debugId=59EA26D2A962869F64756E2164756E21
|
|
38769
38815
|
//# sourceMappingURL=server.js.map
|