@ztimson/momentum
Version:
Client library for momentum
170 lines • 5.84 kB
TypeScript
import { Api } from './api';
import { PathEvent, PathEventEmitter } from '@ztimson/utils';
import { Meta } from './core';
import { User } from './users';
export type AuthOptions = {
/** Path to login page */
loginUrl?: string;
};
export type UserToken = Meta & {
/** User defined name */
name: string;
/** Assigned to */
owner: string;
/** Token value */
token: string;
/** Expiration */
expire: null | Date;
};
/** Manage user tokens */
export declare class Token extends PathEventEmitter {
private api;
constructor(api: Api);
/**
* Fetch all tokens for user
* @param {string} username User to search
* @return {Promise<UserToken[]>} List of tokens
*/
all(username: string): Promise<UserToken[]>;
/**
* Create a new user token
* @param {{name: string, owner: string, expire: null | Date}} token Token settings
* @return {Promise<UserToken>} Crated token
*/
create(token: {
name: string;
owner: string;
expire: null | Date;
}): Promise<UserToken>;
/**
* Delete an existing user token
* @param {string} id Token ID
* @return {Promise<void>} Resolves once complete
*/
delete(id: string): Promise<void>;
}
/** Mange user 2FA */
export declare class Totp {
private api;
constructor(api: Api);
/**
* Disable 2FA for user
* @param {string} username User to disable 2FA for
* @return {Promise<void>} Resolves once complete
*/
disable(username: string): import('@ztimson/utils').PromiseProgress<void>;
/**
* Enable 2FA for user
* @param {string} username User to reset
* @return {Promise<void>} Resolves once complete
*/
enable: (username: string) => Promise<void>;
/**
* Reset users 2FA
* @param {string} username User to reset
* @return {Promise<void>} Resolves once complete
*/
reset(username: string): Promise<void>;
/**
* Setup 2FA authentication method
* @param {string} username User to setup
* @param {string} method Authenticator type
* @param {string | null} totp null to being process, 2FA code to validate method
* @return {Promise<void>} Resolves once complete
*/
setup(username: string, method?: string, totp?: string): import('@ztimson/utils').PromiseProgress<void>;
}
/** Manage User Authentication */
export declare class Auth extends PathEventEmitter {
private readonly opts;
private readonly api;
/** Manage user tokens */
token: Token;
/** Manage user 2FA */
totp: Totp;
private _permissions;
/** Get current user permissions */
get permissions(): string[];
private set permissions(value);
private _user?;
/** Get current user, undefined if not yet initialized */
get user(): User | null | undefined;
/** Update user info without changing the session */
set user(user: User | null | undefined);
constructor(api: Api | string, opts?: AuthOptions);
filter: (...events: (string | PathEvent)[]) => PathEvent[];
has: (...events: (string | PathEvent)[]) => boolean;
hasAll: (...events: (string | PathEvent)[]) => boolean;
hasFatal: (...events: (string | PathEvent)[]) => void;
hasAllFatal: (...events: (string | PathEvent)[]) => void;
/**
* Check if origin is recognized & whitelisted
* @param {string} host Origin to check
* @return {Promise<void>} Resolves in known, 401 code otherwise
*/
knownHost(host?: string): Promise<void>;
/**
* Login a user & return the account
* @param {string} username username
* @param {string} password user's password
* @param {{totp: string, expire: null | number | Date}} opts 2FA code and expiry options (null to never expire)
* @return {Promise<User | null>} User account on success
*/
login(username: string, password: string, opts?: {
totp?: string;
expire?: number | Date | null;
}): Promise<User | null>;
/**
* Login via Momentum single sign on
* @param {string} host Host origin attempting to login
* @return {Promise<string>} Token on success
*/
loginRedirect(host?: string): Promise<string>;
/**
* Logout current user
*/
logout(): void;
/**
* Create a new user with login
* @param {Partial<User> & {password: string}} user User data with password
* @return {Promise<User>} Registered user data
*/
register(user: Partial<User> & {
username: string;
password: string;
}): Promise<User>;
/**
* Finish user account reset
* @param password New password
* @param token Reset token
* @return {Promise<void>} Resolves once complete
*/
reset(password: string, token?: string): Promise<void>;
/**
* Initiate user account reset
* @param email New password
* @return {Promise<void>} Resolves once complete
*/
reset(email: string): Promise<void>;
/**
* Get session information
* @param {string} token Token to fetch session info for
* @param {boolean} set Set as current active session
* @return {Promise<{token: string, user: User, permissions: string[], custom: any} | null>} Session information
*/
session(token?: string, set?: boolean): Promise<{
token: string;
user: User;
permissions: string[];
custom: any;
} | null>;
/**
* Update password for user
* @param {string} username User to reset
* @param {string} password New user password
* @param {string} oldPassword Old password for validation
* @return {Promise<void>} Resolves once complete
*/
updatePassword(username: string, password: string, oldPassword?: string): Promise<void>;
}
//# sourceMappingURL=auth.d.ts.map