@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/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 (!isTrustedOrigin(request, trustedOrigins)) {
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 (!isTrustedOrigin(request, trustedOrigins)) {
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=015C798311C7C14564756E2164756E21
38814
+ //# debugId=59EA26D2A962869F64756E2164756E21
38769
38815
  //# sourceMappingURL=server.js.map