@vibesdotdev/auth 1.0.0-rc.5 → 1.0.0-rc.9

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.
Files changed (80) hide show
  1. package/dist/api/auth.api-client.impl.d.ts.map +1 -1
  2. package/dist/api/auth.api-client.impl.js +5 -3
  3. package/dist/api/auth.api-client.impl.js.map +1 -1
  4. package/dist/cli/commands/logout/auth.logout.impl.d.ts.map +1 -1
  5. package/dist/cli/commands/logout/auth.logout.impl.js +7 -0
  6. package/dist/cli/commands/logout/auth.logout.impl.js.map +1 -1
  7. package/dist/client/admin.d.ts +1 -1
  8. package/dist/client/admin.d.ts.map +1 -1
  9. package/dist/client/admin.js +62 -24
  10. package/dist/client/admin.js.map +1 -1
  11. package/dist/config/auth.app-credentials.config.descriptor.d.ts.map +1 -1
  12. package/dist/config/auth.app-credentials.config.descriptor.js +0 -2
  13. package/dist/config/auth.app-credentials.config.descriptor.js.map +1 -1
  14. package/dist/config/auth.providers.config.descriptor.d.ts.map +1 -1
  15. package/dist/config/auth.providers.config.descriptor.js +3 -2
  16. package/dist/config/auth.providers.config.descriptor.js.map +1 -1
  17. package/dist/events/session-ending.event.descriptor.d.ts +30 -0
  18. package/dist/events/session-ending.event.descriptor.d.ts.map +1 -0
  19. package/dist/events/session-ending.event.descriptor.js +36 -0
  20. package/dist/events/session-ending.event.descriptor.js.map +1 -0
  21. package/dist/features/authorization/superorg.d.ts +50 -0
  22. package/dist/features/authorization/superorg.d.ts.map +1 -0
  23. package/dist/features/authorization/superorg.js +47 -0
  24. package/dist/features/authorization/superorg.js.map +1 -0
  25. package/dist/index.d.ts +2 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +1 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/policy/auth-policy.d.ts +86 -0
  30. package/dist/policy/auth-policy.d.ts.map +1 -0
  31. package/dist/policy/auth-policy.js +113 -0
  32. package/dist/policy/auth-policy.js.map +1 -0
  33. package/dist/runtime/auth-policy.config.descriptor.d.ts +10 -0
  34. package/dist/runtime/auth-policy.config.descriptor.d.ts.map +1 -0
  35. package/dist/runtime/auth-policy.config.descriptor.js +46 -0
  36. package/dist/runtime/auth-policy.config.descriptor.js.map +1 -0
  37. package/dist/runtime/auth.config.descriptor.js +1 -1
  38. package/dist/runtime/auth.config.descriptor.js.map +1 -1
  39. package/dist/runtime/auth.plugin.d.ts.map +1 -1
  40. package/dist/runtime/auth.plugin.js +2 -0
  41. package/dist/runtime/auth.plugin.js.map +1 -1
  42. package/dist/runtime/plugin/core.provider.d.ts.map +1 -1
  43. package/dist/runtime/plugin/core.provider.js +2 -0
  44. package/dist/runtime/plugin/core.provider.js.map +1 -1
  45. package/dist/schemas/admin/index.d.ts +18 -16
  46. package/dist/schemas/admin/index.d.ts.map +1 -1
  47. package/dist/schemas/admin/responses.d.ts +15 -0
  48. package/dist/schemas/admin/responses.d.ts.map +1 -1
  49. package/dist/schemas/admin/responses.js +20 -0
  50. package/dist/schemas/admin/responses.js.map +1 -1
  51. package/dist/schemas/mobile.config.descriptor.js +1 -1
  52. package/dist/schemas/mobile.config.descriptor.js.map +1 -1
  53. package/dist/server/jwt-session-handle.d.ts +10 -0
  54. package/dist/server/jwt-session-handle.d.ts.map +1 -1
  55. package/dist/server/jwt-session-handle.js +63 -8
  56. package/dist/server/jwt-session-handle.js.map +1 -1
  57. package/dist/server/registered-origin-resolver.d.ts +19 -0
  58. package/dist/server/registered-origin-resolver.d.ts.map +1 -1
  59. package/dist/server/registered-origin-resolver.js +52 -8
  60. package/dist/server/registered-origin-resolver.js.map +1 -1
  61. package/dist/svelte/index.d.ts +0 -1
  62. package/dist/svelte/index.d.ts.map +1 -1
  63. package/dist/svelte/index.js +3 -1
  64. package/dist/system/internal-api/client.d.ts +10 -1
  65. package/dist/system/internal-api/client.d.ts.map +1 -1
  66. package/dist/system/internal-api/client.js +17 -1
  67. package/dist/system/internal-api/client.js.map +1 -1
  68. package/dist/system/internal-api/endpoints.d.ts +7 -0
  69. package/dist/system/internal-api/endpoints.d.ts.map +1 -1
  70. package/dist/system/internal-api/endpoints.js +8 -1
  71. package/dist/system/internal-api/endpoints.js.map +1 -1
  72. package/dist/system/internal-api/index.d.ts +1 -1
  73. package/dist/system/internal-api/index.d.ts.map +1 -1
  74. package/dist/system/internal-api/index.js +1 -1
  75. package/dist/system/internal-api/index.js.map +1 -1
  76. package/dist/system/internal-api/schemas.d.ts +57 -0
  77. package/dist/system/internal-api/schemas.d.ts.map +1 -1
  78. package/dist/system/internal-api/schemas.js +42 -0
  79. package/dist/system/internal-api/schemas.js.map +1 -1
  80. package/package.json +69 -24
