@opensaas/stack-auth 0.27.1 → 0.29.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.
Files changed (39) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +44 -0
  3. package/CLAUDE.md +35 -1
  4. package/dist/config/derive-auth-lists.d.ts +15 -5
  5. package/dist/config/derive-auth-lists.d.ts.map +1 -1
  6. package/dist/config/derive-auth-lists.js +59 -98
  7. package/dist/config/derive-auth-lists.js.map +1 -1
  8. package/dist/config/index.d.ts.map +1 -1
  9. package/dist/config/index.js +1 -0
  10. package/dist/config/index.js.map +1 -1
  11. package/dist/config/plugin.d.ts.map +1 -1
  12. package/dist/config/plugin.js +31 -13
  13. package/dist/config/plugin.js.map +1 -1
  14. package/dist/config/types.d.ts +58 -0
  15. package/dist/config/types.d.ts.map +1 -1
  16. package/dist/lists/index.d.ts +9 -4
  17. package/dist/lists/index.d.ts.map +1 -1
  18. package/dist/lists/index.js +3 -2
  19. package/dist/lists/index.js.map +1 -1
  20. package/dist/runtime/types.d.ts +7 -5
  21. package/dist/runtime/types.d.ts.map +1 -1
  22. package/dist/server/schema-converter.d.ts +34 -2
  23. package/dist/server/schema-converter.d.ts.map +1 -1
  24. package/dist/server/schema-converter.js +47 -163
  25. package/dist/server/schema-converter.js.map +1 -1
  26. package/package.json +2 -2
  27. package/src/config/derive-auth-lists.ts +61 -87
  28. package/src/config/index.ts +1 -0
  29. package/src/config/plugin.ts +36 -13
  30. package/src/config/types.ts +64 -0
  31. package/src/lists/index.ts +10 -4
  32. package/src/runtime/types.ts +7 -5
  33. package/src/server/schema-converter.ts +68 -158
  34. package/tests/config.test.ts +110 -0
  35. package/tests/derive-auth-lists.test.ts +54 -1
  36. package/tests/lists.test.ts +42 -145
  37. package/tests/plugin-derived-keys.test.ts +130 -18
  38. package/tests/schema-converter.test.ts +58 -21
  39. package/tsconfig.tsbuildinfo +1 -1
@@ -1,3 +1,4 @@
1
+ import type { ListConfig } from '@opensaas/stack-core';
1
2
  import type { ExtendUserListConfig } from '../lists/index.js';
2
3
  /**
3
4
  * OAuth provider configuration
@@ -93,6 +94,47 @@ export type SessionConfig = {
93
94
  * })
94
95
  * ```
95
96
  */
