@accounts/mongo
Version:
MongoDB adaptor for accounts
46 lines (45 loc) • 2.83 kB
TypeScript
import { type CreateIndexesOptions } from 'mongodb';
import { type ConnectionInformations, type CreateUserServicePassword, type DatabaseInterface, type User, type Session } from '@accounts/types';
import { type AccountsMongoOptions } from './types';
export declare class Mongo implements DatabaseInterface {
private options;
private dbConn;
private collection;
private sessions;
private servicePassword;
private serviceMagicLink;
constructor(dbConn: any, options?: AccountsMongoOptions);
/**
* Setup the mongo indexes needed.
* @param options Options passed to the mongo native `createIndex` method.
*/
setupIndexes(options?: Omit<CreateIndexesOptions, 'unique' | 'sparse'>): Promise<void>;
findUserById(userId: string): Promise<User | null>;
createUser(user: CreateUserServicePassword): Promise<string>;
findUserByEmail(email: string): Promise<User | null>;
findUserByUsername(username: string): Promise<User | null>;
findPasswordHash(userId: string): Promise<string | null>;
findUserByEmailVerificationToken(token: string): Promise<User | null>;
findUserByResetPasswordToken(token: string): Promise<User | null>;
addEmail(userId: string, newEmail: string, verified: boolean): Promise<void>;
removeEmail(userId: string, email: string): Promise<void>;
verifyEmail(userId: string, email: string): Promise<void>;
setUsername(userId: string, newUsername: string): Promise<void>;
setPassword(userId: string, newPassword: string): Promise<void>;
removeAllResetPasswordTokens(userId: string): Promise<void>;
addEmailVerificationToken(userId: string, email: string, token: string): Promise<void>;
addResetPasswordToken(userId: string, email: string, token: string, reason: string): Promise<void>;
addLoginToken(userId: string, email: string, token: string): Promise<void>;
findUserByLoginToken(token: string): Promise<User | null>;
removeAllLoginTokens(userId: string): Promise<void>;
createSession(userId: string, token: string, connection?: ConnectionInformations, extraData?: object): Promise<string>;
findSessionById(sessionId: string): Promise<Session | null>;
findSessionByToken(token: string): Promise<Session | null>;
updateSession(sessionId: string, connection: ConnectionInformations, newToken?: string): Promise<void>;
invalidateSession(sessionId: string): Promise<void>;
invalidateAllSessions(userId: string, excludedSessionIds?: string[]): Promise<void>;
findUserByServiceId(serviceName: string, serviceId: string): Promise<User | null>;
setService(userId: string, serviceName: string, service: object): Promise<void>;
unsetService(userId: string, serviceName: string): Promise<void>;
setUserDeactivated(userId: string, deactivated: boolean): Promise<void>;
}