@@ -0,0 +1,47 @@
1
+ /**
2
+ * The platform superorganization.
3
+ *
4
+ * `vibesdotdev` owns the platform and holds the contracts that bind customer
5
+ * organizations: system maintenance, migration, and contractual obligations
6
+ * have to act INSIDE an organization's repositories, packages, hosts, storage,
7
+ * secrets, and deployments. That is a different authority from "a member of
8
+ * that org" — it is the platform owner acting on the org's behalf — so it has
9
+ * ONE declared identity here and every authorization surface reads this module
10
+ * instead of spelling the slug again.
11
+ *
12
+ * The slug is product identity, not deployment configuration: a host that
13
+ * renamed it would no longer be the platform. Membership is still verified by
14
+ * the owning surface (JWT claims for reads, Account's live membership check for
15
+ * mutations), and only owner/admin standing in this organization carries the
16
+ * cross-org authority. A viewer or member of `vibesdotdev` holds no cross-org
17
+ * right.
18
+ *
19
+ * This module is pure: no runtime, no I/O, no dependency beyond the claim shape
20
+ * its callers already carry. Platform, the registry worker, and any other
21
+ * consumer can import it without pulling a server runtime into their bundle.
22
+ */
23
+ /** The product identity of the platform superorganization. */
24
+ export const SUPERORG_ORGANIZATION_SLUG = 'vibesdotdev';
25
+ /** The org roles that may act for the superorganization. */
26
+ export const SUPERORG_ORGANIZATION_ROLES = ['owner', 'admin'];
27
+ /** Whether an organization role carries superorganization authority. */
28
+ export function isSuperorgOrganizationRole(role) {
29
+ return SUPERORG_ORGANIZATION_ROLES.some((allowed) => allowed === role);
30
+ }
31
+ /** Whether an organization record/claim names the superorganization. */
32
+ export function isSuperorgOrganization(organization) {
33
+ return organization?.slug?.trim().toLowerCase() === SUPERORG_ORGANIZATION_SLUG;
34
+ }
35
+ /**
36
+ * Whether an org claim carries superorganization authority. Membership alone
37
+ * is not enough: the claim must name the superorganization AND hold an
38
+ * owner/admin role.
39
+ */
40
+ export function isSuperorgClaim(claim) {
41
+ return isSuperorgOrganization(claim) && isSuperorgOrganizationRole(claim?.role);
42
+ }
43
+ /** The first superorganization claim in a claim set, when the caller holds one. */
44
+ export function findSuperorgClaim(claims) {
45
+ return claims.find(isSuperorgClaim);
46
+ }
47
+ //# sourceMappingURL=superorg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"superorg.js","sourceRoot":"","sources":["../../../src/features/authorization/superorg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,8DAA8D;AAC9D,MAAM,CAAC,MAAM,0BAA0B,GAAG,aAAa,CAAC;AAExD,4DAA4D;AAC5D,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,OAAO,EAAE,OAAO,CAAU,CAAC;AAevE,wEAAwE;AACxE,MAAM,UAAU,0BAA0B,CAAC,IAA+B;IACzE,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AACxE,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,sBAAsB,CAAC,YAAiD;IACvF,OAAO,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,0BAA0B,CAAC;AAChF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAA+C;IAC9E,OAAO,sBAAsB,CAAC,KAAK,CAAC,IAAI,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACjF,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,iBAAiB,CAChC,MAAwB;IAExB,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACrC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -47,6 +47,8 @@ export type { RoleListItem, PermissionListItem, UserRoleAssignment, PermissionTr
47
47
  export type { GuardConfig, RouteGuardConfig, ResourceGuardConfig } from './features/permissions/schemas/index.ts';
48
48
  export { authorizationPrincipalSchema, authorizationGateSchema, organizationAuthorizationRoleSchema, authorizationRequestSchema, authorizationDecisionReasonSchema, authorizationDecisionEvidenceSchema, authorizationDecisionSchema, authorize, hasOrganizationPermission, authorizeOrganizationPermission, organizationAuthorizationRequestSchema, organizationAuthorizationResultSchema } from './features/authorization/organization-policy.ts';
49
49
  export type { AuthorizationPrincipal, AuthorizationGate, AuthorizationRequest, AuthorizationDecision, OrganizationAuthorizationRole, OrganizationAuthorizationRequest, OrganizationAuthorizationResult } from './features/authorization/organization-policy.ts';
50
+ export { SUPERORG_ORGANIZATION_ROLES, SUPERORG_ORGANIZATION_SLUG, findSuperorgClaim, isSuperorgClaim, isSuperorgOrganization, isSuperorgOrganizationRole } from './features/authorization/superorg.ts';
51
+ export type { OrganizationClaimLike, OrganizationLike, SuperorgOrganizationRole } from './features/authorization/superorg.ts';
50
52
  export type { AuthUser, NamedRow, PermissionCheckResult, PermissionContext, PermissionDefinition, PermissionRequirement, PermissionRequirementWithResourceId, ResourceOwnership, RoleDefinition, SeedMappingRow, SeedPermissionInput, SeedPermissionRow, SeedRoleInput, SeedRoleRow, UserPermissionRow, UserRoleRow } from './features/permissions/schemas/index.ts';
51
53
  export { authUserSchema, namedRowSchema, permissionCheckResultSchema, permissionContextSchema, permissionDefinitionSchema, permissionRequirementSchema, permissionRequirementWithResourceIdSchema, resourceOwnershipSchema, roleDefinitionSchema, seedMappingRowSchema, seedPermissionInputSchema, seedPermissionRowSchema, seedRoleInputSchema, seedRoleRowSchema, userPermissionRowSchema, userRoleRowSchema } from './features/permissions/schemas/index.ts';
52
54
  export { default as authConfigDescriptor } from './runtime/auth.config.descriptor.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -23,6 +23,7 @@ export { oauthProviderDisplaySchema } from "./features/oauth/schemas/index.js";
23
23
  export { createRoleSchema, updateRoleSchema, assignRoleSchema, createPermissionSchema, grantPermissionsSchema, revokePermissionsSchema, checkPermissionSchema, permissionActionSchema, permissionResourceSchema, systemRoles, isSystemRole } from "./features/permissions/schemas/index.js";
24
24
  export { roleSelectionSchema, permissionFilterSchema, roleAssignmentModalSchema, permissionViewStateSchema } from "./features/permissions/schemas/index.js";
25
25
  export { authorizationPrincipalSchema, authorizationGateSchema, organizationAuthorizationRoleSchema, authorizationRequestSchema, authorizationDecisionReasonSchema, authorizationDecisionEvidenceSchema, authorizationDecisionSchema, authorize, hasOrganizationPermission, authorizeOrganizationPermission, organizationAuthorizationRequestSchema, organizationAuthorizationResultSchema } from "./features/authorization/organization-policy.js";