97
+ /**
98
+ * App-authored operation + field-level access control for the Auth lists,
99
+ * keyed by better-auth model name (not by the derived list key, so it stays
100
+ * remap-proof when e.g. `user.modelName: 'AuthUser'`).
101
+ *
102
+ * Per ADR-0013, the auth plugin ships its created lists (User/Session/
103
+ * Account/Verification) **closed** — no permissive defaults. This is the
104
+ * application's seam to grant them access: the plugin applies each entry to
105
+ * the corresponding list when it creates it (its own `addList` path), so the
106
+ * access rides along with the list's `@@map`/`@@schema`/fields and can't
107
+ * drift from the plugin's shape. A model with no entry here stays closed
108
+ * (deny-by-default).
109
+ *
110
+ * @example
111
+ * ```typescript
112
+ * authPlugin({
113
+ * access: {
114
+ * // Signed-in users can read the directory; only self can write.
115
+ * user: {
116
+ * operation: {
117
+ * query: ({ session }) => !!session,
118
+ * update: ({ session, item }) => session?.userId === item.id,
119
+ * },
120
+ * },
121
+ * // A user can read only their own sessions.
122
+ * session: {
123
+ * operation: {
124
+ * query: ({ session }) =>
125
+ * session ? { user: { id: { equals: session.userId } } } : false,
126
+ * },
127
+ * },
128
+ * },
129
+ * })
130
+ * ```
131
+ */
132
+ export type AuthAccessConfig = {
133
+ user?: ListConfig<any>['access'];
134
+ session?: ListConfig<any>['access'];
135
+ account?: ListConfig<any>['access'];
136
+ verification?: ListConfig<any>['access'];
137
+ };
96
138
  export type AuthModelConfig = {
97
139
  /**
98
140
  * The table/list name for this model.
@@ -226,6 +268,22 @@ export type AuthConfig = {
226
268
  * ```
227
269
  */
228
270
  extendUserList?: ExtendUserListConfig;
271
+ /**
272
+ * App-authored access control for the Auth lists (User/Session/Account/
273
+ * Verification), keyed by better-auth model name. See {@link AuthAccessConfig}.
274
+ *
275
+ * Per ADR-0013 the auth plugin ships these lists **closed** by default — a
276
+ * model with no entry here denies every operation (`context.db` reads/writes
277
+ * return `null`/`[]` and the list doesn't surface in the admin UI). Grant
278
+ * access explicitly for any Auth list your application reads or writes
279
+ * through `context.db`.
280
+ *
281
+ * For the `user` model specifically, {@link ExtendUserListConfig.access}
282
+ * (via `extendUserList.access`) is still honoured and takes precedence over
283
+ * `access.user` if both are set — it predates this option and remains the
284
+ * narrower, User-specific override.
285
+ */
286
+ access?: AuthAccessConfig;
229
287
  /**
230
288
  * Custom email sending function for verification and password reset
231
289
  * If not provided, emails will be logged to console
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { ListConfig, FieldConfig } from '@opensaas/stack-core';
2
- import type { NormalizedAuthModels } from '../config/types.js';
2
+ import type { AuthAccessConfig, NormalizedAuthModels } from '../config/types.js';
3
3
  /**
4
4
  * Configuration for extending the auto-generated User list
5
5
  */
@@ -10,8 +10,12 @@ export type ExtendUserListConfig = {
10
10
  */
11
11
  fields?: Record<string, FieldConfig>;
12
12
  /**
13
- * Access control for the User list
14
- * If not provided, defaults to basic access control (users can update their own records)
13
+ * Access control for the User list.
14
+ *
15
+ * Per ADR-0013, if neither this nor `authPlugin({ access: { user: … } })` is
16
+ * provided, the User list is **closed** (deny-by-default) — it no longer
17
+ * defaults to permissive access. Takes precedence over `access.user` when
18
+ * both are set.
15
19
  */
16
20
  access?: ListConfig<any>['access'];
17
21
  /**
@@ -47,6 +51,7 @@ export declare function createVerificationList(): ListConfig<any>;
47
51
  *
48
52
  * @param userConfig - Extra User-list fields/access/hooks (from `extendUserList`)
49
53
  * @param models - Resolved better-auth model config; defaults to the better-auth defaults
54
+ * @param accessConfig - App-authored access for each Auth list, keyed by better-auth model name
50
55
  */
51
- export declare function getAuthLists(userConfig?: ExtendUserListConfig, models?: NormalizedAuthModels): Record<string, ListConfig<any>>;
56
+ export declare function getAuthLists(userConfig?: ExtendUserListConfig, models?: NormalizedAuthModels, accessConfig?: AuthAccessConfig): Record<string, ListConfig<any>>;
52
57
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lists/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAG9D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACpC;;;OAGG;IAEH,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA;IAClC;;OAEG;IAEH,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAA;CACjC,CAAA;AAeD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,MAAM,CAAC,EAAE,oBAAoB,GAE5B,UAAU,CAAC,GAAG,CAAC,CAEjB;AAED;;GAEG;AAEH,wBAAgB,iBAAiB,IAAI,UAAU,CAAC,GAAG,CAAC,CAEnD;AAED;;GAEG;AAEH,wBAAgB,iBAAiB,IAAI,UAAU,CAAC,GAAG,CAAC,CAEnD;AAED;;GAEG;AAEH,wBAAgB,sBAAsB,IAAI,UAAU,CAAC,GAAG,CAAC,CAExD;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,UAAU,CAAC,EAAE,oBAAoB,EACjC,MAAM,GAAE,oBAAqC,GAE5C,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAEjC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lists/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAGhF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACpC;;;;;;;OAOG;IAEH,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA;IAClC;;OAEG;IAEH,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAA;CACjC,CAAA;AAeD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,MAAM,CAAC,EAAE,oBAAoB,GAE5B,UAAU,CAAC,GAAG,CAAC,CAEjB;AAED;;GAEG;AAEH,wBAAgB,iBAAiB,IAAI,UAAU,CAAC,GAAG,CAAC,CAEnD;AAED;;GAEG;AAEH,wBAAgB,iBAAiB,IAAI,UAAU,CAAC,GAAG,CAAC,CAEnD;AAED;;GAEG;AAEH,wBAAgB,sBAAsB,IAAI,UAAU,CAAC,GAAG,CAAC,CAExD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,UAAU,CAAC,EAAE,oBAAoB,EACjC,MAAM,GAAE,oBAAqC,EAC7C,YAAY,CAAC,EAAE,gBAAgB,GAE9B,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAEjC"}
@@ -50,8 +50,9 @@ export function createVerificationList() {
50
50
  *
51
51
  * @param userConfig - Extra User-list fields/access/hooks (from `extendUserList`)
52
52
  * @param models - Resolved better-auth model config; defaults to the better-auth defaults
53
+ * @param accessConfig - App-authored access for each Auth list, keyed by better-auth model name
53
54
  */
54
- export function getAuthLists(userConfig, models = DEFAULT_MODELS) {
55
- return deriveAuthLists(models, userConfig || {}).lists;
55
+ export function getAuthLists(userConfig, models = DEFAULT_MODELS, accessConfig) {
56
+ return deriveAuthLists(models, userConfig || {}, accessConfig || {}).lists;
56
57
  }
57
58
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lists/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAwBhE;;;;;GAKG;AACH,MAAM,cAAc,GAAyB;IAC3C,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;IACvC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;IAC7C,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;IAC7C,YAAY,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE;CACxD,CAAA;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,MAA6B;IAG7B,OAAO,eAAe,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAA;AAC3D,CAAC;AAED;;GAEG;AACH,qGAAqG;AACrG,MAAM,UAAU,iBAAiB;IAC/B,OAAO,eAAe,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,OAAO,CAAA;AACtD,CAAC;AAED;;GAEG;AACH,qGAAqG;AACrG,MAAM,UAAU,iBAAiB;IAC/B,OAAO,eAAe,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,OAAO,CAAA;AACtD,CAAC;AAED;;GAEG;AACH,qGAAqG;AACrG,MAAM,UAAU,sBAAsB;IACpC,OAAO,eAAe,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,YAAY,CAAA;AAC3D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAC1B,UAAiC,EACjC,MAAM,GAAyB,cAAc;IAG7C,OAAO,eAAe,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,KAAK,CAAA;AACxD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lists/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AA4BhE;;;;;GAKG;AACH,MAAM,cAAc,GAAyB;IAC3C,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;IACvC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;IAC7C,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;IAC7C,YAAY,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE;CACxD,CAAA;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,MAA6B;IAG7B,OAAO,eAAe,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAA;AAC3D,CAAC;AAED;;GAEG;AACH,qGAAqG;AACrG,MAAM,UAAU,iBAAiB;IAC/B,OAAO,eAAe,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,OAAO,CAAA;AACtD,CAAC;AAED;;GAEG;AACH,qGAAqG;AACrG,MAAM,UAAU,iBAAiB;IAC/B,OAAO,eAAe,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,OAAO,CAAA;AACtD,CAAC;AAED;;GAEG;AACH,qGAAqG;AACrG,MAAM,UAAU,sBAAsB;IACpC,OAAO,eAAe,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,YAAY,CAAA;AAC3D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAC1B,UAAiC,EACjC,MAAM,GAAyB,cAAc,EAC7C,YAA+B;IAG/B,OAAO,eAAe,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,KAAK,CAAA;AAC5E,CAAC"}
@@ -8,16 +8,18 @@
8
8
  */
9
9
  export interface AuthRuntimeServices {
10
10
  /**
11
- * Get user by ID
12
- * Uses the access-controlled context to fetch user data
11
+ * Get user by ID.
12
+ * Resolves through the plugin runtime's `sudo` helper, so the result does
13
+ * not depend on the application's User list access policy (ADR-0013).
13
14
  *
14
15
  * @param userId - The ID of the user to fetch
15
- * @returns User object or null if not found or access denied
16
+ * @returns User object or null if not found
16
17
  */
17
18
  getUser: (userId: string) => Promise<unknown>;
18
19
  /**
19
- * Get current user from session
20
- * Extracts userId from session and fetches user data
20
+ * Get current user from session.
21
+ * Extracts userId from session and fetches user data through the plugin
22
+ * runtime's `sudo` helper — see {@link getUser}.
21
23
  *
22
24
  * @returns Current user object or null if not authenticated or not found
23
25
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAE7C;;;;;OAKG;IACH,cAAc,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;CACvC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;;OAOG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAE7C;;;;;;OAMG;IACH,cAAc,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;CACvC"}
@@ -28,13 +28,45 @@ type BetterAuthTableSchema = {
28
28
  fields: Record<string, BetterAuthFieldAttribute>;
29
29
  };
30
30
  /**
31
- * Convert Better Auth table schema to OpenSaaS ListConfig
31
+ * Convert Better Auth table schema to OpenSaaS ListConfig.
32
+ *
33
+ * Per ADR-0013, plugin-injected lists ship **closed** — no access is set here,
34
+ * so the list denies every operation until the application grants it. For a
35
+ * table that resolves onto one of the four base auth models (user/session/
36
+ * account/verification), that means `authPlugin({ access: { ... } })`; for any
37
+ * other better-auth-plugin-declared table (e.g. OAuth client tables from the
38
+ * `mcp` plugin), the application must declare the list itself under the same
39
+ * derived key so the plugin's field-only extend path can merge in (its access
40
+ * then stands untouched).
32
41
  */
33
42
  export declare function convertTableToList(tableName: string, tableSchema: BetterAuthTableSchema): ListConfig<any>;
43
+ /**
44
+ * Base better-auth model keys — the four tables the auth plugin's own model
45
+ * config (`user`/`session`/`account`/`verification`) can remap via `modelName`.
46
+ */
47
+ type BaseAuthModelKey = 'user' | 'session' | 'account' | 'verification';
48
+ /**
49
+ * Resolved list key for each base better-auth model, as derived by
50
+ * {@link deriveAuthLists} from the plugin's configured model-key remap (e.g.
51
+ * `user.modelName: 'AuthUser'`). Passed to {@link convertBetterAuthSchema} so a
52
+ * provider plugin's schema extension of a base model (e.g. `user`) lands on the
53
+ * same adopted Auth list rather than being re-derived from the plugin's own
54
+ * table name.
55
+ */
56
+ export type BaseAuthModelKeys = Partial<Record<BaseAuthModelKey, string>>;
34
57
  /**
35
58
  * Convert all Better Auth tables to OpenSaaS list configs
36
59
  * This is called by authPlugin() to generate lists from Better Auth + plugins
60
+ *
61
+ * @param tables - The better-auth plugin's declared schema extension
62
+ * @param baseModelKeys - The resolved list keys for the four base auth models
63
+ * (`user`/`session`/`account`/`verification`), from the same model-key remap
64
+ * the Auth lists themselves use. When a table name matches one of these keys
65
+ * (case-insensitively), its list key is taken from here instead of being
66
+ * re-derived from the table name — so a schema extension targeting `user`
67
+ * lands on the adopted Auth list (e.g. `AuthUser`) rather than a re-derived
68
+ * `User`, even when that key collides with an unrelated host list.
37
69
  */
38
- export declare function convertBetterAuthSchema(tables: Record<string, BetterAuthTableSchema>): Record<string, ListConfig<any>>;
70
+ export declare function convertBetterAuthSchema(tables: Record<string, BetterAuthTableSchema>, baseModelKeys?: BaseAuthModelKeys): Record<string, ListConfig<any>>;
39
71
  export {};
40
72
  //# sourceMappingURL=schema-converter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-converter.d.ts","sourceRoot":"","sources":["../../src/server/schema-converter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,sBAAsB,CAAA;AAEnE;;;GAGG;AACH,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAA;KAC/C,CAAA;IACD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED;;GAEG;AACH,KAAK,qBAAqB,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAA;CACjD,CAAA;AAiND;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,qBAAqB,GAEjC,UAAU,CAAC,GAAG,CAAC,CAgCjB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAE5C,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAUjC"}
1
+ {"version":3,"file":"schema-converter.d.ts","sourceRoot":"","sources":["../../src/server/schema-converter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,sBAAsB,CAAA;AAEnE;;;GAGG;AACH,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAA;KAC/C,CAAA;IACD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED;;GAEG;AACH,KAAK,qBAAqB,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAA;CACjD,CAAA;AA2DD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,qBAAqB,GAEjC,UAAU,CAAC,GAAG,CAAC,CA4BjB;AAED;;;GAGG;AACH,KAAK,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,CAAA;AAEvE;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAA;AA0BzE;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAC7C,aAAa,GAAE,iBAAsB,GAEpC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAejC"}
@@ -49,161 +49,16 @@ function convertField(fieldName, betterAuthField) {
49
49
  }
50
50
  }
51
51
  /**
52
- * Get default access control for auth tables
53
- * Most auth tables should only be accessible to their owners
54
- */
55
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- ListConfig must accept any TypeInfo
56
- function getDefaultAccess(tableName) {
57
- const lowerTableName = tableName.toLowerCase();
58
- // User table - special access control
59
- if (lowerTableName === 'user') {
60
- return {
61
- operation: {
62
- query: () => true, // Anyone can query users
63
- create: () => true, // Anyone can create (sign up)
64
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Access control parameters are runtime values
65
- update: ({ session, item }) => {
66
- if (!session)
67
- return false;
68
- const userId = session.userId;
69
- const itemId = item?.id;
70
- return userId === itemId;
71
- },
72
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Access control parameters are runtime values
73
- delete: ({ session, item }) => {
74
- if (!session)
75
- return false;
76
- const userId = session.userId;
77
- const itemId = item?.id;
78
- return userId === itemId;
79
- },
80
- },
81
- };
82
- }
83
- // Session table
84
- if (lowerTableName === 'session') {
85
- return {
86
- operation: {
87
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Access control parameters are runtime values
88
- query: ({ session }) => {
89
- if (!session)
90
- return false;
91
- const userId = session.userId;
92
- if (!userId)
93
- return false;
94
- return {
95
- user: { id: { equals: userId } },
96
- };
97
- },
98
- create: () => true, // Better-auth handles session creation
99
- update: () => false, // No manual updates
100
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Access control parameters are runtime values
101
- delete: ({ session, item }) => {
102
- if (!session)
103
- return false;
104
- const userId = session.userId;
105
- const itemUserId = item?.user?.id;
106
- return userId === itemUserId;
107
- },
108
- },
109
- };
110
- }
111
- // Account table
112
- if (lowerTableName === 'account') {
113
- return {
114
- operation: {
115
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Access control parameters are runtime values
116
- query: ({ session }) => {
117
- if (!session)
118
- return false;
119
- const userId = session.userId;
120
- if (!userId)
121
- return false;
122
- return {
123
- user: { id: { equals: userId } },
124
- };
125
- },
126
- create: () => true, // Better-auth handles account creation
127
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Access control parameters are runtime values
128
- update: ({ session, item }) => {
129
- if (!session)
130
- return false;
131
- const userId = session.userId;
132
- const itemUserId = item?.user?.id;
133
- return userId === itemUserId;
134
- },
135
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Access control parameters are runtime values
136
- delete: ({ session, item }) => {
137
- if (!session)
138
- return false;
139
- const userId = session.userId;
140
- const itemUserId = item?.user?.id;
141
- return userId === itemUserId;
142
- },
143
- },
144
- };
145
- }
146
- // Verification table
147
- if (lowerTableName === 'verification') {
148
- return {
149
- operation: {
150
- query: () => false, // No public querying
151
- create: () => true, // Better-auth creates verification tokens
152
- update: () => false, // No updates
153
- delete: () => true, // Better-auth deletes used/expired tokens
154
- },
155
- };
156
- }
157
- // OAuth tables (from MCP/OIDC plugins)
158
- if (lowerTableName === 'oauthapplication' ||
159
- lowerTableName === 'oauthaccesstoken' ||
160
- lowerTableName === 'oauthconsent') {
161
- return {
162
- operation: {
163
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Access control parameters are runtime values
164
- query: ({ session }) => {
165
- if (!session)
166
- return false;
167
- const userId = session.userId;
168
- if (!userId)
169
- return false;
170
- // Filter by userId if field exists
171
- return {
172
- userId: { equals: userId },
173
- };
174
- },
175
- create: () => true, // Better-auth/plugins handle creation
176
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Access control parameters are runtime values
177
- update: ({ session, item }) => {
178
- if (!session)
179
- return false;
180
- const userId = session.userId;
181
- const itemUserId = item?.userId;
182
- return userId === itemUserId;
183
- },
184
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Access control parameters are runtime values
185
- delete: ({ session, item }) => {
186
- if (!session)
187
- return false;
188
- const userId = session.userId;
189
- const itemUserId = item?.userId;
190
- return userId === itemUserId;
191
- },
192
- },
193
- };
194
- }
195
- // Default: restrict all access (safest default)
196
- return {
197
- operation: {
198
- query: () => false,
199
- create: () => false,
200
- update: () => false,
201
- delete: () => false,
202
- },
203
- };
204
- }
205
- /**
206
- * Convert Better Auth table schema to OpenSaaS ListConfig
52
+ * Convert Better Auth table schema to OpenSaaS ListConfig.
53
+ *
54
+ * Per ADR-0013, plugin-injected lists ship **closed** — no access is set here,
55
+ * so the list denies every operation until the application grants it. For a
56
+ * table that resolves onto one of the four base auth models (user/session/
57
+ * account/verification), that means `authPlugin({ access: { ... } })`; for any
58
+ * other better-auth-plugin-declared table (e.g. OAuth client tables from the
59
+ * `mcp` plugin), the application must declare the list itself under the same
60
+ * derived key so the plugin's field-only extend path can merge in (its access
61
+ * then stands untouched).
207
62
  */
208
63
  export function convertTableToList(tableName, tableSchema) {
209
64
  const fields = {};
@@ -229,21 +84,50 @@ export function convertTableToList(tableName, tableSchema) {
229
84
  }
230
85
  }
231
86
  }
232
- // Create list config with default access control
233
- return list({
234
- fields,
235
- access: getDefaultAccess(tableName),
236
- });
87
+ return list({ fields });
88
+ }
89
+ /**
90
+ * Look up the configured remap for a table name, if it names one of the four
91
+ * base better-auth models (case-insensitively). Written as an explicit switch
92
+ * rather than an indexed lookup so no type assertion is needed to narrow the
93
+ * table name into {@link BaseAuthModelKey}.
94
+ */
95
+ function resolveBaseModelKey(tableName, baseModelKeys) {
96
+ switch (tableName.toLowerCase()) {
97
+ case 'user':
98
+ return baseModelKeys.user;
99
+ case 'session':
100
+ return baseModelKeys.session;
101
+ case 'account':
102
+ return baseModelKeys.account;
103
+ case 'verification':
104
+ return baseModelKeys.verification;
105
+ default:
106
+ return undefined;
107
+ }
237
108
  }
238
109
  /**
239
110
  * Convert all Better Auth tables to OpenSaaS list configs
240
111
  * This is called by authPlugin() to generate lists from Better Auth + plugins
112
+ *
113
+ * @param tables - The better-auth plugin's declared schema extension
114
+ * @param baseModelKeys - The resolved list keys for the four base auth models
115
+ * (`user`/`session`/`account`/`verification`), from the same model-key remap
116
+ * the Auth lists themselves use. When a table name matches one of these keys
117
+ * (case-insensitively), its list key is taken from here instead of being
118
+ * re-derived from the table name — so a schema extension targeting `user`
119
+ * lands on the adopted Auth list (e.g. `AuthUser`) rather than a re-derived
120
+ * `User`, even when that key collides with an unrelated host list.
241
121
  */
242
- export function convertBetterAuthSchema(tables) {
122
+ export function convertBetterAuthSchema(tables, baseModelKeys = {}) {
243
123
  const lists = {}; // eslint-disable-line @typescript-eslint/no-explicit-any -- ListConfig must accept any TypeInfo
244
124
  for (const [tableName, tableSchema] of Object.entries(tables)) {
245
- // Convert table name to PascalCase for OpenSaaS list key
246
- const listKey = tableSchema.modelName || toPascalCase(tableName);
125
+ // A base-model remap always wins: it reflects the actual configured list
126
+ // key for that model, whereas `tableSchema.modelName`/the table name are
127
+ // just how the provider plugin happens to describe its own extension.
128
+ const listKey = resolveBaseModelKey(tableName, baseModelKeys) ||
129
+ tableSchema.modelName ||
130
+ toPascalCase(tableName);
247
131
  lists[listKey] = convertTableToList(tableName, tableSchema);
248
132
  }
249
133
  return lists;
@@ -1 +1 @@
1
- {"version":3,"file":"schema-converter.js","sourceRoot":"","sources":["../../src/server/schema-converter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-converter.js","sourceRoot":"","sources":["../../src/server/schema-converter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensaas/stack-auth",
3
- "version": "0.27.1",
3
+ "version": "0.29.0",
4
4
  "description": "Better-auth integration for OpenSaas Stack",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -65,7 +65,7 @@
65
65
  "react": "^19.2.4",
66
66
  "typescript": "npm:@typescript/typescript6@^6.0.2",
67
67
  "vitest": "^4.1.10",
68
- "@opensaas/stack-core": "0.27.1"
68
+ "@opensaas/stack-core": "0.29.0"
69
69
  },
70
70
  "scripts": {
71
71
  "build": "tsc",