Files
payload/src/auth/types.ts
2020-12-20 15:09:12 -05:00

92 lines
2.3 KiB
TypeScript

import { DeepRequired } from 'ts-essentials';
import { PayloadRequest } from '../express/types/payloadRequest';
export type Permission = {
permission: boolean
where?: Record<string, unknown>
}
export type FieldPermissions = {
create: {
permission: boolean
}
read: {
permission: boolean
}
update: {
permission: boolean
}
fields?: FieldPermissions
}
export type CollectionPermission = {
create: Permission
read: Permission
update: Permission
delete: Permission
fields: {
[field: string]: FieldPermissions
}
}
export type GlobalPermission = {
read: Permission
update: Permission
fields: {
[field: string]: FieldPermissions
}
}
export type Permissions = {
canAccessAdmin: boolean
license?: string
collections: CollectionPermission[]
globals?: GlobalPermission[]
}
export type User = {
id: string
email: string
[key: string]: unknown
}
type GenerateVerifyEmailHTML = (args: { req: PayloadRequest, token: string, user: any}) => Promise<string> | string
type GenerateVerifyEmailSubject = (args: { req: PayloadRequest, token: string, user: any}) => Promise<string> | string
type GenerateForgotPasswordEmailHTML = (args?: { req?: PayloadRequest, token?: string, user?: string}) => Promise<string> | string
type GenerateForgotPasswordEmailSubject = (args?: { req?: PayloadRequest, token?: string, user?: any }) => Promise<string> | string
export interface IncomingAuthType {
tokenExpiration?: number;
verify?:
| boolean
| {
generateEmailHTML?: GenerateVerifyEmailHTML;
generateEmailSubject?: GenerateVerifyEmailSubject;
};
maxLoginAttempts?: number;
lockTime?: number;
useAPIKey?: boolean;
depth?: number
cookies?: {
secure?: boolean;
sameSite?: boolean | 'none' | 'strict' | 'lax';
domain?: string;
}
forgotPassword?: {
generateEmailHTML?: GenerateForgotPasswordEmailHTML,
generateEmailSubject?: GenerateForgotPasswordEmailSubject,
}
}
export interface Auth extends Omit<DeepRequired<IncomingAuthType>, 'verify' | 'forgotPassword'> {
verify?: {
generateEmailHTML?: GenerateVerifyEmailHTML
generateEmailSubject?: GenerateVerifyEmailSubject
} | boolean
forgotPassword?: {
generateEmailHTML?: GenerateForgotPasswordEmailHTML
generateEmailSubject?: GenerateForgotPasswordEmailSubject
}
}