26
+ export { SUPERORG_ORGANIZATION_ROLES, SUPERORG_ORGANIZATION_SLUG, findSuperorgClaim, isSuperorgClaim, isSuperorgOrganization, isSuperorgOrganizationRole } from "./features/authorization/superorg.js";
26
27
  export { authUserSchema, namedRowSchema, permissionCheckResultSchema, permissionContextSchema, permissionDefinitionSchema, permissionRequirementSchema, permissionRequirementWithResourceIdSchema, resourceOwnershipSchema, roleDefinitionSchema, seedMappingRowSchema, seedPermissionInputSchema, seedPermissionRowSchema, seedRoleInputSchema, seedRoleRowSchema, userPermissionRowSchema, userRoleRowSchema } from "./features/permissions/schemas/index.js";
27
28
  // Runtime descriptors
28
29
  export { default as authConfigDescriptor } from "./runtime/auth.config.descriptor.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * `auth.policy` — the declared authentication policy, owned and enforced by
3
+ * the auth runtime (never stored by a console that nothing reads).
4
+ *
5
+ * - `password`: length and character-class rules every credential password
6
+ * must satisfy. Enforced server-side where a password is accepted
7
+ * (sign-up, reset, change, set).
8
+ * - `session`: how long a session lives and when its expiry rolls. Applied
9
+ * when the auth runtime builds its session configuration.
10
+ * - `twoFactor.requirement`: `required` means a signed-in user without a
11
+ * second factor is admitted only to enrollment until they enroll. Every
12
+ * interactive principal can: a password user confirms with the password, a
13
+ * passwordless user with a recent provider sign-in.
14
+ *
15
+ * Values resolve through the runtime
16
+ * (`ConfigManifest.forRuntime(runtime, 'auth.policy')`): these schema defaults,
17
+ * overlaid by the host composition and any stored edit. A console (System
18
+ * Web) edits this manifest; it never keeps a second copy.
19
+ */
20
+ import * as z from 'zod/v4';
21
+ import { type RuntimeRef } from '@vibesdotdev/kernel';
22
+ export declare const AUTH_POLICY_MANIFEST_ID = "auth.policy";
23
+ export declare const PasswordPolicySchema: z.ZodObject<{
24
+ minLength: z.ZodDefault<z.ZodNumber>;
25
+ maxLength: z.ZodDefault<z.ZodNumber>;
26
+ requireUppercase: z.ZodDefault<z.ZodBoolean>;
27
+ requireLowercase: z.ZodDefault<z.ZodBoolean>;
28
+ requireNumber: z.ZodDefault<z.ZodBoolean>;
29
+ requireSpecial: z.ZodDefault<z.ZodBoolean>;
30
+ }, z.core.$strict>;
31
+ export declare const SessionPolicySchema: z.ZodObject<{
32
+ lifetimeSeconds: z.ZodDefault<z.ZodNumber>;
33
+ refreshAfterSeconds: z.ZodDefault<z.ZodNumber>;
34
+ }, z.core.$strict>;
35
+ export declare const TwoFactorRequirementSchema: z.ZodEnum<{
36
+ optional: "optional";
37
+ required: "required";
38
+ }>;
39
+ export declare const AuthPolicySchema: z.ZodObject<{
40
+ password: z.ZodPrefault<z.ZodObject<{
41
+ minLength: z.ZodDefault<z.ZodNumber>;
42
+ maxLength: z.ZodDefault<z.ZodNumber>;
43
+ requireUppercase: z.ZodDefault<z.ZodBoolean>;
44
+ requireLowercase: z.ZodDefault<z.ZodBoolean>;
45
+ requireNumber: z.ZodDefault<z.ZodBoolean>;
46
+ requireSpecial: z.ZodDefault<z.ZodBoolean>;
47
+ }, z.core.$strict>>;
48
+ session: z.ZodPrefault<z.ZodObject<{
49
+ lifetimeSeconds: z.ZodDefault<z.ZodNumber>;
50
+ refreshAfterSeconds: z.ZodDefault<z.ZodNumber>;
51
+ }, z.core.$strict>>;
52
+ twoFactor: z.ZodPrefault<z.ZodObject<{
53
+ requirement: z.ZodDefault<z.ZodEnum<{
54
+ optional: "optional";
55
+ required: "required";
56
+ }>>;
57
+ }, z.core.$strict>>;
58
+ }, z.core.$strict>;
59
+ export type AuthPolicy = z.infer<typeof AuthPolicySchema>;
60
+ export type PasswordPolicy = z.infer<typeof PasswordPolicySchema>;
61
+ /** The one reason a password fails the policy; the set a caller shows is the whole list. */
62
+ export declare const PasswordViolationSchema: z.ZodEnum<{
63
+ "password-too-short": "password-too-short";
64
+ "password-too-long": "password-too-long";
65
+ "password-needs-uppercase": "password-needs-uppercase";
66
+ "password-needs-lowercase": "password-needs-lowercase";
67
+ "password-needs-number": "password-needs-number";
68
+ "password-needs-special": "password-needs-special";
69
+ }>;
70
+ export type PasswordViolation = z.infer<typeof PasswordViolationSchema>;
71
+ /** Every rule `password` breaks under `policy`; empty when it satisfies the policy. */
72
+ export declare function passwordViolations(policy: PasswordPolicy, password: string): PasswordViolation[];
73
+ /** Refuse a password that breaks the policy with a typed, value-free error. */
74
+ export declare function assertPasswordMeetsPolicy(policy: PasswordPolicy, password: string): void;
75
+ /** The policy as the auth runtime resolves it now: schema defaults, composition, stored edit. */
76
+ export declare function loadAuthPolicy(runtime: RuntimeRef): Promise<AuthPolicy>;
77
+ /** Session lifetime and roll interval in the units the session store takes. */
78
+ export declare function sessionLifetime(policy: AuthPolicy): {
79
+ expiresIn: number;
80
+ updateAge: number;
81
+ };
82
+ /** True when a user without a second factor must enroll before anything else. */
83
+ export declare function twoFactorEnrollmentRequired(policy: AuthPolicy, user: {
84
+ twoFactorEnabled: boolean;
85
+ }): boolean;
86
+ //# sourceMappingURL=auth-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-policy.d.ts","sourceRoot":"","sources":["../../src/policy/auth-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGvE,eAAO,MAAM,uBAAuB,gBAAgB,CAAC;AAKrD,eAAO,MAAM,oBAAoB;;;;;;;kBAO/B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;kBAK9B,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;EAAmC,CAAC;AAE3E,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;kBAa1B,CAAC;AAEJ,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,4FAA4F;AAC5F,eAAO,MAAM,uBAAuB;;;;;;;EAOlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,uFAAuF;AACvF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAShG;AAED,+EAA+E;AAC/E,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQxF;AAED,iGAAiG;AACjG,wBAAsB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAe7E;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAE5F;AAED,iFAAiF;AACjF,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;IAAE,gBAAgB,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAE5G"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * `auth.policy` — the declared authentication policy, owned and enforced by
3
+ * the auth runtime (never stored by a console that nothing reads).
4
+ *
5
+ * - `password`: length and character-class rules every credential password
6
+ * must satisfy. Enforced server-side where a password is accepted
7
+ * (sign-up, reset, change, set).
8
+ * - `session`: how long a session lives and when its expiry rolls. Applied
9
+ * when the auth runtime builds its session configuration.
10
+ * - `twoFactor.requirement`: `required` means a signed-in user without a
11
+ * second factor is admitted only to enrollment until they enroll. Every
12
+ * interactive principal can: a password user confirms with the password, a
13
+ * passwordless user with a recent provider sign-in.
14
+ *
15
+ * Values resolve through the runtime
16
+ * (`ConfigManifest.forRuntime(runtime, 'auth.policy')`): these schema defaults,
17
+ * overlaid by the host composition and any stored edit. A console (System
18
+ * Web) edits this manifest; it never keeps a second copy.
19
+ */
20
+ import * as z from 'zod/v4';
21
+ import { CapabilityError } from '@vibesdotdev/kernel';
22
+ import { ConfigManifest } from '@vibesdotdev/config/manifest/config-manifest';
23
+ export const AUTH_POLICY_MANIFEST_ID = 'auth.policy';
24
+ const NINETY_DAYS_SECONDS = 60 * 60 * 24 * 90;
25
+ const ONE_DAY_SECONDS = 60 * 60 * 24;
26
+ export const PasswordPolicySchema = z.strictObject({
27
+ minLength: z.number().int().min(8).max(128).default(8),
28
+ maxLength: z.number().int().min(8).max(256).default(128),
29
+ requireUppercase: z.boolean().default(false),
30
+ requireLowercase: z.boolean().default(false),
31
+ requireNumber: z.boolean().default(false),
32
+ requireSpecial: z.boolean().default(false)
33
+ });
34
+ export const SessionPolicySchema = z.strictObject({
35
+ /** Seconds a session lives from its last roll. */
36
+ lifetimeSeconds: z.number().int().min(300).max(60 * 60 * 24 * 365).default(NINETY_DAYS_SECONDS),
37
+ /** Seconds after which use of a session rolls its expiry forward. */
38
+ refreshAfterSeconds: z.number().int().min(60).default(ONE_DAY_SECONDS)
39
+ });
40
+ export const TwoFactorRequirementSchema = z.enum(['optional', 'required']);
41
+ export const AuthPolicySchema = z
42
+ .strictObject({
43
+ password: PasswordPolicySchema.prefault({}),
44
+ session: SessionPolicySchema.prefault({}),
45
+ twoFactor: z.strictObject({ requirement: TwoFactorRequirementSchema.default('optional') }).prefault({})
46
+ })
47
+ .refine((policy) => policy.password.maxLength >= policy.password.minLength, {
48
+ path: ['password', 'maxLength'],
49
+ message: 'The maximum password length must not be below the minimum.'
50
+ })
51
+ .refine((policy) => policy.session.refreshAfterSeconds <= policy.session.lifetimeSeconds, {
52
+ path: ['session', 'refreshAfterSeconds'],
53
+ message: 'A session must be refreshable within its lifetime.'
54
+ });
55
+ /** The one reason a password fails the policy; the set a caller shows is the whole list. */
56
+ export const PasswordViolationSchema = z.enum([
57
+ 'password-too-short',
58
+ 'password-too-long',
59
+ 'password-needs-uppercase',
60
+ 'password-needs-lowercase',
61
+ 'password-needs-number',
62
+ 'password-needs-special'
63
+ ]);
64
+ /** Every rule `password` breaks under `policy`; empty when it satisfies the policy. */
65
+ export function passwordViolations(policy, password) {
66
+ const violations = [];
67
+ if (password.length < policy.minLength)
68
+ violations.push('password-too-short');
69
+ if (password.length > policy.maxLength)
70
+ violations.push('password-too-long');
71
+ if (policy.requireUppercase && !/\p{Lu}/u.test(password))
72
+ violations.push('password-needs-uppercase');
73
+ if (policy.requireLowercase && !/\p{Ll}/u.test(password))
74
+ violations.push('password-needs-lowercase');
75
+ if (policy.requireNumber && !/\p{N}/u.test(password))
76
+ violations.push('password-needs-number');
77
+ if (policy.requireSpecial && !/[^\p{L}\p{N}\s]/u.test(password))
78
+ violations.push('password-needs-special');
79
+ return violations;
80
+ }
81
+ /** Refuse a password that breaks the policy with a typed, value-free error. */
82
+ export function assertPasswordMeetsPolicy(policy, password) {
83
+ const violations = passwordViolations(policy, password);
84
+ if (violations.length === 0)
85
+ return;
86
+ throw new CapabilityError('The password does not meet the password policy.', 'INVALID_INPUT', {
87
+ reason: 'password-policy-violation',
88
+ recoveryHint: 'Choose a password that satisfies the listed rules.',
89
+ details: { violations }
90
+ });
91
+ }
92
+ /** The policy as the auth runtime resolves it now: schema defaults, composition, stored edit. */
93
+ export async function loadAuthPolicy(runtime) {
94
+ // A host that never composed the manifest has no declared policy; defaults are not guessed for it.
95
+ if (!ConfigManifest.isRegistered(runtime, AUTH_POLICY_MANIFEST_ID)) {
96
+ throw new CapabilityError("This host reads the authentication policy but does not compose the 'auth.policy' manifest.", 'UNAVAILABLE', {
97
+ reason: 'auth-policy-not-composed',
98
+ retryable: false,
99
+ details: { manifest: AUTH_POLICY_MANIFEST_ID },
100
+ recoveryHint: "Select '@vibesdotdev/auth/plugin' in this host's composition, which registers 'auth.policy'."
101
+ });
102
+ }
103
+ return AuthPolicySchema.parse(await ConfigManifest.forRuntime(runtime, AUTH_POLICY_MANIFEST_ID).load());
104
+ }
105
+ /** Session lifetime and roll interval in the units the session store takes. */
106
+ export function sessionLifetime(policy) {
107
+ return { expiresIn: policy.session.lifetimeSeconds, updateAge: policy.session.refreshAfterSeconds };
108
+ }
109
+ /** True when a user without a second factor must enroll before anything else. */
110
+ export function twoFactorEnrollmentRequired(policy, user) {
111
+ return policy.twoFactor.requirement === 'required' && !user.twoFactorEnabled;
112
+ }
113
+ //# sourceMappingURL=auth-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-policy.js","sourceRoot":"","sources":["../../src/policy/auth-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `auth.policy` config manifest descriptor — the authentication policy the
3
+ * auth runtime enforces (see `../policy/auth-policy.ts`). A console edits
4
+ * this manifest; auth-web reads it where it accepts passwords, builds
5
+ * sessions, and admits signed-in users.
6
+ */
7
+ import type { ConfigManifestDescriptor } from '@vibesdotdev/config/schemas/config-manifest-descriptor';
8
+ declare const descriptor: ConfigManifestDescriptor;
9
+ export default descriptor;
10
+ //# sourceMappingURL=auth-policy.config.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-policy.config.descriptor.d.ts","sourceRoot":"","sources":["../../src/runtime/auth-policy.config.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wDAAwD,CAAC;AAGvG,QAAA,MAAM,UAAU,EAAE,wBA0CjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { AUTH_POLICY_MANIFEST_ID, AuthPolicySchema } from "../policy/auth-policy.js";
2
+ const descriptor = {
3
+ kind: 'config/manifest',
4
+ id: AUTH_POLICY_MANIFEST_ID,
5
+ name: 'Authentication policy',
6
+ description: 'Password rules, session lifetime, and the second-factor requirement the auth runtime enforces',
7
+ namespace: AUTH_POLICY_MANIFEST_ID,
8
+ schema: AuthPolicySchema,
9
+ allowedAdapters: ['storage.json', 'storage.localdb'],
10
+ scope: 'global',
11
+ customTables: false,
12
+ version: 1,
13
+ internal: false,
14
+ tier: 'system',
15
+ category: 'auth',
16
+ fields: {
17
+ 'password.minLength': { ui: { label: 'Minimum length', component: 'number', group: 'password' } },
18
+ 'password.maxLength': { ui: { label: 'Maximum length', component: 'number', group: 'password' } },
19
+ 'password.requireUppercase': { ui: { label: 'Require an uppercase letter', component: 'switch', group: 'password' } },
20
+ 'password.requireLowercase': { ui: { label: 'Require a lowercase letter', component: 'switch', group: 'password' } },
21
+ 'password.requireNumber': { ui: { label: 'Require a number', component: 'switch', group: 'password' } },
22
+ 'password.requireSpecial': { ui: { label: 'Require a special character', component: 'switch', group: 'password' } },
23
+ 'session.lifetimeSeconds': { ui: { label: 'Session lifetime (seconds)', component: 'number', group: 'session' } },
24
+ 'session.refreshAfterSeconds': { ui: { label: 'Roll expiry after (seconds)', component: 'number', group: 'session' } },
25
+ 'twoFactor.requirement': {
26
+ ui: {
27
+ label: 'Second factor',
28
+ description: 'Required: signed-in users without a second factor may only enroll until they do.',
29
+ component: 'select',
30
+ group: 'twoFactor'
31
+ },
32
+ options: [
33
+ { value: 'optional', label: 'Optional' },
34
+ { value: 'required', label: 'Required' }
35
+ ]
36
+ }
37
+ },
38
+ groups: [
39
+ { id: 'password', label: 'Passwords', order: 1 },
40
+ { id: 'session', label: 'Sessions', order: 2 },
41
+ { id: 'twoFactor', label: 'Second factor', order: 3 }
42
+ ],
43
+ enabled: true
44
+ };
45
+ export default descriptor;
46
+ //# sourceMappingURL=auth-policy.config.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-policy.config.descriptor.js","sourceRoot":"","sources":["../../src/runtime/auth-policy.config.descriptor.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAErF,MAAM,UAAU,GAA6B;IAC5C,IAAI,EAAE,iBAAiB;IACvB,EAAE,EAAE,uBAAuB;IAC3B,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,+FAA+F;IAC5G,SAAS,EAAE,uBAAuB;IAClC,MAAM,EAAE,gBAAgB;IACxB,eAAe,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC;IACpD,KAAK,EAAE,QAAQ;IACf,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE;QACP,oBAAoB,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;QACjG,oBAAoB,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;QACjG,2BAA2B,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;QACrH,2BAA2B,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;QACpH,wBAAwB,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;QACvG,yBAAyB,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;QACnH,yBAAyB,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;QACjH,6BAA6B,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;QACtH,uBAAuB,EAAE;YACxB,EAAE,EAAE;gBACH,KAAK,EAAE,eAAe;gBACtB,WAAW,EAAE,kFAAkF;gBAC/F,SAAS,EAAE,QAAQ;gBACnB,KAAK,EAAE,WAAW;aAClB;YACD,OAAO,EAAE;gBACR,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;gBACxC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;aACxC;SACD;KACD;IACD,MAAM,EAAE;QACP,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE;QAChD,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE;QAC9C,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE;KACrD;IACD,OAAO,EAAE,IAAI;CACb,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -25,7 +25,7 @@ const descriptor = {
25
25
  // Storage configuration
