@opensaas/stack-auth 0.1.5 → 0.1.7
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 +16 -0
- package/README.md +1 -1
- package/dist/config/index.d.ts +0 -42
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +0 -83
- package/dist/config/index.js.map +1 -1
- package/dist/config/plugin.d.ts +25 -0
- package/dist/config/plugin.d.ts.map +1 -0
- package/dist/config/plugin.js +80 -0
- package/dist/config/plugin.js.map +1 -0
- package/dist/index.d.ts +14 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -13
- package/dist/index.js.map +1 -1
- package/dist/mcp/better-auth.d.ts +1 -1
- package/dist/mcp/better-auth.js +1 -1
- package/dist/server/index.d.ts +3 -5
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +73 -37
- package/dist/server/index.js.map +1 -1
- package/package.json +3 -3
- package/src/config/index.ts +0 -95
- package/src/config/plugin.ts +86 -0
- package/src/index.ts +14 -13
- package/src/mcp/better-auth.ts +1 -1
- package/src/server/index.ts +86 -45
- package/tests/config.test.ts +223 -64
- package/tsconfig.tsbuildinfo +1 -1
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @opensaas/stack-auth
|
|
2
2
|
|
|
3
|
+
## 0.1.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [372d467]
|
|
8
|
+
- @opensaas/stack-core@0.1.7
|
|
9
|
+
|
|
10
|
+
## 0.1.6
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- 39996ca: Add plugin mechanism
|
|
15
|
+
- Updated dependencies [39996ca]
|
|
16
|
+
- Updated dependencies [39996ca]
|
|
17
|
+
- @opensaas/stack-core@0.1.6
|
|
18
|
+
|
|
3
19
|
## 0.1.5
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -396,7 +396,7 @@ Access the session in server components or actions:
|
|
|
396
396
|
import { getContext } from '@/.opensaas/context'
|
|
397
397
|
|
|
398
398
|
async function myServerAction() {
|
|
399
|
-
const context = getContext()
|
|
399
|
+
const context = await getContext()
|
|
400
400
|
|
|
401
401
|
if (!context.session) {
|
|
402
402
|
throw new Error('Not authenticated')
|
package/dist/config/index.d.ts
CHANGED
|
@@ -1,50 +1,8 @@
|
|
|
1
|
-
import type { OpenSaasConfig } from '@opensaas/stack-core';
|
|
2
1
|
import type { AuthConfig, NormalizedAuthConfig } from './types.js';
|
|
3
2
|
/**
|
|
4
3
|
* Normalize auth configuration with defaults
|
|
5
4
|
*/
|
|
6
5
|
export declare function normalizeAuthConfig(config: AuthConfig): NormalizedAuthConfig;
|
|
7
|
-
/**
|
|
8
|
-
* Auth configuration builder
|
|
9
|
-
* Use this to create an auth configuration object
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```typescript
|
|
13
|
-
* import { authConfig } from '@opensaas/stack-auth'
|
|
14
|
-
*
|
|
15
|
-
* const auth = authConfig({
|
|
16
|
-
* emailAndPassword: { enabled: true },
|
|
17
|
-
* emailVerification: { enabled: true },
|
|
18
|
-
* socialProviders: {
|
|
19
|
-
* github: { clientId: '...', clientSecret: '...' }
|
|
20
|
-
* }
|
|
21
|
-
* })
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
export declare function authConfig(config: AuthConfig): AuthConfig;
|
|
25
|
-
/**
|
|
26
|
-
* Wrap an OpenSaas config with better-auth integration
|
|
27
|
-
* This merges the auth lists into the user's config and sets up session handling
|
|
28
|
-
*
|
|
29
|
-
* @example
|
|
30
|
-
* ```typescript
|
|
31
|
-
* import { config } from '@opensaas/stack-core'
|
|
32
|
-
* import { withAuth, authConfig } from '@opensaas/stack-auth'
|
|
33
|
-
*
|
|
34
|
-
* export default withAuth(
|
|
35
|
-
* config({
|
|
36
|
-
* db: { provider: 'sqlite', url: 'file:./dev.db' },
|
|
37
|
-
* lists: {
|
|
38
|
-
* Post: list({ ... })
|
|
39
|
-
* }
|
|
40
|
-
* }),
|
|
41
|
-
* authConfig({
|
|
42
|
-
* emailAndPassword: { enabled: true }
|
|
43
|
-
* })
|
|
44
|
-
* )
|
|
45
|
-
* ```
|
|
46
|
-
*/
|
|
47
|
-
export declare function withAuth(opensaasConfig: OpenSaasConfig, authConfig: AuthConfig): OpenSaasConfig;
|
|
48
6
|
export type { AuthConfig, NormalizedAuthConfig };
|
|
49
7
|
export * from './types.js';
|
|
50
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EAIrB,MAAM,YAAY,CAAA;AAEnB;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,oBAAoB,CAwD5E;AAED,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAA;AAChD,cAAc,YAAY,CAAA"}
|
package/dist/config/index.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { getAuthLists } from '../lists/index.js';
|
|
2
|
-
import { convertBetterAuthSchema } from '../server/schema-converter.js';
|
|
3
1
|
/**
|
|
4
2
|
* Normalize auth configuration with defaults
|
|
5
3
|
*/
|
|
@@ -52,86 +50,5 @@ export function normalizeAuthConfig(config) {
|
|
|
52
50
|
betterAuthPlugins: config.betterAuthPlugins || [],
|
|
53
51
|
};
|
|
54
52
|
}
|
|
55
|
-
/**
|
|
56
|
-
* Auth configuration builder
|
|
57
|
-
* Use this to create an auth configuration object
|
|
58
|
-
*
|
|
59
|
-
* @example
|
|
60
|
-
* ```typescript
|
|
61
|
-
* import { authConfig } from '@opensaas/stack-auth'
|
|
62
|
-
*
|
|
63
|
-
* const auth = authConfig({
|
|
64
|
-
* emailAndPassword: { enabled: true },
|
|
65
|
-
* emailVerification: { enabled: true },
|
|
66
|
-
* socialProviders: {
|
|
67
|
-
* github: { clientId: '...', clientSecret: '...' }
|
|
68
|
-
* }
|
|
69
|
-
* })
|
|
70
|
-
* ```
|
|
71
|
-
*/
|
|
72
|
-
export function authConfig(config) {
|
|
73
|
-
return config;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Wrap an OpenSaas config with better-auth integration
|
|
77
|
-
* This merges the auth lists into the user's config and sets up session handling
|
|
78
|
-
*
|
|
79
|
-
* @example
|
|
80
|
-
* ```typescript
|
|
81
|
-
* import { config } from '@opensaas/stack-core'
|
|
82
|
-
* import { withAuth, authConfig } from '@opensaas/stack-auth'
|
|
83
|
-
*
|
|
84
|
-
* export default withAuth(
|
|
85
|
-
* config({
|
|
86
|
-
* db: { provider: 'sqlite', url: 'file:./dev.db' },
|
|
87
|
-
* lists: {
|
|
88
|
-
* Post: list({ ... })
|
|
89
|
-
* }
|
|
90
|
-
* }),
|
|
91
|
-
* authConfig({
|
|
92
|
-
* emailAndPassword: { enabled: true }
|
|
93
|
-
* })
|
|
94
|
-
* )
|
|
95
|
-
* ```
|
|
96
|
-
*/
|
|
97
|
-
export function withAuth(opensaasConfig, authConfig) {
|
|
98
|
-
const normalized = normalizeAuthConfig(authConfig);
|
|
99
|
-
// Get auth lists from plugins
|
|
100
|
-
const authLists = getAuthListsFromPlugins(normalized);
|
|
101
|
-
// Merge auth lists with user lists (auth lists take priority)
|
|
102
|
-
const mergedLists = {
|
|
103
|
-
...opensaasConfig.lists,
|
|
104
|
-
...authLists,
|
|
105
|
-
};
|
|
106
|
-
// Return merged config with auth config attached
|
|
107
|
-
// Note: Session integration happens in the generator/context
|
|
108
|
-
const result = {
|
|
109
|
-
...opensaasConfig,
|
|
110
|
-
lists: mergedLists,
|
|
111
|
-
};
|
|
112
|
-
// Store auth config for internal use
|
|
113
|
-
result.__authConfig = normalized;
|
|
114
|
-
return result;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Get auth lists by extracting schemas from Better Auth plugins
|
|
118
|
-
* This inspects the plugin objects directly without requiring a database connection
|
|
119
|
-
*/
|
|
120
|
-
function getAuthListsFromPlugins(authConfig) {
|
|
121
|
-
// Start with base Better Auth tables (always required)
|
|
122
|
-
const authLists = getAuthLists(authConfig.extendUserList);
|
|
123
|
-
// Extract additional tables from plugins
|
|
124
|
-
for (const plugin of authConfig.betterAuthPlugins) {
|
|
125
|
-
if (plugin && typeof plugin === 'object' && 'schema' in plugin) {
|
|
126
|
-
// Plugin has schema property - convert to OpenSaaS lists
|
|
127
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Plugin schema types are dynamic
|
|
128
|
-
const pluginSchema = plugin.schema;
|
|
129
|
-
// Convert plugin schema to OpenSaaS lists and merge
|
|
130
|
-
const pluginLists = convertBetterAuthSchema(pluginSchema);
|
|
131
|
-
Object.assign(authLists, pluginLists);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
return authLists;
|
|
135
|
-
}
|
|
136
53
|
export * from './types.js';
|
|
137
54
|
//# sourceMappingURL=index.js.map
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAQA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAkB;IACpD,8BAA8B;IAC9B,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;SAC/E;QACH,CAAC,CAAC,EAAE,OAAO,EAAE,KAAc,EAAE,iBAAiB,EAAE,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAA;IAEhF,8BAA8B;IAC9B,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;SACjF;QACH,CAAC,CAAC,EAAE,OAAO,EAAE,KAAc,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,CAAA;IAE3E,0BAA0B;IAC1B,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,mBAAmB;IACnB,MAAM,OAAO,GAAG;QACd,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,IAAI,MAAM,EAAE,SAAS;QACzD,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,IAAI,IAAI;KAC7C,CAAA;IAED,0BAA0B;IAC1B,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAEzE,OAAO;QACL,gBAAgB;QAChB,iBAAiB;QACjB,aAAa;QACb,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,EAAE;QAC7C,OAAO;QACP,aAAa;QACb,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,EAAE;QAC3C,SAAS,EACP,MAAM,CAAC,SAAS;YAChB,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;gBAC/B,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;gBAC/D,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;gBACxB,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,EAAE,CAAC,CAAA;gBAClC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;YAC9B,CAAC,CAAC;QACJ,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,EAAE;KAClD,CAAA;AACH,CAAC;AAGD,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Plugin } from '@opensaas/stack-core';
|
|
2
|
+
import type { AuthConfig } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Auth plugin for OpenSaas Stack
|
|
5
|
+
* Provides Better-auth integration with automatic list generation and session management
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { config } from '@opensaas/stack-core'
|
|
10
|
+
* import { authPlugin } from '@opensaas/stack-auth'
|
|
11
|
+
*
|
|
12
|
+
* export default config({
|
|
13
|
+
* plugins: [
|
|
14
|
+
* authPlugin({
|
|
15
|
+
* emailAndPassword: { enabled: true },
|
|
16
|
+
* sessionFields: ['userId', 'email', 'name', 'role']
|
|
17
|
+
* })
|
|
18
|
+
* ],
|
|
19
|
+
* db: { provider: 'sqlite', url: 'file:./dev.db' },
|
|
20
|
+
* lists: { Post: list({...}) }
|
|
21
|
+
* })
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function authPlugin(config: AuthConfig): Plugin;
|
|
25
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,YAAY,CAAA;AAKlE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA0DrD"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { normalizeAuthConfig } from './index.js';
|
|
2
|
+
import { getAuthLists } from '../lists/index.js';
|
|
3
|
+
import { convertBetterAuthSchema } from '../server/schema-converter.js';
|
|
4
|
+
/**
|
|
5
|
+
* Auth plugin for OpenSaas Stack
|
|
6
|
+
* Provides Better-auth integration with automatic list generation and session management
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { config } from '@opensaas/stack-core'
|
|
11
|
+
* import { authPlugin } from '@opensaas/stack-auth'
|
|
12
|
+
*
|
|
13
|
+
* export default config({
|
|
14
|
+
* plugins: [
|
|
15
|
+
* authPlugin({
|
|
16
|
+
* emailAndPassword: { enabled: true },
|
|
17
|
+
* sessionFields: ['userId', 'email', 'name', 'role']
|
|
18
|
+
* })
|
|
19
|
+
* ],
|
|
20
|
+
* db: { provider: 'sqlite', url: 'file:./dev.db' },
|
|
21
|
+
* lists: { Post: list({...}) }
|
|
22
|
+
* })
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export function authPlugin(config) {
|
|
26
|
+
const normalized = normalizeAuthConfig(config);
|
|
27
|
+
return {
|
|
28
|
+
name: 'auth',
|
|
29
|
+
version: '0.1.0',
|
|
30
|
+
init: async (context) => {
|
|
31
|
+
// Get auth lists from base Better Auth schema
|
|
32
|
+
const authLists = getAuthLists(normalized.extendUserList);
|
|
33
|
+
// Extract additional lists from Better Auth plugins
|
|
34
|
+
for (const plugin of normalized.betterAuthPlugins) {
|
|
35
|
+
if (plugin && typeof plugin === 'object' && 'schema' in plugin) {
|
|
36
|
+
// Plugin has schema property - convert to OpenSaaS lists
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Plugin schema types are dynamic
|
|
38
|
+
const pluginSchema = plugin.schema;
|
|
39
|
+
const pluginLists = convertBetterAuthSchema(pluginSchema);
|
|
40
|
+
// Add or extend lists from plugin
|
|
41
|
+
for (const [listName, listConfig] of Object.entries(pluginLists)) {
|
|
42
|
+
if (context.config.lists[listName]) {
|
|
43
|
+
// List exists, extend it
|
|
44
|
+
context.extendList(listName, {
|
|
45
|
+
fields: listConfig.fields,
|
|
46
|
+
hooks: listConfig.hooks,
|
|
47
|
+
access: listConfig.access,
|
|
48
|
+
mcp: listConfig.mcp,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// List doesn't exist, add it
|
|
53
|
+
context.addList(listName, listConfig);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Add all auth lists
|
|
59
|
+
for (const [listName, listConfig] of Object.entries(authLists)) {
|
|
60
|
+
if (context.config.lists[listName]) {
|
|
61
|
+
// If user defined a User list, extend it with auth fields
|
|
62
|
+
context.extendList(listName, {
|
|
63
|
+
fields: listConfig.fields,
|
|
64
|
+
hooks: listConfig.hooks,
|
|
65
|
+
access: listConfig.access,
|
|
66
|
+
mcp: listConfig.mcp,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
// Otherwise, add the auth list
|
|
71
|
+
context.addList(listName, listConfig);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Store auth config for runtime access
|
|
75
|
+
// Access at runtime via: config._pluginData.auth
|
|
76
|
+
context.setPluginData('auth', normalized);
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAEvE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,UAAU,CAAC,MAAkB;IAC3C,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAE9C,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,OAAO;QAEhB,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACtB,8CAA8C;YAC9C,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;YAEzD,oDAAoD;YACpD,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC;gBAClD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;oBAC/D,yDAAyD;oBACzD,iGAAiG;oBACjG,MAAM,YAAY,GAAG,MAAM,CAAC,MAAa,CAAA;oBACzC,MAAM,WAAW,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAA;oBAEzD,kCAAkC;oBAClC,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;wBACjE,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACnC,yBAAyB;4BACzB,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE;gCAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;gCACzB,KAAK,EAAE,UAAU,CAAC,KAAK;gCACvB,MAAM,EAAE,UAAU,CAAC,MAAM;gCACzB,GAAG,EAAE,UAAU,CAAC,GAAG;6BACpB,CAAC,CAAA;wBACJ,CAAC;6BAAM,CAAC;4BACN,6BAA6B;4BAC7B,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;wBACvC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,qBAAqB;YACrB,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/D,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnC,0DAA0D;oBAC1D,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE;wBAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;wBACzB,KAAK,EAAE,UAAU,CAAC,KAAK;wBACvB,MAAM,EAAE,UAAU,CAAC,MAAM;wBACzB,GAAG,EAAE,UAAU,CAAC,GAAG;qBACpB,CAAC,CAAA;gBACJ,CAAC;qBAAM,CAAC;oBACN,+BAA+B;oBAC/B,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;gBACvC,CAAC;YACH,CAAC;YAED,uCAAuC;YACvC,iDAAiD;YACjD,OAAO,CAAC,aAAa,CAAuB,MAAM,EAAE,UAAU,CAAC,CAAA;QACjE,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,27 +7,28 @@
|
|
|
7
7
|
* - Auto-generated User, Session, Account, Verification lists
|
|
8
8
|
* - Session integration with OpenSaas access control
|
|
9
9
|
* - Pre-built auth UI components (SignIn, SignUp, ForgotPassword)
|
|
10
|
-
* - Easy configuration with
|
|
10
|
+
* - Easy configuration with authPlugin()
|
|
11
11
|
*
|
|
12
12
|
* @example
|
|
13
13
|
* ```typescript
|
|
14
14
|
* // opensaas.config.ts
|
|
15
15
|
* import { config } from '@opensaas/stack-core'
|
|
16
|
-
* import {
|
|
16
|
+
* import { authPlugin } from '@opensaas/stack-auth'
|
|
17
17
|
*
|
|
18
|
-
* export default
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* }
|
|
27
|
-
* )
|
|
18
|
+
* export default config({
|
|
19
|
+
* plugins: [
|
|
20
|
+
* authPlugin({
|
|
21
|
+
* emailAndPassword: { enabled: true },
|
|
22
|
+
* emailVerification: { enabled: true },
|
|
23
|
+
* })
|
|
24
|
+
* ],
|
|
25
|
+
* db: { provider: 'sqlite', url: 'file:./dev.db' },
|
|
26
|
+
* lists: { ... }
|
|
27
|
+
* })
|
|
28
28
|
* ```
|
|
29
29
|
*/
|
|
30
|
-
export {
|
|
30
|
+
export { normalizeAuthConfig } from './config/index.js';
|
|
31
|
+
export { authPlugin } from './config/plugin.js';
|
|
31
32
|
export type { AuthConfig, NormalizedAuthConfig } from './config/index.js';
|
|
32
33
|
export type * from './config/types.js';
|
|
33
34
|
export { getAuthLists, createUserList, createSessionList, createAccountList, createVerificationList, } from './lists/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACzE,mBAAmB,mBAAmB,CAAA;AAGtC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -7,28 +7,29 @@
|
|
|
7
7
|
* - Auto-generated User, Session, Account, Verification lists
|
|
8
8
|
* - Session integration with OpenSaas access control
|
|
9
9
|
* - Pre-built auth UI components (SignIn, SignUp, ForgotPassword)
|
|
10
|
-
* - Easy configuration with
|
|
10
|
+
* - Easy configuration with authPlugin()
|
|
11
11
|
*
|
|
12
12
|
* @example
|
|
13
13
|
* ```typescript
|
|
14
14
|
* // opensaas.config.ts
|
|
15
15
|
* import { config } from '@opensaas/stack-core'
|
|
16
|
-
* import {
|
|
16
|
+
* import { authPlugin } from '@opensaas/stack-auth'
|
|
17
17
|
*
|
|
18
|
-
* export default
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* }
|
|
27
|
-
* )
|
|
18
|
+
* export default config({
|
|
19
|
+
* plugins: [
|
|
20
|
+
* authPlugin({
|
|
21
|
+
* emailAndPassword: { enabled: true },
|
|
22
|
+
* emailVerification: { enabled: true },
|
|
23
|
+
* })
|
|
24
|
+
* ],
|
|
25
|
+
* db: { provider: 'sqlite', url: 'file:./dev.db' },
|
|
26
|
+
* lists: { ... }
|
|
27
|
+
* })
|
|
28
28
|
* ```
|
|
29
29
|
*/
|
|
30
30
|
// Config exports
|
|
31
|
-
export {
|
|
31
|
+
export { normalizeAuthConfig } from './config/index.js';
|
|
32
|
+
export { authPlugin } from './config/plugin.js';
|
|
32
33
|
// List generators (for advanced use cases)
|
|
33
34
|
export { getAuthLists, createUserList, createSessionList, createAccountList, createVerificationList, } from './lists/index.js';
|
|
34
35
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,iBAAiB;AACjB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,iBAAiB;AACjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAI/C,2CAA2C;AAC3C,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,kBAAkB,CAAA"}
|
|
@@ -59,7 +59,7 @@ export declare function withMcpAuth(auth: BetterAuthInstance, handler: (req: Req
|
|
|
59
59
|
* @example
|
|
60
60
|
* ```typescript
|
|
61
61
|
* const mcpSession = await auth.api.getMcpSession({ headers: req.headers })
|
|
62
|
-
* const context = getContext(mcpSessionToContextSession(mcpSession))
|
|
62
|
+
* const context = await getContext(mcpSessionToContextSession(mcpSession))
|
|
63
63
|
* const posts = await context.db.post.findMany()
|
|
64
64
|
* ```
|
|
65
65
|
*/
|
package/dist/mcp/better-auth.js
CHANGED
|
@@ -72,7 +72,7 @@ export function withMcpAuth(auth, handler) {
|
|
|
72
72
|
* @example
|
|
73
73
|
* ```typescript
|
|
74
74
|
* const mcpSession = await auth.api.getMcpSession({ headers: req.headers })
|
|
75
|
-
* const context = getContext(mcpSessionToContextSession(mcpSession))
|
|
75
|
+
* const context = await getContext(mcpSessionToContextSession(mcpSession))
|
|
76
76
|
* const posts = await context.db.post.findMany()
|
|
77
77
|
* ```
|
|
78
78
|
*/
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { betterAuth } from 'better-auth';
|
|
2
2
|
import type { BetterAuthOptions } from 'better-auth';
|
|
3
3
|
import type { OpenSaasConfig, AccessContext } from '@opensaas/stack-core';
|
|
4
|
-
import type { NormalizedAuthConfig } from '../config/types.js';
|
|
5
4
|
/**
|
|
6
5
|
* Create a better-auth instance from OpenSaas config
|
|
7
6
|
* This should be called once at app startup
|
|
@@ -11,13 +10,12 @@ import type { NormalizedAuthConfig } from '../config/types.js';
|
|
|
11
10
|
* // lib/auth.ts
|
|
12
11
|
* import { createAuth } from '@opensaas/stack-auth/server'
|
|
13
12
|
* import config from '../opensaas.config'
|
|
13
|
+
* import { rawOpensaasContext } from '@/.opensaas/context'
|
|
14
14
|
*
|
|
15
|
-
* export const auth = createAuth(config)
|
|
15
|
+
* export const auth = createAuth(config, rawOpensaasContext)
|
|
16
16
|
* ```
|
|
17
17
|
*/
|
|
18
|
-
export declare function createAuth(opensaasConfig: OpenSaasConfig
|
|
19
|
-
__authConfig?: NormalizedAuthConfig;
|
|
20
|
-
}, context: AccessContext): import("better-auth").Auth<BetterAuthOptions>;
|
|
18
|
+
export declare function createAuth(opensaasConfig: OpenSaasConfig | Promise<OpenSaasConfig>, context: AccessContext | Promise<AccessContext>): import("better-auth").Auth<BetterAuthOptions>;
|
|
21
19
|
/**
|
|
22
20
|
* Get session from better-auth and transform it to OpenSaas session format
|
|
23
21
|
* This is used internally by the generated context
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAkB,aAAa,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAkB,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAezF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CACxB,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,EACxD,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,iDA6FhD;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,EACnC,aAAa,EAAE,MAAM,EAAE,2CA0BxB;AAED,YAAY,EAAE,iBAAiB,EAAE,CAAA"}
|
package/dist/server/index.js
CHANGED
|
@@ -17,49 +17,85 @@ function getDatabaseConfig(dbConfig, context) {
|
|
|
17
17
|
* // lib/auth.ts
|
|
18
18
|
* import { createAuth } from '@opensaas/stack-auth/server'
|
|
19
19
|
* import config from '../opensaas.config'
|
|
20
|
+
* import { rawOpensaasContext } from '@/.opensaas/context'
|
|
20
21
|
*
|
|
21
|
-
* export const auth = createAuth(config)
|
|
22
|
+
* export const auth = createAuth(config, rawOpensaasContext)
|
|
22
23
|
* ```
|
|
23
24
|
*/
|
|
24
25
|
export function createAuth(opensaasConfig, context) {
|
|
25
|
-
//
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
// Resolve config and context asynchronously
|
|
27
|
+
const configPromise = Promise.resolve(opensaasConfig);
|
|
28
|
+
const contextPromise = Promise.resolve(context);
|
|
29
|
+
// Create auth instance lazily when needed
|
|
30
|
+
let authInstance = null;
|
|
31
|
+
let authPromise = null;
|
|
32
|
+
async function getAuthInstance() {
|
|
33
|
+
if (authInstance)
|
|
34
|
+
return authInstance;
|
|
35
|
+
if (!authPromise) {
|
|
36
|
+
authPromise = (async () => {
|
|
37
|
+
const resolvedConfig = await configPromise;
|
|
38
|
+
const resolvedContext = await contextPromise;
|
|
39
|
+
// Extract auth config from plugin data
|
|
40
|
+
const authConfig = resolvedConfig._pluginData?.auth;
|
|
41
|
+
if (!authConfig) {
|
|
42
|
+
throw new Error('Auth config not found. Make sure to use authPlugin() in your opensaas.config.ts');
|
|
43
|
+
}
|
|
44
|
+
// Build better-auth configuration
|
|
45
|
+
const betterAuthConfig = {
|
|
46
|
+
database: getDatabaseConfig(resolvedConfig.db, resolvedContext),
|
|
47
|
+
// Enable email and password if configured
|
|
48
|
+
emailAndPassword: authConfig.emailAndPassword.enabled
|
|
49
|
+
? {
|
|
50
|
+
enabled: true,
|
|
51
|
+
requireEmailVerification: authConfig.emailVerification.enabled,
|
|
52
|
+
}
|
|
53
|
+
: undefined,
|
|
54
|
+
// Configure session
|
|
55
|
+
session: {
|
|
56
|
+
expiresIn: authConfig.session.expiresIn || 604800,
|
|
57
|
+
updateAge: authConfig.session.updateAge
|
|
58
|
+
? (authConfig.session.expiresIn || 604800) / 10
|
|
59
|
+
: 0,
|
|
60
|
+
},
|
|
61
|
+
// Trust host (required for production)
|
|
62
|
+
trustedOrigins: process.env.BETTER_AUTH_TRUSTED_ORIGINS?.split(',') || [],
|
|
63
|
+
// Social providers
|
|
64
|
+
socialProviders: Object.entries(authConfig.socialProviders)
|
|
65
|
+
.filter(([_, config]) => config?.enabled !== false)
|
|
66
|
+
.reduce((acc, [provider, config]) => {
|
|
67
|
+
if (config) {
|
|
68
|
+
acc[provider] = {
|
|
69
|
+
clientId: config.clientId,
|
|
70
|
+
clientSecret: config.clientSecret,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
return acc;
|
|
74
|
+
}, {}),
|
|
75
|
+
// Pass through any additional Better Auth plugins
|
|
76
|
+
plugins: authConfig.betterAuthPlugins || [],
|
|
77
|
+
};
|
|
78
|
+
authInstance = betterAuth(betterAuthConfig);
|
|
79
|
+
return authInstance;
|
|
80
|
+
})();
|
|
81
|
+
}
|
|
82
|
+
return authPromise;
|
|
29
83
|
}
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
updateAge: authConfig.session.updateAge ? (authConfig.session.expiresIn || 604800) / 10 : 0,
|
|
84
|
+
// Return a proxy that lazily initializes the auth instance
|
|
85
|
+
return new Proxy({}, {
|
|
86
|
+
get(_, prop) {
|
|
87
|
+
return (...args) => {
|
|
88
|
+
return (async () => {
|
|
89
|
+
const instance = await getAuthInstance();
|
|
90
|
+
const value = instance[prop];
|
|
91
|
+
if (typeof value === 'function') {
|
|
92
|
+
return value.apply(instance, args);
|
|
93
|
+
}
|
|
94
|
+
return value;
|
|
95
|
+
})();
|
|
96
|
+
};
|
|
44
97
|
},
|
|
45
|
-
|
|
46
|
-
trustedOrigins: process.env.BETTER_AUTH_TRUSTED_ORIGINS?.split(',') || [],
|
|
47
|
-
// Social providers
|
|
48
|
-
socialProviders: Object.entries(authConfig.socialProviders)
|
|
49
|
-
.filter(([_, config]) => config?.enabled !== false)
|
|
50
|
-
.reduce((acc, [provider, config]) => {
|
|
51
|
-
if (config) {
|
|
52
|
-
acc[provider] = {
|
|
53
|
-
clientId: config.clientId,
|
|
54
|
-
clientSecret: config.clientSecret,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
return acc;
|
|
58
|
-
}, {}),
|
|
59
|
-
// Pass through any additional Better Auth plugins
|
|
60
|
-
plugins: authConfig.betterAuthPlugins || [],
|
|
61
|
-
};
|
|
62
|
-
return betterAuth(betterAuthConfig);
|
|
98
|
+
});
|
|
63
99
|
}
|
|
64
100
|
/**
|
|
65
101
|
* Get session from better-auth and transform it to OpenSaas session format
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAK3D;;GAEG;AACH,SAAS,iBAAiB,CACxB,QAAwB,EACxB,OAAsB;IAEtB,OAAO,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE;QACnC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC5B,CAAC,CAAA;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.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.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "Better-auth integration for OpenSaas Stack",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"better-auth": "^1.3.29",
|
|
53
53
|
"react": "^18.0.0 || ^19.0.0",
|
|
54
54
|
"next": "^15.0.0 || ^16.0.0",
|
|
55
|
-
"@opensaas/stack-core": "0.1.
|
|
55
|
+
"@opensaas/stack-core": "0.1.7"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {},
|
|
58
58
|
"devDependencies": {
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"react": "^19.2.0",
|
|
66
66
|
"typescript": "^5.9.3",
|
|
67
67
|
"vitest": "^4.0.0",
|
|
68
|
-
"@opensaas/stack-core": "0.1.
|
|
68
|
+
"@opensaas/stack-core": "0.1.7"
|
|
69
69
|
},
|
|
70
70
|
"scripts": {
|
|
71
71
|
"build": "tsc",
|