@better-auth/sso 1.4.0-beta.22 → 1.4.0-beta.23
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 +8 -8
- package/dist/client.d.mts +14 -3
- package/dist/client.mjs +1 -1
- package/dist/{index-DOws6HlV.d.mts → index-xXD__4zM.d.mts} +172 -19
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +252 -17
- package/package.json +4 -4
- package/src/client.ts +20 -3
- package/src/domain-verification.test.ts +550 -0
- package/src/index.ts +57 -11
- package/src/routes/domain-verification.ts +275 -0
- package/src/routes/sso.ts +116 -16
- package/src/types.ts +28 -3
- package/src/utils.ts +10 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @better-auth/sso@1.4.0-beta.
|
|
2
|
+
> @better-auth/sso@1.4.0-beta.23 build /home/runner/work/better-auth/better-auth/packages/sso
|
|
3
3
|
> tsdown
|
|
4
4
|
|
|
5
5
|
[34mℹ[39m tsdown [2mv0.16.5[22m powered by rolldown [2mv1.0.0-beta.50[22m
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
[34mℹ[39m entry: [34msrc/index.ts, src/client.ts[39m
|
|
8
8
|
[34mℹ[39m tsconfig: [34mtsconfig.json[39m
|
|
9
9
|
[34mℹ[39m Build start
|
|
10
|
-
[34mℹ[39m [2mdist/[22m[1mindex.mjs[22m [
|
|
11
|
-
[34mℹ[39m [2mdist/[22m[1mclient.mjs[22m [2m 0.15 kB[22m [2m│ gzip:
|
|
12
|
-
[34mℹ[39m [2mdist/[22m[32m[1mclient.d.mts[22m[39m [2m 0.
|
|
13
|
-
[34mℹ[39m [2mdist/[22m[32m[1mindex.d.mts[22m[39m [2m 0.
|
|
14
|
-
[34mℹ[39m [2mdist/[22m[32mindex-
|
|
15
|
-
[34mℹ[39m 5 files, total:
|
|
16
|
-
[32m✔[39m Build complete in [
|
|
10
|
+
[34mℹ[39m [2mdist/[22m[1mindex.mjs[22m [2m57.77 kB[22m [2m│ gzip: 10.35 kB[22m
|
|
11
|
+
[34mℹ[39m [2mdist/[22m[1mclient.mjs[22m [2m 0.15 kB[22m [2m│ gzip: 0.14 kB[22m
|
|
12
|
+
[34mℹ[39m [2mdist/[22m[32m[1mclient.d.mts[22m[39m [2m 0.49 kB[22m [2m│ gzip: 0.30 kB[22m
|
|
13
|
+
[34mℹ[39m [2mdist/[22m[32m[1mindex.d.mts[22m[39m [2m 0.21 kB[22m [2m│ gzip: 0.15 kB[22m
|
|
14
|
+
[34mℹ[39m [2mdist/[22m[32mindex-xXD__4zM.d.mts[39m [2m25.36 kB[22m [2m│ gzip: 3.94 kB[22m
|
|
15
|
+
[34mℹ[39m 5 files, total: 83.98 kB
|
|
16
|
+
[32m✔[39m Build complete in [32m11335ms[39m
|
package/dist/client.d.mts
CHANGED
|
@@ -1,9 +1,20 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as SSOPlugin } from "./index-xXD__4zM.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/client.d.ts
|
|
4
|
-
|
|
4
|
+
interface SSOClientOptions {
|
|
5
|
+
domainVerification?: {
|
|
6
|
+
enabled: boolean;
|
|
7
|
+
} | undefined;
|
|
8
|
+
}
|
|
9
|
+
declare const ssoClient: <CO extends SSOClientOptions>(options?: CO | undefined) => {
|
|
5
10
|
id: "sso-client";
|
|
6
|
-
$InferServerPlugin:
|
|
11
|
+
$InferServerPlugin: SSOPlugin<{
|
|
12
|
+
domainVerification: {
|
|
13
|
+
enabled: CO["domainVerification"] extends {
|
|
14
|
+
enabled: true;
|
|
15
|
+
} ? true : false;
|
|
16
|
+
};
|
|
17
|
+
}>;
|
|
7
18
|
};
|
|
8
19
|
//#endregion
|
|
9
20
|
export { ssoClient };
|
package/dist/client.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { OAuth2Tokens, User } from "better-auth";
|
|
2
1
|
import * as z from "zod/v4";
|
|
2
|
+
import { OAuth2Tokens, User } from "better-auth";
|
|
3
3
|
import * as better_call0 from "better-call";
|
|
4
4
|
|
|
5
5
|
//#region src/types.d.ts
|
|
@@ -76,7 +76,7 @@ interface SAMLConfig {
|
|
|
76
76
|
additionalParams?: Record<string, any> | undefined;
|
|
77
77
|
mapping?: SAMLMapping | undefined;
|
|
78
78
|
}
|
|
79
|
-
type
|
|
79
|
+
type BaseSSOProvider = {
|
|
80
80
|
issuer: string;
|
|
81
81
|
oidcConfig?: OIDCConfig | undefined;
|
|
82
82
|
samlConfig?: SAMLConfig | undefined;
|
|
@@ -85,6 +85,11 @@ type SSOProvider = {
|
|
|
85
85
|
organizationId?: string | undefined;
|
|
86
86
|
domain: string;
|
|
87
87
|
};
|
|
88
|
+
type SSOProvider<O extends SSOOptions> = O["domainVerification"] extends {
|
|
89
|
+
enabled: true;
|
|
90
|
+
} ? {
|
|
91
|
+
domainVerified: boolean;
|
|
92
|
+
} & BaseSSOProvider : BaseSSOProvider;
|
|
88
93
|
interface SSOOptions {
|
|
89
94
|
/**
|
|
90
95
|
* custom function to provision a user when they sign in with an SSO provider.
|
|
@@ -105,7 +110,7 @@ interface SSOOptions {
|
|
|
105
110
|
/**
|
|
106
111
|
* The SSO provider
|
|
107
112
|
*/
|
|
108
|
-
provider: SSOProvider
|
|
113
|
+
provider: SSOProvider<SSOOptions>;
|
|
109
114
|
}) => Promise<void>) | undefined;
|
|
110
115
|
/**
|
|
111
116
|
* Organization provisioning options
|
|
@@ -129,7 +134,7 @@ interface SSOOptions {
|
|
|
129
134
|
/**
|
|
130
135
|
* The SSO provider
|
|
131
136
|
*/
|
|
132
|
-
provider: SSOProvider
|
|
137
|
+
provider: SSOProvider<SSOOptions>;
|
|
133
138
|
}) => Promise<"member" | "admin">;
|
|
134
139
|
} | undefined;
|
|
135
140
|
/**
|
|
@@ -214,8 +219,129 @@ interface SSOOptions {
|
|
|
214
219
|
* @default false
|
|
215
220
|
*/
|
|
216
221
|
trustEmailVerified?: boolean | undefined;
|
|
222
|
+
/**
|
|
223
|
+
* Enable domain verification on SSO providers
|
|
224
|
+
*
|
|
225
|
+
* When this option is enabled, new SSO providers will require the associated domain to be verified by the owner
|
|
226
|
+
* prior to allowing sign-ins.
|
|
227
|
+
*/
|
|
228
|
+
domainVerification?: {
|
|
229
|
+
/**
|
|
230
|
+
* Enables or disables the domain verification feature
|
|
231
|
+
*/
|
|
232
|
+
enabled?: boolean;
|
|
233
|
+
/**
|
|
234
|
+
* Prefix used to generate the domain verification token
|
|
235
|
+
*
|
|
236
|
+
* @default "better-auth-token-"
|
|
237
|
+
*/
|
|
238
|
+
tokenPrefix?: string;
|
|
239
|
+
};
|
|
217
240
|
}
|
|
218
241
|
//#endregion
|
|
242
|
+
//#region src/routes/domain-verification.d.ts
|
|
243
|
+
declare const requestDomainVerification: (options: SSOOptions) => better_call0.StrictEndpoint<"/sso/request-domain-verification", {
|
|
244
|
+
method: "POST";
|
|
245
|
+
body: z.ZodObject<{
|
|
246
|
+
providerId: z.ZodString;
|
|
247
|
+
}, z.core.$strip>;
|
|
248
|
+
metadata: {
|
|
249
|
+
openapi: {
|
|
250
|
+
summary: string;
|
|
251
|
+
description: string;
|
|
252
|
+
responses: {
|
|
253
|
+
"404": {
|
|
254
|
+
description: string;
|
|
255
|
+
};
|
|
256
|
+
"409": {
|
|
257
|
+
description: string;
|
|
258
|
+
};
|
|
259
|
+
"201": {
|
|
260
|
+
description: string;
|
|
261
|
+
};
|
|
262
|
+
};
|
|
263
|
+
};
|
|
264
|
+
};
|
|
265
|
+
use: ((inputContext: better_call0.MiddlewareInputContext<better_call0.MiddlewareOptions>) => Promise<{
|
|
266
|
+
session: {
|
|
267
|
+
session: Record<string, any> & {
|
|
268
|
+
id: string;
|
|
269
|
+
createdAt: Date;
|
|
270
|
+
updatedAt: Date;
|
|
271
|
+
userId: string;
|
|
272
|
+
expiresAt: Date;
|
|
273
|
+
token: string;
|
|
274
|
+
ipAddress?: string | null | undefined;
|
|
275
|
+
userAgent?: string | null | undefined;
|
|
276
|
+
};
|
|
277
|
+
user: Record<string, any> & {
|
|
278
|
+
id: string;
|
|
279
|
+
createdAt: Date;
|
|
280
|
+
updatedAt: Date;
|
|
281
|
+
email: string;
|
|
282
|
+
emailVerified: boolean;
|
|
283
|
+
name: string;
|
|
284
|
+
image?: string | null | undefined;
|
|
285
|
+
};
|
|
286
|
+
};
|
|
287
|
+
}>)[];
|
|
288
|
+
} & {
|
|
289
|
+
use: any[];
|
|
290
|
+
}, {
|
|
291
|
+
domainVerificationToken: string;
|
|
292
|
+
}>;
|
|
293
|
+
declare const verifyDomain: (options: SSOOptions) => better_call0.StrictEndpoint<"/sso/verify-domain", {
|
|
294
|
+
method: "POST";
|
|
295
|
+
body: z.ZodObject<{
|
|
296
|
+
providerId: z.ZodString;
|
|
297
|
+
}, z.core.$strip>;
|
|
298
|
+
metadata: {
|
|
299
|
+
openapi: {
|
|
300
|
+
summary: string;
|
|
301
|
+
description: string;
|
|
302
|
+
responses: {
|
|
303
|
+
"404": {
|
|
304
|
+
description: string;
|
|
305
|
+
};
|
|
306
|
+
"409": {
|
|
307
|
+
description: string;
|
|
308
|
+
};
|
|
309
|
+
"502": {
|
|
310
|
+
description: string;
|
|
311
|
+
};
|
|
312
|
+
"204": {
|
|
313
|
+
description: string;
|
|
314
|
+
};
|
|
315
|
+
};
|
|
316
|
+
};
|
|
317
|
+
};
|
|
318
|
+
use: ((inputContext: better_call0.MiddlewareInputContext<better_call0.MiddlewareOptions>) => Promise<{
|
|
319
|
+
session: {
|
|
320
|
+
session: Record<string, any> & {
|
|
321
|
+
id: string;
|
|
322
|
+
createdAt: Date;
|
|
323
|
+
updatedAt: Date;
|
|
324
|
+
userId: string;
|
|
325
|
+
expiresAt: Date;
|
|
326
|
+
token: string;
|
|
327
|
+
ipAddress?: string | null | undefined;
|
|
328
|
+
userAgent?: string | null | undefined;
|
|
329
|
+
};
|
|
330
|
+
user: Record<string, any> & {
|
|
331
|
+
id: string;
|
|
332
|
+
createdAt: Date;
|
|
333
|
+
updatedAt: Date;
|
|
334
|
+
email: string;
|
|
335
|
+
emailVerified: boolean;
|
|
336
|
+
name: string;
|
|
337
|
+
image?: string | null | undefined;
|
|
338
|
+
};
|
|
339
|
+
};
|
|
340
|
+
}>)[];
|
|
341
|
+
} & {
|
|
342
|
+
use: any[];
|
|
343
|
+
}, void>;
|
|
344
|
+
//#endregion
|
|
219
345
|
//#region src/routes/sso.d.ts
|
|
220
346
|
declare const spMetadata: () => better_call0.StrictEndpoint<"/sso/saml2/sp/metadata", {
|
|
221
347
|
method: "GET";
|
|
@@ -241,7 +367,7 @@ declare const spMetadata: () => better_call0.StrictEndpoint<"/sso/saml2/sp/metad
|
|
|
241
367
|
} & {
|
|
242
368
|
use: any[];
|
|
243
369
|
}, Response>;
|
|
244
|
-
declare const registerSSOProvider: (options
|
|
370
|
+
declare const registerSSOProvider: <O extends SSOOptions>(options: O) => better_call0.StrictEndpoint<"/sso/register", {
|
|
245
371
|
method: "POST";
|
|
246
372
|
body: z.ZodObject<{
|
|
247
373
|
providerId: z.ZodString;
|
|
@@ -364,6 +490,14 @@ declare const registerSSOProvider: (options?: SSOOptions) => better_call0.Strict
|
|
|
364
490
|
type: string;
|
|
365
491
|
description: string;
|
|
366
492
|
};
|
|
493
|
+
domainVerified: {
|
|
494
|
+
type: string;
|
|
495
|
+
description: string;
|
|
496
|
+
};
|
|
497
|
+
domainVerificationToken: {
|
|
498
|
+
type: string;
|
|
499
|
+
description: string;
|
|
500
|
+
};
|
|
367
501
|
oidcConfig: {
|
|
368
502
|
type: string;
|
|
369
503
|
properties: {
|
|
@@ -497,16 +631,12 @@ declare const registerSSOProvider: (options?: SSOOptions) => better_call0.Strict
|
|
|
497
631
|
};
|
|
498
632
|
} & {
|
|
499
633
|
use: any[];
|
|
500
|
-
}, {
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
providerId: string;
|
|
507
|
-
organizationId?: string | undefined;
|
|
508
|
-
domain: string;
|
|
509
|
-
}>;
|
|
634
|
+
}, O["domainVerification"] extends {
|
|
635
|
+
enabled: true;
|
|
636
|
+
} ? {
|
|
637
|
+
domainVerified: boolean;
|
|
638
|
+
domainVerificationToken: string;
|
|
639
|
+
} & SSOProvider<O> : SSOProvider<O>>;
|
|
510
640
|
declare const signInSSO: (options?: SSOOptions) => better_call0.StrictEndpoint<"/sign-in/sso", {
|
|
511
641
|
method: "POST";
|
|
512
642
|
body: z.ZodObject<{
|
|
@@ -611,6 +741,7 @@ declare const callbackSSO: (options?: SSOOptions) => better_call0.StrictEndpoint
|
|
|
611
741
|
error: z.ZodOptional<z.ZodString>;
|
|
612
742
|
error_description: z.ZodOptional<z.ZodString>;
|
|
613
743
|
}, z.core.$strip>;
|
|
744
|
+
allowedMediaTypes: string[];
|
|
614
745
|
metadata: {
|
|
615
746
|
isAction: boolean;
|
|
616
747
|
openapi: {
|
|
@@ -682,17 +813,39 @@ declare const acsEndpoint: (options?: SSOOptions) => better_call0.StrictEndpoint
|
|
|
682
813
|
}, never>;
|
|
683
814
|
//#endregion
|
|
684
815
|
//#region src/index.d.ts
|
|
685
|
-
type
|
|
816
|
+
type DomainVerificationEndpoints = {
|
|
817
|
+
requestDomainVerification: ReturnType<typeof requestDomainVerification>;
|
|
818
|
+
verifyDomain: ReturnType<typeof verifyDomain>;
|
|
819
|
+
};
|
|
820
|
+
type SSOEndpoints<O extends SSOOptions> = {
|
|
686
821
|
spMetadata: ReturnType<typeof spMetadata>;
|
|
687
|
-
registerSSOProvider: ReturnType<typeof registerSSOProvider
|
|
822
|
+
registerSSOProvider: ReturnType<typeof registerSSOProvider<O>>;
|
|
688
823
|
signInSSO: ReturnType<typeof signInSSO>;
|
|
689
824
|
callbackSSO: ReturnType<typeof callbackSSO>;
|
|
690
825
|
callbackSSOSAML: ReturnType<typeof callbackSSOSAML>;
|
|
691
826
|
acsEndpoint: ReturnType<typeof acsEndpoint>;
|
|
692
827
|
};
|
|
828
|
+
type SSOPlugin<O extends SSOOptions> = {
|
|
829
|
+
id: "sso";
|
|
830
|
+
endpoints: SSOEndpoints<O> & (O extends {
|
|
831
|
+
domainVerification: {
|
|
832
|
+
enabled: true;
|
|
833
|
+
};
|
|
834
|
+
} ? DomainVerificationEndpoints : {});
|
|
835
|
+
};
|
|
836
|
+
declare function sso<O extends SSOOptions & {
|
|
837
|
+
domainVerification?: {
|
|
838
|
+
enabled: true;
|
|
839
|
+
};
|
|
840
|
+
}>(options?: O | undefined): {
|
|
841
|
+
id: "sso";
|
|
842
|
+
endpoints: SSOEndpoints<O> & DomainVerificationEndpoints;
|
|
843
|
+
schema: any;
|
|
844
|
+
options: O;
|
|
845
|
+
};
|
|
693
846
|
declare function sso<O extends SSOOptions>(options?: O | undefined): {
|
|
694
847
|
id: "sso";
|
|
695
|
-
endpoints: SSOEndpoints
|
|
848
|
+
endpoints: SSOEndpoints<O>;
|
|
696
849
|
};
|
|
697
850
|
//#endregion
|
|
698
|
-
export {
|
|
851
|
+
export { SSOOptions as a, SAMLConfig as i, sso as n, SSOProvider as o, OIDCConfig as r, SSOPlugin as t };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as
|
|
2
|
-
export { OIDCConfig, SAMLConfig, SSOOptions, SSOProvider, sso };
|
|
1
|
+
import { a as SSOOptions, i as SAMLConfig, n as sso, o as SSOProvider, r as OIDCConfig, t as SSOPlugin } from "./index-xXD__4zM.mjs";
|
|
2
|
+
export { OIDCConfig, SAMLConfig, SSOOptions, SSOPlugin, SSOProvider, sso };
|