umpack-express
Version:
user management pack for express framework app
96 lines (85 loc) • 3.34 kB
TypeScript
// Type definitions for umpack-express ^1.11
// Project: https://github.com/liz4rdcom/umpack-express
// Definitions by: Irakli Jishkariani <https://github.com/irakli2692>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.2
import { IRouter, RequestHandler, Request } from "express-serve-static-core";
declare function umpack(options: umpack.UmpackExpressOptions): umpack.UmpackExpress;
declare namespace umpack {
interface Logger {
error: (message: any, ...restParams: any[]) => any;
warn: (message: any, ...restParams: any[]) => any;
info: (message: any, ...restParams: any[]) => any;
debug: (message: any, ...restParams: any[]) => any;
trace: (message: any, ...restParams: any[]) => any;
}
interface SmtpOptions {
host: string;
port: number;
user: string;
password: string;
timeout?: number;
ssl?: boolean;
}
interface PasswordResetEmailOptions {
smtpData: SmtpOptions;
senderEmail: string;
resetKeyExpiresIn?: string;
passwordMessageFunction?: (key: string) => string; // key is password reset key
passwordWrongEmailInstruction?: (clientIp: string) => string;
}
interface PasswordResetPhoneOptions {
resetKeyExpiresIn: string;
sendResetKey: (phone: string, resetKey: string) => void | Promise<any>;
}
interface UmpackExpressOptions {
mongodbConnectionString: string;
accessTokenSecret: string;
passwordHashSecret: string;
accessTokenExpiresIn?: string;
cookieAccessTokenName?: string;
passwordResetData?: PasswordResetEmailOptions;
passwordResetPhoneData?: PasswordResetPhoneOptions;
deviceControl?: boolean;
userNameCaseSensitive?: boolean;
logger?: Logger;
}
interface SignupRequest {
userName: string;
password: string;
firstName?: string;
lastName?: string;
email: string;
phone?: string;
address?: string;
additionalInfo?: string;
}
interface UmpackExpress {
router: IRouter;
isAuthorized: RequestHandler;
updateUserMetaData: (userName: string, metaDataObject: any) => Promise<any>;
getUserMetaDataByUserName: (userName: string) => Promise<any>;
getUserMetaDataByRequest: (req: Request) => Promise<any>;
filterUsersByMetaData: (key: string, value: any) => Promise<any[]>;
getFullName: (userName: string) => Promise<string>;
getUserRolesByUserName: (userName: string) => Promise<any>;
getUserRolesFromRequest: (req: Request) => Promise<any>;
getFullUserObject: (userName: string) => Promise<any>;
getFullUserObjectFromRequest: (req: Request) => Promise<any>;
filterUsersByRole: (role: string) => Promise<any>;
/**
* if deviceControl is enabled, deviceToken is required.
* returns password
*/
init: (umBaseUrl: string, passwordText?: string, deviceToken?: string) => Promise<string>;
/**
* init user with full api access
* if deviceControl is enabled, deviceToken is required.
* returns password
*/
initWithFullAccess: (umBaseUrl: string, deviceToken?: string) => Promise<string>;
getUserNameFromRequest: (req: Request) => Promise<string>;
signup: (userData: SignupRequest) => Promise<any>;
}
}
export = umpack;