26
26
  namespace: 'auth',
27
27
  schema: authCredentialsSchema,
28
- allowedAdapters: ['storage.localdb'],
28
+ allowedAdapters: ['storage.localdb', 'storage.json'],
29
29
  scope: 'global',
30
30
  customTables: false,
31
31
  version: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"auth.config.descriptor.js","sourceRoot":"","sources":["../../src/runtime/auth.config.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE;;;;;;;;GAQG;AACH,MAAM,UAAU,GAA6B;IAC5C,IAAI,EAAE,iBAAiB;IACvB,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,2CAA2C;IAExD,wBAAwB;IACxB,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE,qBAAqB;IAC7B,eAAe,EAAE,CAAC,iBAAiB,CAAC;IACpC,KAAK,EAAE,QAAQ;IACf,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,KAAK;IAEf,+EAA+E;IAC/E,eAAe,EAAE;QAChB,mBAAmB;QACnB,oBAAoB;QACpB,0BAA0B;QAC1B,0BAA0B;KAC1B;IAED,iCAAiC;IACjC,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,QAAQ;IAElB,wBAAwB;IACxB,MAAM,EAAE;QACP,mBAAmB,EAAE;YACpB,EAAE,EAAE;gBACH,KAAK,EAAE,WAAW;gBAClB,WAAW,EAAE,qCAAqC;gBAClD,SAAS,EAAE,QAAQ;aACnB;SACD;QACD,oBAAoB,EAAE;YACrB,EAAE,EAAE;gBACH,KAAK,EAAE,SAAS;gBAChB,WAAW,EAAE,4BAA4B;gBACzC,SAAS,EAAE,QAAQ;aACnB;SACD;QACD,0BAA0B,EAAE;YAC3B,EAAE,EAAE;gBACH,KAAK,EAAE,eAAe;gBACtB,WAAW,EAAE,0BAA0B;gBACvC,SAAS,EAAE,QAAQ;aACnB;SACD;QACD,0BAA0B,EAAE;YAC3B,EAAE,EAAE;gBACH,KAAK,EAAE,eAAe;gBACtB,WAAW,EAAE,wCAAwC;gBACrD,SAAS,EAAE,QAAQ;aACnB;SACD;KACD;IAED,aAAa;IACb,UAAU,EAAE;QACX,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,CAAC;KACR;IAED,OAAO,EAAE,IAAI;CACb,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"auth.config.descriptor.js","sourceRoot":"","sources":["../../src/runtime/auth.config.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE;;;;;;;;GAQG;AACH,MAAM,UAAU,GAA6B;IAC5C,IAAI,EAAE,iBAAiB;IACvB,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,2CAA2C;IAExD,wBAAwB;IACxB,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE,qBAAqB;IAC7B,eAAe,EAAE,CAAC,iBAAiB,EAAE,cAAc,CAAC;IACpD,KAAK,EAAE,QAAQ;IACf,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,KAAK;IAEf,+EAA+E;IAC/E,eAAe,EAAE;QAChB,mBAAmB;QACnB,oBAAoB;QACpB,0BAA0B;QAC1B,0BAA0B;KAC1B;IAED,iCAAiC;IACjC,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,QAAQ;IAElB,wBAAwB;IACxB,MAAM,EAAE;QACP,mBAAmB,EAAE;YACpB,EAAE,EAAE;gBACH,KAAK,EAAE,WAAW;gBAClB,WAAW,EAAE,qCAAqC;gBAClD,SAAS,EAAE,QAAQ;aACnB;SACD;QACD,oBAAoB,EAAE;YACrB,EAAE,EAAE;gBACH,KAAK,EAAE,SAAS;gBAChB,WAAW,EAAE,4BAA4B;gBACzC,SAAS,EAAE,QAAQ;aACnB;SACD;QACD,0BAA0B,EAAE;YAC3B,EAAE,EAAE;gBACH,KAAK,EAAE,eAAe;gBACtB,WAAW,EAAE,0BAA0B;gBACvC,SAAS,EAAE,QAAQ;aACnB;SACD;QACD,0BAA0B,EAAE;YAC3B,EAAE,EAAE;gBACH,KAAK,EAAE,eAAe;gBACtB,WAAW,EAAE,wCAAwC;gBACrD,SAAS,EAAE,QAAQ;aACnB;SACD;KACD;IAED,aAAa;IACb,UAAU,EAAE;QACX,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,CAAC;KACR;IAED,OAAO,EAAE,IAAI;CACb,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.plugin.d.ts","sourceRoot":"","sources":["../../src/runtime/auth.plugin.ts"],"names":[],"mappings":"AAuBA,QAAA,MAAM,aAAa,6CA+CjB,CAAC;AAEH,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"auth.plugin.d.ts","sourceRoot":"","sources":["../../src/runtime/auth.plugin.ts"],"names":[],"mappings":"AAwBA,QAAA,MAAM,aAAa,6CAgDjB,CAAC;AAEH,eAAe,aAAa,CAAC"}
