UNPKG

payload-auth-plugin

Version:
115 lines (112 loc) 3.1 kB
import { AuthorizationServer } from 'oauth4webapi'; declare enum ErrorKind { NotFound = "NotFound", InternalServer = "InternalServer", BadRequest = "BadRequest", NotAuthorized = "NotAuthorized", NotAuthenticated = "NotAuthenticated", Conflict = "Conflict" } declare enum SuccessKind { Created = "Created", Updated = "Updated", Retrieved = "Retrieved", Deleted = "Deleted" } interface AuthPluginOutput { message: string; kind: ErrorKind | SuccessKind; data: unknown; isSuccess: boolean; isError: boolean; } /** * Generic OAuth provider callback output * * @interface OAuthProviderOutput * @internal */ interface OAuthProviderOutput { /** * OAuth Provider ID. Usually the slugified provider name * * @type {string} */ id: string; /** * OAuth provider name. For example Google, Apple * * @type {string} */ name: string; /** * Scope of account attributes to request from the provider * * @type {string} */ scope: string; /** * Email Domain to create custom email addresses * @type {string} */ emailDomain?: string | undefined; /** * Profile callback that returns account information requried to link with users * * @type {( * profile: Record<string, string | number | boolean | object>, * ) => AccountInfo} */ profile: (profile: Record<string, string | number | boolean | object>) => AccountInfo; } interface OAuthBaseProviderConfig { client_id: string; client_secret?: string; client_auth_type?: "client_secret_basic" | "client_secret_post"; params?: Record<string, string>; /** * Override default scope of the provider */ overrideScope?: string | undefined; } interface OIDCProviderConfig extends OAuthProviderOutput, OAuthBaseProviderConfig { issuer: string; algorithm: "oidc"; kind: "oauth"; skip_email_verification?: boolean | undefined; } interface OAuth2ProviderConfig extends OAuthProviderOutput, OAuthBaseProviderConfig { authorization_server: AuthorizationServer; algorithm: "oauth2"; kind: "oauth"; } type OAuthProviderConfig = OIDCProviderConfig | OAuth2ProviderConfig; interface AccountInfo { sub: string; name: string; picture: string; email: string; passKey?: { credentialId: string; publicKey?: Uint8Array; counter: number; transports?: string[]; deviceType: string; backedUp: boolean; }; access_token?: string; refresh_token?: string; expires_in?: number; } type PasswordProviderConfig = { id: string; kind: "password"; emailTemplates: { forgotPassword: any; }; }; type PasskeyProviderConfig = { id: string; kind: "passkey"; }; export { type AuthPluginOutput as A, ErrorKind as E, type OAuthProviderConfig as O, type PasskeyProviderConfig as P, SuccessKind as S, type PasswordProviderConfig as a, type OAuthBaseProviderConfig as b, type OAuth2ProviderConfig as c, type OIDCProviderConfig as d };