@absolutejs/auth 0.69.6 → 0.71.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
@@ -16,6 +16,7 @@ export { createPostgresSetupSessionStore } from './portal/postgresSetupSessionSt
16
16
  export { protectRoutePlugin } from './routes/protectRoute';
17
17
  export { readSessionCookie } from './session/cookieReader';
18
18
  export { requireAuthPlugin } from './routes/requireAuth';
19
+ export { createAbsoluteAuthSyncBridge, type AbsoluteAuthSyncBridge, type AbsoluteAuthSyncContext } from './syncBridge';
19
20
  export type { ScimConfig } from './scim/config';
20
21
  export type { ScimFilter, ScimGroup, ScimGroupInput, ScimTokenStore, ScimUser, ScimUserInput } from './scim/types';
21
22
  export { createPostgresScimTokenStore } from './scim/postgresScimTokenStore';
package/dist/server.js CHANGED
@@ -5771,6 +5771,75 @@ var stepUpPlugin = ({
5771
5771
  })
5772
5772
  })).as("global");
5773
5773
 
5774
+ // src/oidc/socketTickets.ts
5775
+ init_crypto();
5776
+ var DEFAULT_SOCKET_TICKET_TTL_MS = 30000;
5777
+ var TICKET_BYTES = 32;
5778
+ var consumeSocketTicket = async ({
5779
+ audience,
5780
+ getUser,
5781
+ now = Date.now(),
5782
+ store,
5783
+ ticket
5784
+ }) => {
5785
+ const record = await store.consumeTicket(await hashToken(ticket), now);
5786
+ if (!record || record.audience !== audience)
5787
+ return;
5788
+ const user = await getUser(record.subject);
5789
+ if (user === null)
5790
+ return;
5791
+ return {
5792
+ audience: record.audience,
5793
+ clientId: record.clientId,
5794
+ kind: "access-token",
5795
+ scopes: [...record.scopes],
5796
+ subject: record.subject,
5797
+ user
5798
+ };
5799
+ };
5800
+ var issueSocketTicket = async ({
5801
+ audience,
5802
+ clientId,
5803
+ now = Date.now(),
5804
+ scopes,
5805
+ store,
5806
+ subject,
5807
+ ttlMs = DEFAULT_SOCKET_TICKET_TTL_MS
5808
+ }) => {
5809
+ if (!Number.isFinite(ttlMs) || ttlMs <= 0)
5810
+ throw new Error("socketTicketTtlMs must be positive");
5811
+ const ticket = `ast_${generateSecureToken(TICKET_BYTES)}`;
5812
+ await store.saveTicket({
5813
+ audience,
5814
+ clientId,
5815
+ expiresAt: now + ttlMs,
5816
+ scopes: [...scopes],
5817
+ subject,
5818
+ ticketHash: await hashToken(ticket)
5819
+ });
5820
+ return { expiresInMs: ttlMs, ticket };
5821
+ };
5822
+
5823
+ // src/syncBridge.ts
5824
+ var toSyncContext = (authPrincipal) => authPrincipal ? { authPrincipal, user: authPrincipal.user } : undefined;
5825
+ var createAbsoluteAuthSyncBridge = (accessTokens) => ({
5826
+ consumeSocketTicket: async ({ audience, ticket }) => {
5827
+ const store = accessTokens.oidc.socketTicketStore;
5828
+ if (!store)
5829
+ return;
5830
+ return toSyncContext(await consumeSocketTicket({
5831
+ audience: audience ?? accessTokens.oidc.issuer,
5832
+ getUser: accessTokens.getUser,
5833
+ store,
5834
+ ticket
5835
+ }));
5836
+ },
5837
+ resolveBearer: async ({ authorization }) => toSyncContext(await resolveAccessTokenPrincipal({
5838
+ authorization,
5839
+ config: accessTokens
5840
+ }))
5841
+ });
5842
+
5774
5843
  // src/authContext.ts
