UNPKG

@accounts/server

Version:

Fullstack authentication and accounts-management

66 lines (64 loc) 2.74 kB
import * as jwt from 'jsonwebtoken'; import { User, DatabaseInterface, Session } from '@accounts/types'; import { EmailTemplatesType } from './email-templates-type'; import { PrepareMailFunction } from './prepare-mail-function'; import { SendMailType } from './send-mail-type'; import { TokenCreator } from './token-creator'; import { JwtData } from './jwt-data'; export interface AccountsServerOptions<CustomUser extends User = User> { /** * Return ambiguous error messages from login failures to prevent user enumeration. Defaults to true. */ ambiguousErrorMessages?: boolean; db?: DatabaseInterface<CustomUser>; tokenSecret: | string | { publicKey: jwt.Secret; privateKey: jwt.Secret; }; tokenConfigs?: { accessToken?: jwt.SignOptions; refreshToken?: jwt.SignOptions; }; emailTemplates?: Partial<EmailTemplatesType>; userObjectSanitizer?: (user: CustomUser) => CustomUser; impersonationAuthorize?: (user: User, impersonateToUser: User) => Promise<any>; /** * Use this function if you want to cancel the current session to be resumed. * The session parameter will be null if the `useStatelessSession` option is set to true. */ resumeSessionValidator?: (user: User, session: Session) => Promise<void>; siteUrl?: string; prepareMail?: PrepareMailFunction; sendMail?: SendMailType; tokenCreator?: TokenCreator; /** * Creates a new session token each time a user refreshes his access token */ createNewSessionTokenOnRefresh?: boolean; /** * Function to add addition information in jwt payload of accessToken */ createJwtPayload?: (data: JwtData, user: CustomUser) => Promise<Record<string, any>>; /** * If this flag is set to true - user will be automatically logged in after registration. * LoginResult data will be included into registration response. */ enableAutologin?: boolean; /** * Set this false to `false` if you wish to skip internal user sanitazing method, and expose * the original User object as-is. */ useInternalUserObjectSanitizer?: boolean; /** * Should the session mechanism be stateless. By default the token is checked against the database in every * request. This allow you to revoke a session at any time. * Since we are using JWT you can decide to have a stateless session. This means that the token won't be * checked against the database on every request. Using the stateless approach will make the server authorisation * check faster but this means that you won't be able to able to invalidate the access token until it's expired. * Only use this option if you understand the downsides of this approach. * Default 'false'. */ useStatelessSession?: boolean; }