Skip to main content

UsersEngine

Perseid engine extended with auth-related methods.

class UsersEngine<
/** Data model types definitions. */
DataModel extends DefaultDataModel = DefaultDataModel,

/** Model class types definitions. */
Model extends BaseModel<DataModel> = BaseModel<DataModel>,

/** Database client types definition. */
DatabaseClient extends BaseDatabaseClient<DataModel> = BaseDatabaseClient<DataModel>,
> extends Engine<DataModel, Model, DatabaseClient>

Properties​

  • REFRESH_TOKEN_DURATION: Default duration before a refresh token expires. (30 days)
  • emailClient: Email client to use.
  • cacheClient: Cache client to use.
  • settings: Auth engine settings.

constructor​

constructor(model: Model, logger: Logger, databaseClient: DatabaseClient, emailClient: EmailClient, cacheClient: CacheClient, settings: UsersEngineSettings);

Description​

Class constructor.

Parameters​

  • model: Data model to use.
  • logger: Logging system to use.
  • databaseClient: Database client to use.
  • emailClient: Email client to use.
  • cacheClient: Cache client to use.
  • settings: Engine settings.

generateCredentials​

protected generateCredentials(userId: Id, deviceId?: string): Credentials;

Description​

Generates new credentials (refresh/access tokens) for userId and deviceId.

Parameters​

  • userId: Id of the user to generate credentials for.
  • deviceId: Id of the device to generate credentials for. If not set, a new id will be created.

Returns​

Generated credentials.


checkAndUpdatePayload​

protected checkAndUpdatePayload<Collection extends keyof DataModel>(collection: Collection, payload: UpdatePayload<DataModel[Collection]>, context: CommandContext & { mode: 'CREATE' | 'UPDATE' }): Promise<Partial<DataModel[Collection]>>;

Description​

Performs specific checks payload to make sure it is valid, and updates it if necessary.

Parameters​

  • collection: Payload collection.
  • payload: Payload to validate and update.
  • context: Command context.

Returns​

Validated and updated payload.


create​

public create<Collection extends keyof DataModel>(collection: Collection, payload: Payload<DataModel[Collection]>, options: CommandOptions, context: CommandContext): Promise<DataModel[Collection]>;

Description​

Creates a new resource into collection.

Parameters​

  • collection: Name of the collection to create resource into.
  • payload: New resource payload.
  • options: Command options.
  • context: Command context.

Returns​

Newly created resource.


verifyToken​

public verifyToken(accessToken: string, ignoreExpiration: boolean, context: CommandContext): Promise<Id>;

Description​

Verifies accessToken validity.

Parameters​

  • accessToken: Access token to verify.
  • ignoreExpiration: Whether to ignore access token expiration.
  • context: Command context.

Returns​

Id of the user related to the access token.

Throws​

  • If device id is not valid.

signUp​

public signUp(email: DataModel['users']['email'], password: DataModel['users']['password'], passwordConfirmation: DataModel['users']['password'], context: CommandContext): Promise<Credentials>;

Description​

Signs a new user up in the system.

Parameters​

  • email: User email.
  • password: User password.
  • passwordConfirmation: User password confirmation.
  • context: Command context.

Returns​

New credentials.

Throws​

  • If password and confirmation mismatch.

signIn​

public signIn(email: string, password: string, context: CommandContext): Promise<Credentials>;

Description​

Signs an existing user in.

Parameters​

  • email: User email.
  • password: User password.
  • context: Command context.

Returns​

New credentials.

Throws​

  • If user with email email does not exist.
  • If password does not match user password.

requestEmailVerification​

public requestEmailVerification(context: CommandContext): Promise<void>;

Description​

Sends a new verification email to connected user.

Parameters​

  • context: Command context.

Throws​

  • If user email is already verified.

verifyEmail​

public verifyEmail(verificationToken: string, context: CommandContext): Promise<void>;

Description​

Verifies email of the connected user.

Parameters​

  • token: Verification token that was sent in the verification email.
  • context: Command context.

Throws​

  • If verification token is not valid.

requestPasswordReset​

public requestPasswordReset(email: string): Promise<void>;

Description​

Sends a new password reset email to user with email email.

Parameters​

  • email: Email of the user to whom to send password reset email.

resetPassword​

public resetPassword(password: DataModel['users']['password'], passwordConfirmation: DataModel['users']['password'], resetToken: string): Promise<void>;

Description​

Resets password for user with email email.

Parameters​

  • password: New password.
  • passwordConfirmation: New password confirmation.
  • resetToken: Reset token sent in the password reset email.

Throws​

  • If password and confirmation mismatch.
  • If reset token is not valid.

refreshToken​

public refreshToken(refreshToken: string, context: CommandContext): Promise<Credentials>;

Description​

Refreshes access token for connected user.

Parameters​

  • refreshToken: Refresh token to use to refresh access token.
  • context: Command context.

Returns​

New credentials.

Throws​

  • If refresh token is invalid.

signOut​

public signOut(context: CommandContext): Promise<void>;

Description​

Signs connected user out.

Parameters​

  • context: Command context.

reset​

public reset(rootEmail: string, rootPassword: string): Promise<void>;

Description​

Resets the whole system, including database, and re-creates root role and user.

Parameters​

  • rootEmail: Email to use for root user.
  • rootPassword: Password to use for root user.