@opensaas/stack-auth 0.39.2 → 0.40.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +151 -0
- package/CLAUDE.md +140 -22
- package/dist/client/index.d.ts +0 -16
- package/dist/client/index.d.ts.map +1 -1
- package/dist/config/adopt-better-auth-tables.d.ts +4 -49
- package/dist/config/adopt-better-auth-tables.d.ts.map +1 -1
- package/dist/config/adopt-better-auth-tables.js +4 -51
- package/dist/config/adopt-better-auth-tables.js.map +1 -1
- package/dist/config/derive-auth-lists.d.ts +42 -37
- package/dist/config/derive-auth-lists.d.ts.map +1 -1
- package/dist/config/derive-auth-lists.js +579 -223
- package/dist/config/derive-auth-lists.js.map +1 -1
- package/dist/config/index.d.ts +0 -3
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +4 -34
- package/dist/config/index.js.map +1 -1
- package/dist/config/plugin.d.ts.map +1 -1
- package/dist/config/plugin.js +20 -90
- package/dist/config/plugin.js.map +1 -1
- package/dist/config/types.d.ts +89 -67
- package/dist/config/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -13
- package/dist/index.js.map +1 -1
- package/dist/lists/index.d.ts +9 -5
- package/dist/lists/index.d.ts.map +1 -1
- package/dist/lists/index.js +9 -6
- package/dist/lists/index.js.map +1 -1
- package/dist/mcp/better-auth.d.ts +6 -19
- package/dist/mcp/better-auth.d.ts.map +1 -1
- package/dist/mcp/better-auth.js +6 -20
- package/dist/mcp/better-auth.js.map +1 -1
- package/dist/plugins/index.d.ts +4 -4
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +4 -4
- package/dist/plugins/index.js.map +1 -1
- package/dist/runtime/types.d.ts +2 -9
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/types.js +0 -4
- package/dist/runtime/types.js.map +1 -1
- package/dist/server/index.d.ts +5 -12
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +14 -62
- package/dist/server/index.js.map +1 -1
- package/dist/ui/components/ForgotPasswordForm.d.ts +0 -3
- package/dist/ui/components/ForgotPasswordForm.d.ts.map +1 -1
- package/dist/ui/components/ForgotPasswordForm.js +0 -3
- package/dist/ui/components/ForgotPasswordForm.js.map +1 -1
- package/dist/ui/components/ResetPasswordForm.d.ts +0 -3
- package/dist/ui/components/ResetPasswordForm.d.ts.map +1 -1
- package/dist/ui/components/ResetPasswordForm.js +0 -5
- package/dist/ui/components/ResetPasswordForm.js.map +1 -1
- package/dist/ui/components/SignInForm.d.ts +0 -3
- package/dist/ui/components/SignInForm.d.ts.map +1 -1
- package/dist/ui/components/SignInForm.js +0 -4
- package/dist/ui/components/SignInForm.js.map +1 -1
- package/dist/ui/components/SignUpForm.d.ts +0 -3
- package/dist/ui/components/SignUpForm.d.ts.map +1 -1
- package/dist/ui/components/SignUpForm.js +0 -5
- package/dist/ui/components/SignUpForm.js.map +1 -1
- package/dist/ui/lib/clean-error-message.d.ts +3 -6
- package/dist/ui/lib/clean-error-message.d.ts.map +1 -1
- package/dist/ui/lib/clean-error-message.js +3 -6
- package/dist/ui/lib/clean-error-message.js.map +1 -1
- package/dist/ui/types.d.ts +2 -15
- package/dist/ui/types.d.ts.map +1 -1
- package/dist/ui/types.js +2 -7
- package/dist/ui/types.js.map +1 -1
- package/package.json +12 -5
- package/src/client/index.ts +0 -17
- package/src/config/adopt-better-auth-tables.ts +4 -51
- package/src/config/derive-auth-lists.ts +685 -252
- package/src/config/index.ts +4 -34
- package/src/config/plugin.ts +21 -91
- package/src/config/types.ts +90 -67
- package/src/index.ts +3 -14
- package/src/lists/index.ts +17 -5
- package/src/mcp/better-auth.ts +6 -25
- package/src/plugins/index.ts +4 -5
- package/src/runtime/types.ts +2 -10
- package/src/server/index.ts +17 -70
- package/src/ui/components/ForgotPasswordForm.tsx +0 -3
- package/src/ui/components/ResetPasswordForm.tsx +0 -5
- package/src/ui/components/SignInForm.tsx +0 -4
- package/src/ui/components/SignUpForm.tsx +0 -5
- package/src/ui/lib/clean-error-message.ts +3 -6
- package/src/ui/types.ts +2 -15
- package/tests/auth-lists-drift.test.ts +480 -0
- package/tests/config.test.ts +3 -0
- package/tests/credential-field-read-deny-e2e.test.ts +295 -0
- package/tests/derive-auth-lists.test.ts +263 -6
- package/tests/generated-fk-shape.test.ts +432 -9
- package/tests/mcp-oauth-cascade-e2e.test.ts +267 -0
- package/tests/plugin-derived-keys.test.ts +39 -0
- package/tests/plugin-table-derivation.test.ts +270 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/server/schema-converter.d.ts +0 -81
- package/dist/server/schema-converter.d.ts.map +0 -1
- package/dist/server/schema-converter.js +0 -157
- package/dist/server/schema-converter.js.map +0 -1
- package/src/server/schema-converter.ts +0 -243
- package/tests/schema-converter.test.ts +0 -399
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derive-auth-lists.js","sourceRoot":"","sources":["../../src/config/derive-auth-lists.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"derive-auth-lists.js","sourceRoot":"","sources":["../../src/config/derive-auth-lists.ts"],"names":[],"mappings":"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"}
|
package/dist/config/index.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import type { AuthConfig, NormalizedAuthConfig } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Normalize auth configuration with defaults
|
|
4
|
-
*/
|
|
5
2
|
export declare function normalizeAuthConfig(config: AuthConfig): NormalizedAuthConfig;
|
|
6
3
|
export type { AuthConfig, NormalizedAuthConfig };
|
|
7
4
|
export * from './types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAEV,oBAAoB,EAOrB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAEV,oBAAoB,EAOrB,MAAM,YAAY,CAAA;AAoEnB,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,oBAAoB,CAmE5E;AAED,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAA;AAChD,cAAc,YAAY,CAAA"}
|
package/dist/config/index.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Default better-auth model names. Used when the developer does not override
|
|
3
|
-
* `modelName`, preserving the historical `User`/`Session`/`Account`/`Verification`
|
|
4
|
-
* keys exactly. `rateLimit` only applies when `rateLimit.storage: 'database'`
|
|
5
|
-
* derives the fifth Auth list.
|
|
6
|
-
*/
|
|
7
1
|
const DEFAULT_MODEL_NAMES = {
|
|
8
2
|
user: 'User',
|
|
9
3
|
session: 'Session',
|
|
@@ -12,11 +6,6 @@ const DEFAULT_MODEL_NAMES = {
|
|
|
12
6
|
rateLimit: 'RateLimit',
|
|
13
7
|
};
|
|
14
8
|
/**
|
|
15
|
-
* Resolve a single better-auth model config block into its normalized form,
|
|
16
|
-
* falling back to the better-auth default model name and an empty column map.
|
|
17
|
-
* The model's Postgres schema is the per-model `schema` override when present,
|
|
18
|
-
* otherwise the plugin-level `schema` default (or `undefined` for `public`).
|
|
19
|
-
*
|
|
20
9
|
* `tableName` defaults to today's behaviour when not explicitly set: it
|
|
21
10
|
* follows `modelName` when that differs from the better-auth default (so a
|
|
22
11
|
* renamed list still pins its table via `@@map`), otherwise it stays unset.
|
|
@@ -32,14 +21,9 @@ function normalizeModelConfig(config, defaultModelName, defaultSchema) {
|
|
|
32
21
|
tableName,
|
|
33
22
|
fields: config?.fields || {},
|
|
34
23
|
schema: config?.schema ?? defaultSchema,
|
|
24
|
+
indexes: config?.indexes ?? [],
|
|
35
25
|
};
|
|
36
26
|
}
|
|
37
|
-
/**
|
|
38
|
-
* Resolve the better-auth model config for all four auth models, plus a fifth
|
|
39
|
-
* `rateLimit` model when `rateLimit.storage: 'database'` requires deriving
|
|
40
|
-
* the `RateLimit` list. `defaultSchema` is the plugin-level `schema` applied
|
|
41
|
-
* to every model unless a per-model `schema` override is given.
|
|
42
|
-
*/
|
|
43
27
|
function normalizeAuthModels(config) {
|
|
44
28
|
const defaultSchema = config.schema;
|
|
45
29
|
const models = {
|
|
@@ -53,11 +37,6 @@ function normalizeAuthModels(config) {
|
|
|
53
37
|
}
|
|
54
38
|
return models;
|
|
55
39
|
}
|
|
56
|
-
/**
|
|
57
|
-
* Default `sendResetPassword`/`sendVerificationEmail` — logs to console
|
|
58
|
-
* instead of sending, matching the pre-existing "no sendEmail configured"
|
|
59
|
-
* behavior for apps that haven't wired a real email provider yet.
|
|
60
|
-
*/
|
|
61
40
|
function defaultSendAuthEmail(kind) {
|
|
62
41
|
return async ({ user, url }) => {
|
|
63
42
|
console.log(`[Auth] ${kind[0].toUpperCase()}${kind.slice(1)} email not sent (no callback configured):`);
|
|
@@ -65,11 +44,7 @@ function defaultSendAuthEmail(kind) {
|
|
|
65
44
|
console.log(`URL: ${url}`);
|
|
66
45
|
};
|
|
67
46
|
}
|
|
68
|
-
/**
|
|
69
|
-
* Normalize auth configuration with defaults
|
|
70
|
-
*/
|
|
71
47
|
export function normalizeAuthConfig(config) {
|
|
72
|
-
// Email and password defaults
|
|
73
48
|
const emailAndPassword = config.emailAndPassword?.enabled
|
|
74
49
|
? {
|
|
75
50
|
enabled: true,
|
|
@@ -84,7 +59,6 @@ export function normalizeAuthConfig(config) {
|
|
|
84
59
|
requireConfirmation: true,
|
|
85
60
|
sendResetPassword: defaultSendAuthEmail('password reset'),
|
|
86
61
|
};
|
|
87
|
-
// Email verification defaults
|
|
88
62
|
const emailVerification = config.emailVerification?.enabled
|
|
89
63
|
? {
|
|
90
64
|
enabled: true,
|
|
@@ -99,22 +73,17 @@ export function normalizeAuthConfig(config) {
|
|
|
99
73
|
tokenExpiration: 86400,
|
|
100
74
|
sendVerificationEmail: defaultSendAuthEmail('verification'),
|
|
101
75
|
};
|
|
102
|
-
// Password reset defaults
|
|
103
76
|
const passwordReset = config.passwordReset?.enabled
|
|
104
77
|
? {
|
|
105
78
|
enabled: true,
|
|
106
79
|
tokenExpiration: config.passwordReset.tokenExpiration ?? 3600,
|
|
107
80
|
}
|
|
108
81
|
: { enabled: false, tokenExpiration: 3600 };
|
|
109
|
-
// Session defaults
|
|
110
82
|
const session = {
|
|
111
|
-
expiresIn: config.session?.expiresIn || 604800,
|
|
112
|
-
updateAge: config.session?.updateAge ?? 86400, //
|
|
83
|
+
expiresIn: config.session?.expiresIn || 604800,
|
|
84
|
+
updateAge: config.session?.updateAge ?? 86400, // matches better-auth's own default
|
|
113
85
|
};
|
|
114
|
-
// Session fields defaults
|
|
115
86
|
const sessionFields = config.sessionFields || ['userId', 'email', 'name'];
|
|
116
|
-
// Resolve better-auth per-model config (modelName + field column maps).
|
|
117
|
-
// Defaults preserve the historical User/Session/Account/Verification keys.
|
|
118
87
|
const models = normalizeAuthModels(config);
|
|
119
88
|
return {
|
|
120
89
|
emailAndPassword,
|
|
@@ -127,6 +96,7 @@ export function normalizeAuthConfig(config) {
|
|
|
127
96
|
sessionFields,
|
|
128
97
|
extendUserList: config.extendUserList || {},
|
|
129
98
|
access: config.access || {},
|
|
99
|
+
credentialFields: config.credentialFields || {},
|
|
130
100
|
betterAuthPlugins: config.betterAuthPlugins || [],
|
|
131
101
|
rateLimit: config.rateLimit,
|
|
132
102
|
betterAuthOptions: config.betterAuthOptions || {},
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAYA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAYA,MAAM,mBAAmB,GAAG;IAC1B,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,WAAW;CACd,CAAA;AAEV;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAC3B,MAAmC,EACnC,gBAAwB,EACxB,aAAiC;IAEjC,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,IAAI,gBAAgB,CAAA;IACvD,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,IAAI,CAAC,SAAS,KAAK,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC/F,OAAO;QACL,SAAS;QACT,SAAS;QACT,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE;QAC5B,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,aAAa;QACvC,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE;KAC/B,CAAA;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAkB;IAC7C,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAA;IACnC,MAAM,MAAM,GAAyB;QACnC,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,CAAC,IAAI,EAAE,aAAa,CAAC;QAChF,OAAO,EAAE,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC;QACzF,OAAO,EAAE,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC;QACzF,YAAY,EAAE,oBAAoB,CAChC,MAAM,CAAC,YAAY,EACnB,mBAAmB,CAAC,YAAY,EAChC,aAAa,CACd;KACF,CAAA;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,KAAK,UAAU,EAAE,CAAC;QAC7C,MAAM,CAAC,SAAS,GAAG,oBAAoB,CACrC,MAAM,CAAC,SAAS,EAChB,mBAAmB,CAAC,SAAS,EAC7B,aAAa,CACd,CAAA;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAuC;IACnE,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE;QAC7B,OAAO,CAAC,GAAG,CACT,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,2CAA2C,CAC3F,CAAA;QACD,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QAChC,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAkB;IACpD,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,EAAE,OAAO;QACvD,CAAC,CAAC;YACE,OAAO,EAAE,IAAa;YACtB,iBAAiB,EAAG,MAAM,CAAC,gBAAwC,CAAC,iBAAiB,IAAI,CAAC;YAC1F,mBAAmB,EAChB,MAAM,CAAC,gBAAwC,CAAC,mBAAmB,IAAI,IAAI;YAC9E,iBAAiB,EACd,MAAM,CAAC,gBAAwC,CAAC,iBAAiB;gBAClE,oBAAoB,CAAC,gBAAgB,CAAC;SACzC;QACH,CAAC,CAAC;YACE,OAAO,EAAE,KAAc;YACvB,iBAAiB,EAAE,CAAC;YACpB,mBAAmB,EAAE,IAAI;YACzB,iBAAiB,EAAE,oBAAoB,CAAC,gBAAgB,CAAC;SAC1D,CAAA;IAEL,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,EAAE,OAAO;QACzD,CAAC,CAAC;YACE,OAAO,EAAE,IAAa;YACtB,YAAY,EAAG,MAAM,CAAC,iBAA6C,CAAC,YAAY,IAAI,IAAI;YACxF,eAAe,EACZ,MAAM,CAAC,iBAA6C,CAAC,eAAe,IAAI,KAAK;YAChF,qBAAqB,EAClB,MAAM,CAAC,iBAA6C,CAAC,qBAAqB;gBAC3E,oBAAoB,CAAC,cAAc,CAAC;SACvC;QACH,CAAC,CAAC;YACE,OAAO,EAAE,KAAc;YACvB,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,qBAAqB,EAAE,oBAAoB,CAAC,cAAc,CAAC;SAC5D,CAAA;IAEL,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,EAAE,OAAO;QACjD,CAAC,CAAC;YACE,OAAO,EAAE,IAAa;YACtB,eAAe,EAAG,MAAM,CAAC,aAAqC,CAAC,eAAe,IAAI,IAAI;SACvF;QACH,CAAC,CAAC,EAAE,OAAO,EAAE,KAAc,EAAE,eAAe,EAAE,IAAI,EAAE,CAAA;IAEtD,MAAM,OAAO,GAAG;QACd,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,IAAI,MAAM;QAC9C,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,IAAI,KAAK,EAAE,oCAAoC;KACpF,CAAA;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAEzE,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAE1C,OAAO;QACL,gBAAgB;QAChB,iBAAiB;QACjB,aAAa;QACb,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,EAAE;QAC7C,OAAO;QACP,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa;QACb,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,EAAE;QAC3C,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,EAAE;QAC/C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,EAAE;QACjD,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,EAAE;KAClD,CAAA;AACH,CAAC;AAGD,cAAc,YAAY,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,YAAY,CAAA;AAIlE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAwHrD"}
|
package/dist/config/plugin.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { getDbKey } from '@opensaas/stack-core';
|
|
2
2
|
import { normalizeAuthConfig } from './index.js';
|
|
3
3
|
import { getAuthLists } from '../lists/index.js';
|
|
4
|
-
import { convertBetterAuthSchema } from '../server/schema-converter.js';
|
|
5
4
|
/**
|
|
6
5
|
* Auth plugin for OpenSaas Stack
|
|
7
6
|
* Provides Better-auth integration with automatic list generation and session management
|
|
@@ -33,43 +32,22 @@ export function authPlugin(config) {
|
|
|
33
32
|
typeName: 'AuthRuntimeServices',
|
|
34
33
|
},
|
|
35
34
|
init: async (context) => {
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
|
|
42
|
-
//
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
//
|
|
46
|
-
//
|
|
47
|
-
// `
|
|
48
|
-
//
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
account: normalized.models.account.modelName,
|
|
53
|
-
verification: normalized.models.verification.modelName,
|
|
54
|
-
...(normalized.models.rateLimit
|
|
55
|
-
? { rateLimit: normalized.models.rateLimit.modelName }
|
|
56
|
-
: {}),
|
|
57
|
-
};
|
|
58
|
-
// Add all auth lists FIRST, before any better-auth plugin schema
|
|
59
|
-
// extension is processed. This must happen before the betterAuthPlugins
|
|
60
|
-
// loop below so a base-model extension (e.g. a plugin's `schema: {
|
|
61
|
-
// user: { fields: … } }`) always finds the real derived list already
|
|
62
|
-
// registered under its key and takes the merge (`extendList`) path
|
|
63
|
-
// against it — instead of pre-empting that key with a bare
|
|
64
|
-
// `list({ fields })` that carries no `db`/`access` (see #861).
|
|
65
|
-
//
|
|
66
|
-
// The plugin only ever touches its OWN derived keys. When a developer
|
|
67
|
-
// renames the auth user model (e.g. user.modelName: 'AuthUser'), the
|
|
68
|
-
// derived key is 'AuthUser' and an app's separate 'User' list is left
|
|
69
|
-
// untouched — the plugin never extends/overwrites a list it didn't
|
|
70
|
-
// derive. Extending only kicks in when an existing list shares the
|
|
71
|
-
// derived key (e.g. the default 'User'), which is the intended
|
|
72
|
-
// "merge auth fields into my User" behaviour.
|
|
35
|
+
// One consolidated derivation covers the four base models, the
|
|
36
|
+
// optional RateLimit model, and every table a better-auth plugin
|
|
37
|
+
// declares in its own `schema` (base-model extensions like the
|
|
38
|
+
// `anonymous` plugin's `user.isAnonymous`, and standalone tables like
|
|
39
|
+
// the MCP plugin's OAuth tables) — see `deriveAuthLists` (issue #992).
|
|
40
|
+
// `getAuthTables` merges a plugin's base-model schema extension
|
|
41
|
+
// directly into that model's own fields, so the derived `User`/`AuthUser`
|
|
42
|
+
// list here already carries e.g. `isAnonymous` before this loop runs.
|
|
43
|
+
const authLists = getAuthLists(normalized.extendUserList, normalized.models, normalized.access, normalized.betterAuthPlugins, normalized.credentialFields);
|
|
44
|
+
// Base models are always the first entries in `authLists` (see
|
|
45
|
+
// `deriveAuthLists`), so a plugin table's reverse relation onto a base
|
|
46
|
+
// model (e.g. `AuthUser.oauthApplications`) is already part of that
|
|
47
|
+
// base list's `fields` by the time this loop reaches it — one pass
|
|
48
|
+
// suffices for both: a list already declared by the app (or added by
|
|
49
|
+
// an earlier iteration of this same loop) merges via `extendList`;
|
|
50
|
+
// everything else registers via `addList`.
|
|
73
51
|
for (const [listName, listConfig] of Object.entries(authLists)) {
|
|
74
52
|
if (context.config.lists[listName]) {
|
|
75
53
|
// A list already exists under this derived key — merge auth fields
|
|
@@ -83,52 +61,12 @@ export function authPlugin(config) {
|
|
|
83
61
|
});
|
|
84
62
|
}
|
|
85
63
|
else {
|
|
86
|
-
// Otherwise, add the auth list
|
|
87
64
|
context.addList(listName, listConfig);
|
|
88
65
|
}
|
|
89
66
|
}
|
|
90
|
-
// Extract additional lists from Better Auth plugins. Because the auth
|
|
91
|
-
// lists above are already registered, a schema extension of a base
|
|
92
|
-
// model (user/session/account/verification) always finds its resolved
|
|
93
|
-
// key occupied by the real derived list and merges via `extendList` —
|
|
94
|
-
// its `db`/`access` are preserved. Non-base plugin tables (e.g.
|
|
95
|
-
// `oauth_application`, `passkey`) still register as new lists via
|
|
96
|
-
// `addList`, same as before.
|
|
97
|
-
for (const plugin of normalized.betterAuthPlugins) {
|
|
98
|
-
if (plugin && typeof plugin === 'object' && plugin.schema) {
|
|
99
|
-
// Plugin has schema property - convert to OpenSaaS lists
|
|
100
|
-
const pluginSchema = plugin.schema;
|
|
101
|
-
const pluginLists = convertBetterAuthSchema(pluginSchema, baseModelKeys);
|
|
102
|
-
// Add or extend lists from plugin
|
|
103
|
-
for (const [listName, listConfig] of Object.entries(pluginLists)) {
|
|
104
|
-
if (context.config.lists[listName]) {
|
|
105
|
-
// List already exists — merge fields/hooks/mcp in only. Access
|
|
106
|
-
// control belongs to whoever owns the list; per ADR-0013 an
|
|
107
|
-
// extension must never carry operation-level access for a
|
|
108
|
-
// pre-existing list (the plugin engine throws if it does).
|
|
109
|
-
context.extendList(listName, {
|
|
110
|
-
fields: listConfig.fields,
|
|
111
|
-
hooks: listConfig.hooks,
|
|
112
|
-
mcp: listConfig.mcp,
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
// List doesn't exist, add it
|
|
117
|
-
context.addList(listName, listConfig);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
// Store auth config for runtime access
|
|
123
|
-
// Access at runtime via: config._pluginData.auth
|
|
124
67
|
context.setPluginData('auth', normalized);
|
|
125
68
|
},
|
|
126
69
|
beforeGenerate: (generationConfig) => {
|
|
127
|
-
// Collect every schema the Auth lists are placed in (per-model schema,
|
|
128
|
-
// else the plugin-level schema). When none is configured the Auth lists
|
|
129
|
-
// stay in the default `public` schema and we leave the config untouched —
|
|
130
|
-
// the greenfield default Prisma schema is unchanged (no `schemas`, no
|
|
131
|
-
// `previewFeatures`, no `@@schema`).
|
|
132
70
|
const authSchemas = Array.from(new Set(Object.values(normalized.models)
|
|
133
71
|
.map((model) => model.schema)
|
|
134
72
|
.filter((schema) => Boolean(schema))));
|
|
@@ -154,27 +92,19 @@ export function authPlugin(config) {
|
|
|
154
92
|
};
|
|
155
93
|
},
|
|
156
94
|
runtime: (context, sudo) => {
|
|
157
|
-
// Resolve the user list's context.db key from the configured user model.
|
|
158
|
-
// context.db is keyed camelCase, so 'User' -> 'user', 'AuthUser' -> 'authUser'.
|
|
159
95
|
const userDbKey = getDbKey(normalized.models.user.modelName);
|
|
160
|
-
// Provide auth-related utilities at runtime
|
|
161
96
|
return {
|
|
162
97
|
/**
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
*
|
|
166
|
-
* by default, and "who is this session" must not depend on the
|
|
167
|
-
* application's User access policy.
|
|
98
|
+
* Resolves through `sudo()` (per ADR-0013): the User list ships
|
|
99
|
+
* closed by default, and "who is this session" must not depend on
|
|
100
|
+
* the application's User access policy.
|
|
168
101
|
*/
|
|
169
102
|
getUser: async (userId) => {
|
|
170
103
|
return await sudo().db[userDbKey].findUnique({
|
|
171
104
|
where: { id: userId },
|
|
172
105
|
});
|
|
173
106
|
},
|
|
174
|
-
/**
|
|
175
|
-
* Get current user from session. Extracts userId from session and
|
|
176
|
-
* fetches user data via `sudo()` — see {@link getUser}.
|
|
177
|
-
*/
|
|
107
|
+
/** See {@link getUser} — same `sudo()` rationale (ADR-0013), keyed off `context.session.userId`. */
|
|
178
108
|
getCurrentUser: async () => {
|
|
179
109
|
if (!context.session?.userId) {
|
|
180
110
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/config/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ListConfig } from '@opensaas/stack-core';
|
|
1
|
+
import type { ListConfig, ListIndex } from '@opensaas/stack-core';
|
|
2
2
|
import type { BetterAuthOptions, BetterAuthPlugin, User } from 'better-auth';
|
|
3
3
|
import type { ExtendUserListConfig } from '../lists/index.js';
|
|
4
4
|
/**
|
|
@@ -12,17 +12,11 @@ export type SendAuthEmail = (data: {
|
|
|
12
12
|
url: string;
|
|
13
13
|
token: string;
|
|
14
14
|
}, request?: Request) => Promise<void>;
|
|
15
|
-
/**
|
|
16
|
-
* OAuth provider configuration
|
|
17
|
-
*/
|
|
18
15
|
export type OAuthProvider = {
|
|
19
16
|
clientId: string;
|
|
20
17
|
clientSecret: string;
|
|
21
18
|
enabled?: boolean;
|
|
22
19
|
};
|
|
23
|
-
/**
|
|
24
|
-
* Social provider configurations
|
|
25
|
-
*/
|
|
26
20
|
export type SocialProvidersConfig = {
|
|
27
21
|
github?: OAuthProvider;
|
|
28
22
|
google?: OAuthProvider;
|
|
@@ -30,9 +24,6 @@ export type SocialProvidersConfig = {
|
|
|
30
24
|
twitter?: OAuthProvider;
|
|
31
25
|
[key: string]: OAuthProvider | undefined;
|
|
32
26
|
};
|
|
33
|
-
/**
|
|
34
|
-
* Email and password configuration
|
|
35
|
-
*/
|
|
36
27
|
export type EmailPasswordConfig = {
|
|
37
28
|
enabled: boolean;
|
|
38
29
|
/**
|
|
@@ -72,9 +63,6 @@ export type EmailPasswordConfig = {
|
|
|
72
63
|
*/
|
|
73
64
|
sendResetPassword?: SendAuthEmail;
|
|
74
65
|
};
|
|
75
|
-
/**
|
|
76
|
-
* Email verification configuration
|
|
77
|
-
*/
|
|
78
66
|
export type EmailVerificationConfig = {
|
|
79
67
|
enabled: boolean;
|
|
80
68
|
/**
|
|
@@ -106,9 +94,6 @@ export type EmailVerificationConfig = {
|
|
|
106
94
|
*/
|
|
107
95
|
sendVerificationEmail?: SendAuthEmail;
|
|
108
96
|
};
|
|
109
|
-
/**
|
|
110
|
-
* Password reset configuration
|
|
111
|
-
*/
|
|
112
97
|
export type PasswordResetConfig = {
|
|
113
98
|
enabled: boolean;
|
|
114
99
|
/**
|
|
@@ -117,9 +102,6 @@ export type PasswordResetConfig = {
|
|
|
117
102
|
*/
|
|
118
103
|
tokenExpiration?: number;
|
|
119
104
|
};
|
|
120
|
-
/**
|
|
121
|
-
* Session configuration
|
|
122
|
-
*/
|
|
123
105
|
export type SessionConfig = {
|
|
124
106
|
/**
|
|
125
107
|
* Session expiration in seconds
|
|
@@ -134,24 +116,6 @@ export type SessionConfig = {
|
|
|
134
116
|
*/
|
|
135
117
|
updateAge?: number | false;
|
|
136
118
|
};
|
|
137
|
-
/**
|
|
138
|
-
* Per-model better-auth configuration block.
|
|
139
|
-
*
|
|
140
|
-
* Mirrors better-auth's own `BetterAuthDBOptions` (the `user`/`session`/
|
|
141
|
-
* `account`/`verification` config a developer already writes): `modelName`
|
|
142
|
-
* renames the table/list and `fields` maps individual better-auth field names
|
|
143
|
-
* to database column names. The auth plugin derives its Auth lists from this
|
|
144
|
-
* config so the generated lists carry the same keys and column maps as the
|
|
145
|
-
* developer's live better-auth tables.
|
|
146
|
-
*
|
|
147
|
-
* @example
|
|
148
|
-
* ```typescript
|
|
149
|
-
* authPlugin({
|
|
150
|
-
* user: { modelName: 'AuthUser', fields: { name: 'full_name' } },
|
|
151
|
-
* session: { modelName: 'AuthSession' },
|
|
152
|
-
* })
|
|
153
|
-
* ```
|
|
154
|
-
*/
|
|
155
119
|
/**
|
|
156
120
|
* App-authored operation + field-level access control for the Auth lists,
|
|
157
121
|
* keyed by better-auth model name (not by the derived list key, so it stays
|
|
@@ -200,6 +164,24 @@ export type AuthAccessConfig = {
|
|
|
200
164
|
*/
|
|
201
165
|
rateLimit?: ListConfig<any>['access'];
|
|
202
166
|
};
|
|
167
|
+
/**
|
|
168
|
+
* Per-model better-auth configuration block.
|
|
169
|
+
*
|
|
170
|
+
* Mirrors better-auth's own `BetterAuthDBOptions` (the `user`/`session`/
|
|
171
|
+
* `account`/`verification` config a developer already writes): `modelName`
|
|
172
|
+
* renames the table/list and `fields` maps individual better-auth field names
|
|
173
|
+
* to database column names. The auth plugin derives its Auth lists from this
|
|
174
|
+
* config so the generated lists carry the same keys and column maps as the
|
|
175
|
+
* developer's live better-auth tables.
|
|
176
|
+
*
|
|
177
|
+
* @example
|
|
178
|
+
* ```typescript
|
|
179
|
+
* authPlugin({
|
|
180
|
+
* user: { modelName: 'AuthUser', fields: { name: 'full_name' } },
|
|
181
|
+
* session: { modelName: 'AuthSession' },
|
|
182
|
+
* })
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
203
185
|
export type AuthModelConfig = {
|
|
204
186
|
/**
|
|
205
187
|
* The table/list name for this model.
|
|
@@ -249,36 +231,51 @@ export type AuthModelConfig = {
|
|
|
249
231
|
* ```
|
|
250
232
|
*/
|
|
251
233
|
schema?: string;
|
|
252
|
-
};
|
|
253
|
-
/**
|
|
254
|
-
* Auth configuration options
|
|
255
|
-
*/
|
|
256
|
-
export type AuthConfig = {
|
|
257
234
|
/**
|
|
258
|
-
*
|
|
235
|
+
* App-authored model-level `@@unique`/`@@index` constraints for this auth
|
|
236
|
+
* model, in the same shape as a list's own {@link ListConfig.db} `indexes`
|
|
237
|
+
* (core's {@link ListIndex}). Entries name this model's own OpenSaaS field
|
|
238
|
+
* keys (e.g. `identifier`, `createdAt` on `verification`) — the same names
|
|
239
|
+
* used in this model's `fields` column map — not raw database column names.
|
|
240
|
+
*
|
|
241
|
+
* The stack already derives some indexes from better-auth's own table
|
|
242
|
+
* definitions (e.g. `User.email` is `@unique`). When an entry here covers a
|
|
243
|
+
* column that also carries a derived index, the derived index is
|
|
244
|
+
* suppressed for that column and only this entry is emitted — the
|
|
245
|
+
* application's declaration wins (ADR-0035). This is what makes adopting a
|
|
246
|
+
* live database's real constraint name, or extending a derived column into
|
|
247
|
+
* a composite index, expressible.
|
|
248
|
+
*
|
|
249
|
+
* @example Adopt a live `user.email` unique constraint under its real name
|
|
250
|
+
* ```typescript
|
|
251
|
+
* authPlugin({
|
|
252
|
+
* user: { indexes: [{ fields: ['email'], unique: true, name: 'user_email_key' }] },
|
|
253
|
+
* })
|
|
254
|
+
* ```
|
|
255
|
+
*
|
|
256
|
+
* @example Extend a derived index into a composite (per-identifier resend cooldown)
|
|
257
|
+
* ```typescript
|
|
258
|
+
* authPlugin({
|
|
259
|
+
* verification: {
|
|
260
|
+
* indexes: [{ fields: ['identifier', { field: 'createdAt', sort: 'desc' }] }],
|
|
261
|
+
* },
|
|
262
|
+
* })
|
|
263
|
+
* ```
|
|
259
264
|
*/
|
|
265
|
+
indexes?: ListIndex[];
|
|
266
|
+
};
|
|
267
|
+
export type AuthConfig = {
|
|
260
268
|
emailAndPassword?: EmailPasswordConfig | {
|
|
261
269
|
enabled: true;
|
|
262
270
|
};
|
|
263
|
-
/**
|
|
264
|
-
* Email verification
|
|
265
|
-
*/
|
|
266
271
|
emailVerification?: EmailVerificationConfig | {
|
|
267
272
|
enabled: true;
|
|
268
273
|
};
|
|
269
|
-
/**
|
|
270
|
-
* Password reset
|
|
271
|
-
*/
|
|
272
274
|
passwordReset?: PasswordResetConfig | {
|
|
273
275
|
enabled: true;
|
|
274
276
|
};
|
|
275
|
-
/**
|
|
276
|
-
* OAuth/social providers
|
|
277
|
-
*/
|
|
278
277
|
socialProviders?: SocialProvidersConfig;
|
|
279
278
|
/**
|
|
280
|
-
* Session configuration.
|
|
281
|
-
*
|
|
282
279
|
* Carries session expiry settings as well as the better-auth `session` model
|
|
283
280
|
* config (`modelName` + field column `fields` maps) used to derive the Auth
|
|
284
281
|
* session list.
|
|
@@ -291,13 +288,7 @@ export type AuthConfig = {
|
|
|
291
288
|
* Custom fields beyond the better-auth basics are added via `extendUserList`.
|
|
292
289
|
*/
|
|
293
290
|
user?: AuthModelConfig;
|
|
294
|
-
/**
|
|
295
|
-
* better-auth `account` model configuration (modelName + field column maps).
|
|
296
|
-
*/
|
|
297
291
|
account?: AuthModelConfig;
|
|
298
|
-
/**
|
|
299
|
-
* better-auth `verification` model configuration (modelName + field column maps).
|
|
300
|
-
*/
|
|
301
292
|
verification?: AuthModelConfig;
|
|
302
293
|
/**
|
|
303
294
|
* Database schema (Postgres) for the generated Auth lists.
|
|
@@ -382,16 +373,50 @@ export type AuthConfig = {
|
|
|
382
373
|
* narrower, User-specific override.
|
|
383
374
|
*/
|
|
384
375
|
access?: AuthAccessConfig;
|
|
376
|
+
/**
|
|
377
|
+
* Mark additional better-auth model fields as credentials, so they ship
|
|
378
|
+
* field-level read-denied like the stack's own seeded set (ADR-0036) — the
|
|
379
|
+
* six base-model fields plus, as of issue #1014, the `mcp`/oauth-provider
|
|
380
|
+
* plugin's `oauthClient.clientSecret`/`oauthAccessToken.token`/
|
|
381
|
+
* `oauthRefreshToken.token` and `twoFactor()`'s `twoFactor.secret`/
|
|
382
|
+
* `backupCodes`. Use this for a better-auth plugin the stack doesn't seed a
|
|
383
|
+
* credential set for.
|
|
384
|
+
*
|
|
385
|
+
* Keyed by better-auth's own **model key** (e.g. `'twoFactor'`,
|
|
386
|
+
* `'oauthClient'` — not the derived list key, so it stays remap-proof), each
|
|
387
|
+
* naming better-auth **field keys** (not mapped column names).
|
|
388
|
+
*
|
|
389
|
+
* Strictly additive: an entry can mark further fields as credentials, but
|
|
390
|
+
* can never unmark one of the stack's seeded fields — omitting or emptying
|
|
391
|
+
* a seeded model's list here leaves that model's seeded deny standing. An
|
|
392
|
+
* entry naming a field that doesn't exist on a model the app actually
|
|
393
|
+
* derives (has that plugin registered) throws, naming the model and field;
|
|
394
|
+
* an entry for a model the app doesn't derive at all is a silent no-op.
|
|
395
|
+
* An entry naming an id-referencing relationship field (e.g. an FK ending
|
|
396
|
+
* `Id`) also throws — that field derives to a `relationship()`, never a
|
|
397
|
+
* scalar column, so a deny registered against it could never apply.
|
|
398
|
+
*
|
|
399
|
+
* @example
|
|
400
|
+
* ```typescript
|
|
401
|
+
* authPlugin({
|
|
402
|
+
* betterAuthPlugins: [passkey()],
|
|
403
|
+
* credentialFields: { passkey: ['publicKey'] },
|
|
404
|
+
* })
|
|
405
|
+
* ```
|
|
406
|
+
*/
|
|
407
|
+
credentialFields?: Record<string, string[]>;
|
|
385
408
|
/**
|
|
386
409
|
* Additional Better Auth plugins to enable
|
|
387
410
|
* Allows integrating any Better Auth plugin (MCP, 2FA, etc.)
|
|
388
411
|
*
|
|
389
412
|
* @example
|
|
390
413
|
* ```typescript
|
|
391
|
-
* import { mcp } from '
|
|
414
|
+
* import { mcp } from '@opensaas/stack-auth/plugins'
|
|
415
|
+
* import { jwt } from 'better-auth/plugins'
|
|
392
416
|
*
|
|
393
417
|
* betterAuthPlugins: [
|
|
394
|
-
* mcp(
|
|
418
|
+
* jwt(), // required alongside mcp() since better-auth 1.7
|
|
419
|
+
* mcp({ loginPage: '/sign-in', consentPage: '/consent', resource: 'https://your-app.com/api/mcp' })
|
|
395
420
|
* ]
|
|
396
421
|
* ```
|
|
397
422
|
*/
|
|
@@ -507,6 +532,8 @@ export type NormalizedAuthModelConfig = {
|
|
|
507
532
|
tableName?: string;
|
|
508
533
|
fields: Record<string, string>;
|
|
509
534
|
schema?: string;
|
|
535
|
+
/** App-authored `db.indexes` entries for this model (see {@link AuthModelConfig.indexes}). Defaults to `[]`. */
|
|
536
|
+
indexes?: ListIndex[];
|
|
510
537
|
};
|
|
511
538
|
/**
|
|
512
539
|
* Resolved auth model configuration for all four better-auth models, plus an
|
|
@@ -525,17 +552,12 @@ export type NormalizedAuthModels = {
|
|
|
525
552
|
*/
|
|
526
553
|
rateLimit?: NormalizedAuthModelConfig;
|
|
527
554
|
};
|
|
528
|
-
/**
|
|
529
|
-
* Internal normalized auth configuration
|
|
530
|
-
* Used after parsing user config
|
|
531
|
-
*/
|
|
532
555
|
export type NormalizedAuthConfig = Required<Omit<AuthConfig, 'emailAndPassword' | 'emailVerification' | 'passwordReset' | 'betterAuthPlugins' | 'rateLimit' | 'session' | 'user' | 'account' | 'verification' | 'schema'>> & {
|
|
533
556
|
emailAndPassword: Required<EmailPasswordConfig>;
|
|
534
557
|
emailVerification: Required<EmailVerificationConfig>;
|
|
535
558
|
passwordReset: Required<PasswordResetConfig>;
|
|
536
559
|
/** Resolved session expiry settings (model config lives under `models.session`). */
|
|
537
560
|
session: Required<SessionConfig>;
|
|
538
|
-
/** Resolved better-auth model config (modelName + field column maps + schema) for all auth models. */
|
|
539
561
|
models: NormalizedAuthModels;
|
|
540
562
|
/**
|
|
541
563
|
* Plugin-level Postgres schema for the Auth lists, if any. Resolved per-model
|