5775
5844
  var createAuthContext = ({
5776
5845
  agentAuth,
@@ -5779,19 +5848,27 @@ var createAuthContext = ({
5779
5848
  authorization,
5780
5849
  emit,
5781
5850
  seedSource
5782
- }) => new Elysia8({
5783
- name: "@absolutejs/auth/context",
5784
- seed: pluginDependencySeed(seedSource)
5785
- }).use([
5786
- protectRoutePlugin({ accessTokens, authSessionStore }),
5787
- stepUpPlugin({ authSessionStore }),
5788
- authorization ? protectPermissionPlugin({
5789
- ...authorization,
5790
- authSessionStore,
5791
- emit
5792
- }) : new Elysia8,
5793
- agentAuthContextPlugin(agentAuth)
5794
- ]);
5851
+ }) => {
5852
+ const absoluteAuthSync = accessTokens ? createAbsoluteAuthSyncBridge(accessTokens) : undefined;
5853
+ const syncBridge = new Elysia8({
5854
+ name: "@absolutejs/auth/sync-bridge",
5855
+ seed: pluginDependencySeed(seedSource)
5856
+ }).decorate("absoluteAuthSync", absoluteAuthSync).as("global");
5857
+ return new Elysia8({
5858
+ name: "@absolutejs/auth/context",
5859
+ seed: pluginDependencySeed(seedSource)
5860
+ }).use([
5861
+ syncBridge,
5862
+ protectRoutePlugin({ accessTokens, authSessionStore }),
5863
+ stepUpPlugin({ authSessionStore }),
5864
+ authorization ? protectPermissionPlugin({
5865
+ ...authorization,
5866
+ authSessionStore,
5867
+ emit
5868
+ }) : new Elysia8,
5869
+ agentAuthContextPlugin(agentAuth)
5870
+ ]);
5871
+ };
5795
5872
 
5796
5873
  // src/compliance/routes.ts
5797
5874
  import { Elysia as Elysia9, t as t6 } from "elysia";
@@ -9406,57 +9483,6 @@ var updateRegisteredClient = async ({
9406
9483
 
9407
9484
  // src/oidc/socketTicketRoutes.ts
9408
9485
  import { Elysia as Elysia22, t as t15 } from "elysia";
9409
-
9410
- // src/oidc/socketTickets.ts
9411
- init_crypto();
9412
- var DEFAULT_SOCKET_TICKET_TTL_MS = 30000;
9413
- var TICKET_BYTES = 32;
9414
- var consumeSocketTicket = async ({
9415
- audience,
9416
- getUser,
9417
- now = Date.now(),
9418
- store,
9419
- ticket
9420
- }) => {
9421
- const record = await store.consumeTicket(await hashToken(ticket), now);
9422
- if (!record || record.audience !== audience)
9423
- return;
9424
- const user = await getUser(record.subject);
9425
- if (user === null)
9426
- return;
9427
- return {
9428
- audience: record.audience,
9429
- clientId: record.clientId,
9430
- kind: "access-token",
9431
- scopes: [...record.scopes],
9432
- subject: record.subject,
9433
- user
9434
- };
9435
- };
9436
- var issueSocketTicket = async ({
9437
- audience,
9438
- clientId,
9439
- now = Date.now(),
9440
- scopes,
9441
- store,
9442
- subject,
9443
- ttlMs = DEFAULT_SOCKET_TICKET_TTL_MS
9444
- }) => {
9445
- if (!Number.isFinite(ttlMs) || ttlMs <= 0)
9446
- throw new Error("socketTicketTtlMs must be positive");
9447
- const ticket = `ast_${generateSecureToken(TICKET_BYTES)}`;
9448
- await store.saveTicket({
9449
- audience,
9450
- clientId,
9451
- expiresAt: now + ttlMs,
9452
- scopes: [...scopes],
9453
- subject,
9454
- ticketHash: await hashToken(ticket)
9455
- });
9456
- return { expiresInMs: ttlMs, ticket };
9457
- };
9458
-
9459
- // src/oidc/socketTicketRoutes.ts
9460
9486
  var noStoreJson = (value, status) => new Response(JSON.stringify(value), {
9461
9487
  headers: {
9462
9488
  "cache-control": "no-store",
@@ -41383,9 +41409,10 @@ export {
41383
41409
  createPostgresScimTokenStore,
41384
41410
  createNodeSamlAdapter,
41385
41411
  createAuthContext,
41412
+ createAbsoluteAuthSyncBridge,
41386
41413
  auth2 as auth,
41387
41414
  VerificationProviderError
41388
41415
  };
41389
41416
 
41390
- //# debugId=09854CD88815EF0764756E2164756E21
41417
+ //# debugId=A98DDD902DA1838664756E2164756E21
41391
41418
  //# sourceMappingURL=server.js.map