@@ -5,6 +5,7 @@ import authCoreProviderPlugin from "./plugin/core.provider.js";
5
5
  import authSupportPlugin from "./plugin/support.js";
6
6
  import authApiClientPlugin from "./plugin/api-client.js";
7
7
  import authLoginSucceededEventDescriptor from "../events/session-established.event.descriptor.js";
8
+ import authLogoutStartedEventDescriptor from "../events/session-ending.event.descriptor.js";
8
9
  import authEmailConfigDescriptor from "../features/email/email.config.descriptor.js";
9
10
  import authOnClientAuthRejectedSubscription from "../events/on-client-auth-rejected.subscription.descriptor.js";
10
11
  // Docs
@@ -30,6 +31,7 @@ const defaultExport = createRuntimePlugin({
30
31
  providersDescriptor,
31
32
  keysDescriptor,
32
33
  authLoginSucceededEventDescriptor,
34
+ authLogoutStartedEventDescriptor,
33
35
  authDeviceSessionCapabilityDescriptor,
34
36
  authOnClientAuthRejectedSubscription
35
37
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"auth.plugin.js","sourceRoot":"","sources":["../../src/runtime/auth.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACN,qCAAqC,EACrC,mCAAmC,EACnC,+BAA+B,EAC/B,MAAM,qDAAqD,CAAC;AAC7D,OAAO,sBAAsB,MAAM,2BAA2B,CAAC;AAC/D,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,mBAAmB,MAAM,wBAAwB,CAAC;AACzD,OAAO,iCAAiC,MAAM,mDAAmD,CAAC;AAClG,OAAO,yBAAyB,MAAM,8CAA8C,CAAC;AACrF,OAAO,oCAAoC,MAAM,8DAA8D,CAAC;AAEhH,OAAO;AACP,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAC7D,OAAO,eAAe,MAAM,kCAAkC,CAAC;AAC/D,OAAO,kBAAkB,MAAM,qCAAqC,CAAC;AACrE,OAAO,eAAe,MAAM,kCAAkC,CAAC;AAC/D,OAAO,mBAAmB,MAAM,2CAA2C,CAAC;AAC5E,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAE7D,kIAAkI;AAClI,MAAM,aAAa,GAAG,mBAAmB,CAAC;IACzC,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,iDAAiD;IAC9D,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC;IAClD,KAAK,EAAE,CAAC,gBAAgB,EAAE,+BAA+B,CAAC;IAC1D,WAAW,EAAE;QACZ,yBAAyB;QACzB,cAAc;QACd,eAAe;QACf,kBAAkB;QAClB,eAAe;QACf,mBAAmB;QACnB,cAAc;QACd,iCAAiC;QACjC,qCAAqC;QACrC,oCAAoC;KACpC;IACD,OAAO,EAAE;QACR,MAAM,CACL,wBAAwB,EACxB,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAC5B,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,6CAA6C,CAAC,CACjE;QACD,MAAM,CACL,oCAAoC,EACpC,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAChC,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAC/D;QACD,2EAA2E;QAC3E,sEAAsE;QACtE,sEAAsE;QACtE,sBAAsB;KACtB;IACD,eAAe,EAAE;QAChB;YACC,MAAM,EAAE,+BAA+B,CAAC,EAAE;YAC1C,OAAO,EAAE,qCAAqC,CAAC,EAAE;YACjD,QAAQ,EAAE,mCAAmC;SAC7C;KACD;IAED,KAAK,CAAC,UAAU,CAAC,OAAO;QACvB,MAAM,OAAO,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC;QACrD,MAAM,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAChD,MAAM,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IACnD,CAAC;CACD,CAAC,CAAC;AAEH,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"auth.plugin.js","sourceRoot":"","sources":["../../src/runtime/auth.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACN,qCAAqC,EACrC,mCAAmC,EACnC,+BAA+B,EAC/B,MAAM,qDAAqD,CAAC;AAC7D,OAAO,sBAAsB,MAAM,2BAA2B,CAAC;AAC/D,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,mBAAmB,MAAM,wBAAwB,CAAC;AACzD,OAAO,iCAAiC,MAAM,mDAAmD,CAAC;AAClG,OAAO,gCAAgC,MAAM,8CAA8C,CAAC;AAC5F,OAAO,yBAAyB,MAAM,8CAA8C,CAAC;AACrF,OAAO,oCAAoC,MAAM,8DAA8D,CAAC;AAEhH,OAAO;AACP,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAC7D,OAAO,eAAe,MAAM,kCAAkC,CAAC;AAC/D,OAAO,kBAAkB,MAAM,qCAAqC,CAAC;AACrE,OAAO,eAAe,MAAM,kCAAkC,CAAC;AAC/D,OAAO,mBAAmB,MAAM,2CAA2C,CAAC;AAC5E,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAE7D,kIAAkI;AAClI,MAAM,aAAa,GAAG,mBAAmB,CAAC;IACzC,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,iDAAiD;IAC9D,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC;IAClD,KAAK,EAAE,CAAC,gBAAgB,EAAE,+BAA+B,CAAC;IAC1D,WAAW,EAAE;QACZ,yBAAyB;QACzB,cAAc;QACd,eAAe;QACf,kBAAkB;QAClB,eAAe;QACf,mBAAmB;QACnB,cAAc;QACd,iCAAiC;QACjC,gCAAgC;QAChC,qCAAqC;QACrC,oCAAoC;KACpC;IACD,OAAO,EAAE;QACR,MAAM,CACL,wBAAwB,EACxB,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAC5B,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,6CAA6C,CAAC,CACjE;QACD,MAAM,CACL,oCAAoC,EACpC,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAChC,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAC/D;QACD,2EAA2E;QAC3E,sEAAsE;QACtE,sEAAsE;QACtE,sBAAsB;KACtB;IACD,eAAe,EAAE;QAChB;YACC,MAAM,EAAE,+BAA+B,CAAC,EAAE;YAC1C,OAAO,EAAE,qCAAqC,CAAC,EAAE;YACjD,QAAQ,EAAE,mCAAmC;SAC7C;KACD;IAED,KAAK,CAAC,UAAU,CAAC,OAAO;QACvB,MAAM,OAAO,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC;QACrD,MAAM,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAChD,MAAM,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IACnD,CAAC;CACD,CAAC,CAAC;AAEH,eAAe,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"core.provider.d.ts","sourceRoot":"","sources":["../../../src/runtime/plugin/core.provider.ts"],"names":[],"mappings":"AAaA,QAAA,MAAM,aAAa,6CAqBjB,CAAC;AAEH,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"core.provider.d.ts","sourceRoot":"","sources":["../../../src/runtime/plugin/core.provider.ts"],"names":[],"mappings":"AAcA,QAAA,MAAM,aAAa,6CAsBjB,CAAC;AAEH,eAAe,aAAa,CAAC"}
@@ -2,6 +2,7 @@ import { createRuntimePlugin, loader } from '@vibesdotdev/kernel';
2
2
  import authContext from "../auth.context.descriptor.js";
3
3
  import authIdentityPlugin from "./identity.js";
4
4
  import autoVerifyConfig from "../auto-verify.config.descriptor.js";
5
+ import authPolicyConfig from "../auth-policy.config.descriptor.js";
5
6
  import authApiClient from "../../client/auth.legacy-api-client.descriptor.js";
6
7
  import authProviderApi from "../providers/auth-provider.api.descriptor.js";
7
8
  import authProviderDb from "../providers/db.descriptor.js";
@@ -16,6 +17,7 @@ const defaultExport = createRuntimePlugin({
16
17
  descriptors: [
17
18
  authContext,
18
19
  autoVerifyConfig,
20
+ authPolicyConfig,
19
21
  authApiClient,
20
22
  authProviderApi,
21
23
  authProviderDb,
@@ -1 +1 @@
1
- {"version":3,"file":"core.provider.js","sourceRoot":"","sources":["../../../src/runtime/plugin/core.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,kBAAkB,MAAM,eAAe,CAAC;AAC/C,OAAO,gBAAgB,MAAM,qCAAqC,CAAC;AACnE,OAAO,aAAa,MAAM,mDAAmD,CAAC;AAC9E,OAAO,eAAe,MAAM,8CAA8C,CAAC;AAC3E,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,mBAAmB,MAAM,kDAAkD,CAAC;AACnF,OAAO,0BAA0B,MAAM,mDAAmD,CAAC;AAC3F,OAAO,oBAAoB,MAAM,sDAAsD,CAAC;AAExF,kIAAkI;AAClI,MAAM,aAAa,GAAG,mBAAmB,CAAC;IACzC,EAAE,EAAE,oBAAoB;IACxB,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EAAE,sEAAsE;IACnF,WAAW,EAAE;QACZ,WAAW;QACX,gBAAgB;QAChB,aAAa;QACb,eAAe;QACf,cAAc;QACd,mBAAmB;QACnB,0BAA0B;QAC1B,oBAAoB;KACpB;IACD,KAAK,CAAC,UAAU,CAAC,OAAO;QACvB,MAAM,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,EAAE;QACR,MAAM,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACpF,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;KAC5F;CACD,CAAC,CAAC;AAEH,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"core.provider.js","sourceRoot":"","sources":["../../../src/runtime/plugin/core.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,kBAAkB,MAAM,eAAe,CAAC;AAC/C,OAAO,gBAAgB,MAAM,qCAAqC,CAAC;AACnE,OAAO,gBAAgB,MAAM,qCAAqC,CAAC;AACnE,OAAO,aAAa,MAAM,mDAAmD,CAAC;AAC9E,OAAO,eAAe,MAAM,8CAA8C,CAAC;AAC3E,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,mBAAmB,MAAM,kDAAkD,CAAC;AACnF,OAAO,0BAA0B,MAAM,mDAAmD,CAAC;AAC3F,OAAO,oBAAoB,MAAM,sDAAsD,CAAC;AAExF,kIAAkI;AAClI,MAAM,aAAa,GAAG,mBAAmB,CAAC;IACzC,EAAE,EAAE,oBAAoB;IACxB,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EAAE,sEAAsE;IACnF,WAAW,EAAE;QACZ,WAAW;QACX,gBAAgB;QAChB,gBAAgB;QAChB,aAAa;QACb,eAAe;QACf,cAAc;QACd,mBAAmB;QACnB,0BAA0B;QAC1B,oBAAoB;KACpB;IACD,KAAK,CAAC,UAAU,CAAC,OAAO;QACvB,MAAM,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,EAAE;QACR,MAAM,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACpF,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;KAC5F;CACD,CAAC,CAAC;AAEH,eAAe,aAAa,CAAC"}
@@ -71,6 +71,10 @@ export type AuthAdminSecuritySessionsPage = {
71
71
  sessions: AuthAdminSecuritySessionRecord[];
72
72
  pagination: AuthAdminSecurityPagination;
73
73
  };
74
+ /** Why a privileged admin change is being made; required, recorded in auth's audit trail. */
75
+ export interface AuthAdminMutationOptions {
76
+ reason: string;
77
+ }
74
78
  export type AuthAdminSecurityApiKeyStatus = 'active' | 'revoked' | 'expired' | 'disabled' | 'all';
75
79
  export type AuthAdminSecurityApiKeyRecord = {
76
80
  id: string;
@@ -158,6 +162,7 @@ export type AuthAdminCreateUserInput = {
158
162
  name?: string;
159
163
  emailVerified?: boolean;
160
164
  isSuperuser?: boolean;
165
+ reason: string;
161
166
  };
162
167
  export type AuthAdminCreateUserResult = {
163
168
  success: boolean;
@@ -190,35 +195,28 @@ export type AuthAdminClient = {
190
195
  }): Promise<AuthAdminUsersPage>;
191
196
  getUser(userId: string): Promise<AuthAdminUserDetail | null>;
192
197
  createUser(input: AuthAdminCreateUserInput): Promise<AuthAdminCreateUserResult>;
193
- setUserSuperuserStatus(userId: string, makeSuperuser: boolean): Promise<{
198
+ setUserSuperuserStatus(userId: string, makeSuperuser: boolean, options: AuthAdminMutationOptions): Promise<{
194
199
  success: boolean;
195
200
  }>;
196
- setUserStatus(userId: string, status: AuthAdminUserStatus, options?: {
197
- reason?: string | null;
198
- }): Promise<AuthAdminSetStatusResult>;
199
- bulkSetUserStatus(userIds: string[], status: AuthAdminUserStatus, options?: {
200
- reason?: string | null;
201
- }): Promise<AuthAdminBulkSetStatusResult>;
202
- deleteUser(userId: string): Promise<{
201
+ setUserStatus(userId: string, status: AuthAdminUserStatus, options: AuthAdminMutationOptions): Promise<AuthAdminSetStatusResult>;
202
+ bulkSetUserStatus(userIds: string[], status: AuthAdminUserStatus, options: AuthAdminMutationOptions): Promise<AuthAdminBulkSetStatusResult>;
203
+ deleteUser(userId: string, options: AuthAdminMutationOptions): Promise<{
203
204
  success: boolean;
204
205
  }>;
205
- revokeSessions(): Promise<{
206
+ /** Every privileged call below requires a non-empty `reason`; revoke-all spares the caller's own session and key. */
207
+ revokeSessions(options: AuthAdminMutationOptions): Promise<{
206
208
  success: boolean;
207
209
  revoked: number;
208
210
  }>;
209
- revokeApiKeys(): Promise<{
211
+ revokeApiKeys(options: AuthAdminMutationOptions): Promise<{
210
212
  success: boolean;
211
213
  revoked: number;
212
214
  }>;
213
- revokeSession(sessionId: string, options?: {
214
- reason?: string | null;
215
- }): Promise<{
215
+ revokeSession(sessionId: string, options: AuthAdminMutationOptions): Promise<{
216
216
  success: boolean;
217
217
  revoked: number;
218
218
  }>;
219
- revokeApiKey(apiKeyId: string, options?: {
220
- reason?: string | null;
221
- }): Promise<{
219
+ revokeApiKey(apiKeyId: string, options: AuthAdminMutationOptions): Promise<{
222
220
  success: boolean;
223
221
  revoked: number;
224
222
  }>;
@@ -227,23 +225,27 @@ export type AuthAdminClient = {
227
225
  listRolePermissions(): Promise<RolePermissionRecord[]>;
228
226
  createRole(input: {
229
227
  name: string;
228
+ reason: string;
230
229
  description?: string;
231
230
  permissionIds?: string[];
232
231
  }): Promise<RoleRecord>;
233
232
  updateRole(input: {
234
233
  id: string;
234
+ reason: string;
235
235
  name: string;
236
236
  description?: string;
237
237
  permissionIds?: string[];
238
238
  }): Promise<void>;
239
239
  createPermission(input: {
240
240
  name: string;
241
+ reason: string;
241
242
  resource: string;
242
243
  action?: string;
243
244
  description?: string;
244
245
  }): Promise<PermissionRecord>;
245
246
  updatePermission(input: {
246
247
  id: string;
248
+ reason: string;
247
249
  name: string;
248
250
  resource: string;
249
251
  action?: string;