///
import Yup = require("yup");
import { Server } from "../server";
import { RouterBuilder, RouteDictHelper } from "../server/router-builder";
import { UserStore, BaseUser } from "./user-stores";
import { RequestHandler } from "express";
declare const emailSchema: Yup.ObjectSchema<{
email: string;
}>;
declare const requestIdSchema: Yup.ObjectSchema<{
requestId: string;
}>;
declare const pwdRequestSchema: Yup.ObjectSchema<{
pwd1: string;
pwd2: string;
requestId: string;
}>;
declare type SchemaType = T extends Yup.ObjectSchema ? Y : never;
export declare class UserAuth {
ctx: Nextpress.Context;
schema_createUser: Yup.ObjectSchema<{
username: string;
email: string;
password: string;
}>;
_bcrypt: any;
readonly bcrypt: typeof import("bcrypt");
sendMail?: ((inp: {
email: string;
subject: string;
html: string;
attachment?: {
value: NodeJS.ReadStream;
options: {
filename: string;
contentType: string;
};
}[] | undefined;
}) => Promise) | undefined;
userStore: UserStore;
options: {
skipNewUserValidation: boolean;
};
constructor(ctx: Nextpress.Context);
init(): Promise;
private checkAndUpdateUserRequestCap;
create(inp: {
username: string;
email: string;
password: string;
}, opts?: {
askForValidation: boolean;
extraFields?: Partial;
}): Promise;
sendNewValidationEmail(userId: number): Promise;
validateHash(hash: string): Promise<{
id: number;
email: string;
}>;
validateLogin(inp: {
username: string;
password: string;
}): Promise;
createResetPwdRequest(inp: SchemaType): Promise;
findResetPwdRequest(inp: SchemaType): Promise;
performResetPwd(inp: SchemaType): Promise;
checkSession: RequestHandler;
throwOnUnauthMw: RequestHandler;
/**
* overrideable (default is 10 reqs / 10 secs per route)
* this counts all the requests this server receives
*/
_getRequestThrottleMws(): {
createUser: RequestHandler;
login: RequestHandler;
requestReset: RequestHandler;
performReset: RequestHandler;
};
/**
* overrideable
* this is a per-user time limit for the operations
*/
_getPerUserWaitTime(): {
login: number;
requestPasswordReset: number;
};
loginRoute({ username, password }: {
username: string;
password: string;
}, setUser: (u: {
id: number;
email: string;
}) => Promise, mapUser?: (u: User) => {
email: string;
id: number;
}): Promise<{
id: number | undefined;
token: string;
}>;
userJsonMethods(helper: typeof RouteDictHelper): {
"/createUser": import("../server/router-builder").RouteOpts;
"/login": import("../server/router-builder").RouteOpts;
"/request-password-reset": import("../server/router-builder").RouteOpts;
"/perform-password-reset": import("../server/router-builder").RouteOpts;
"/logout": import("../server/router-builder").RouteOpts;
};
userRoutes(routerBuilder: RouterBuilder): Promise<{
json: import("express-serve-static-core").Router;
html: import("express-serve-static-core").Router;
}>;
_renderSimpleMessage(server: Server, req: any, res: any, opts: {
title: string;
message: string;
type: string;
code?: string;
}): Promise;
/**
* Overrideable.
* The route to be used for user creation validation email.
*/
_validateRoute(): string;
/**
* Overrideable.
* The route to be used for user reset password email.
*/
_passwordResetFormRoute(): string;
_createValidationLink(hash: string): string;
_createResetPasswordLink(seq: string): string;
_validationMailHTML(i: {
address: string;
validationLink: string;
}): Promise;
_validationMailAttachment(): Promise;
_resetPwdMailHTML(i: {
address: string;
validationLink: string;
}): Promise;
_resetPwdMailSubject(): string;
_validationMailSubject(): string;
}
export {};