better-auth
Version:
The most comprehensive authentication framework for TypeScript.
167 lines (166 loc) • 3.17 kB
JavaScript
import * as z from "zod";
//#region src/plugins/oidc-provider/schema.ts
z.object({
/**
* Client ID
*
* size 32
*
* as described on https://www.rfc-editor.org/rfc/rfc6749.html#section-2.2
*/
clientId: z.string(),
/**
* Client Secret
*
* A secret for the client, if required by the authorization server.
* Optional for public clients using PKCE.
*
* size 32
*/
clientSecret: z.string().optional(),
/**
* The client type
*
* as described on https://www.rfc-editor.org/rfc/rfc6749.html#section-2.1
*
* - web - A web application
* - native - A mobile application
* - user-agent-based - A user-agent-based application
* - public - A public client (PKCE-enabled, no client_secret)
*/
type: z.enum([
"web",
"native",
"user-agent-based",
"public"
]),
/**
* The name of the client.
*/
name: z.string(),
/**
* The icon of the client.
*/
icon: z.string().optional(),
/**
* Additional metadata about the client.
*/
metadata: z.string().optional(),
/**
* Whether the client is disabled or not.
*/
disabled: z.boolean().optional().default(false),
redirectUrls: z.string(),
userId: z.string().optional(),
createdAt: z.date(),
updatedAt: z.date()
});
const schema = {
oauthApplication: {
modelName: "oauthApplication",
fields: {
name: { type: "string" },
icon: {
type: "string",
required: false
},
metadata: {
type: "string",
required: false
},
clientId: {
type: "string",
unique: true
},
clientSecret: {
type: "string",
required: false
},
redirectUrls: { type: "string" },
type: { type: "string" },
disabled: {
type: "boolean",
required: false,
defaultValue: false
},
userId: {
type: "string",
required: false,
references: {
model: "user",
field: "id",
onDelete: "cascade"
},
index: true
},
createdAt: { type: "date" },
updatedAt: { type: "date" }
}
},
oauthAccessToken: {
modelName: "oauthAccessToken",
fields: {
accessToken: {
type: "string",
unique: true
},
refreshToken: {
type: "string",
unique: true
},
accessTokenExpiresAt: { type: "date" },
refreshTokenExpiresAt: { type: "date" },
clientId: {
type: "string",
references: {
model: "oauthApplication",
field: "clientId",
onDelete: "cascade"
},
index: true
},
userId: {
type: "string",
required: false,
references: {
model: "user",
field: "id",
onDelete: "cascade"
},
index: true
},
scopes: { type: "string" },
createdAt: { type: "date" },
updatedAt: { type: "date" }
}
},
oauthConsent: {
modelName: "oauthConsent",
fields: {
clientId: {
type: "string",
references: {
model: "oauthApplication",
field: "clientId",
onDelete: "cascade"
},
index: true
},
userId: {
type: "string",
references: {
model: "user",
field: "id",
onDelete: "cascade"
},
index: true
},
scopes: { type: "string" },
createdAt: { type: "date" },
updatedAt: { type: "date" },
consentGiven: { type: "boolean" }
}
}
};
//#endregion
export { schema };