Spaces:
Sleeping
Sleeping
File size: 1,654 Bytes
05c5ed5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | import { z } from "zod";
import { envBooleanSchema } from "./util";
export const SocialAuthenticationProviderSchema = z.enum([
"github",
"google",
"microsoft",
]);
export type SocialAuthenticationProvider = z.infer<
typeof SocialAuthenticationProviderSchema
>;
export const GitHubConfigSchema = z.object({
clientId: z.string().min(1),
clientSecret: z.string().min(1),
disableSignUp: z.boolean().optional(),
});
export const GoogleConfigSchema = z.object({
clientId: z.string().min(1),
clientSecret: z.string().min(1),
disableSignUp: z.boolean().optional(),
prompt: z.literal("select_account").optional(),
});
export const MicrosoftConfigSchema = z.object({
clientId: z.string().min(1),
clientSecret: z.string().min(1),
tenantId: z.string().default("common"),
disableSignUp: z.boolean().optional(),
prompt: z.literal("select_account").optional(),
});
export const SocialAuthenticationConfigSchema = z.object({
github: GitHubConfigSchema.optional(),
google: GoogleConfigSchema.optional(),
microsoft: MicrosoftConfigSchema.optional(),
});
export const AuthConfigSchema = z.object({
emailAndPasswordEnabled: envBooleanSchema.default(true),
signUpEnabled: envBooleanSchema.default(true),
socialAuthenticationProviders: SocialAuthenticationConfigSchema,
});
export type GitHubConfig = z.infer<typeof GitHubConfigSchema>;
export type GoogleConfig = z.infer<typeof GoogleConfigSchema>;
export type MicrosoftConfig = z.infer<typeof MicrosoftConfigSchema>;
export type SocialAuthenticationConfig = z.infer<
typeof SocialAuthenticationConfigSchema
>;
export type AuthConfig = z.infer<typeof AuthConfigSchema>;
|