UserService

UserService

Contains methods relating to User entities.

Signature

class UserService {
  constructor(connection: TransactionalConnection, configService: ConfigService, roleService: RoleService, passwordCipher: PasswordCipher, verificationTokenGenerator: VerificationTokenGenerator, moduleRef: ModuleRef)
  async getUserById(ctx: RequestContext, userId: ID) => Promise<User | undefined>;
  async getUserByEmailAddress(ctx: RequestContext, emailAddress: string, userType?: 'administrator' | 'customer') => Promise<User | undefined>;
  async createCustomerUser(ctx: RequestContext, identifier: string, password?: string) => Promise<User | PasswordValidationError>;
  async addNativeAuthenticationMethod(ctx: RequestContext, user: User, identifier: string, password?: string) => Promise<User | PasswordValidationError>;
  async createAdminUser(ctx: RequestContext, identifier: string, password: string) => Promise<User>;
  async softDelete(ctx: RequestContext, userId: ID) => ;
  async setVerificationToken(ctx: RequestContext, user: User) => Promise<User>;
  async verifyUserByToken(ctx: RequestContext, verificationToken: string, password?: string) => Promise<ErrorResultUnion<VerifyCustomerAccountResult, User>>;
  async setPasswordResetToken(ctx: RequestContext, emailAddress: string) => Promise<User | undefined>;
  async resetPasswordByToken(ctx: RequestContext, passwordResetToken: string, password: string) => Promise<
        User | PasswordResetTokenExpiredError | PasswordResetTokenInvalidError | PasswordValidationError
    >;
  async changeUserAndNativeIdentifier(ctx: RequestContext, userId: ID, newIdentifier: string) => ;
  async setIdentifierChangeToken(ctx: RequestContext, user: User) => Promise<User>;
  async changeIdentifierByToken(ctx: RequestContext, token: string) => Promise<
        | { user: User; oldIdentifier: string }
        | IdentifierChangeTokenInvalidError
        | IdentifierChangeTokenExpiredError
    >;
  async updatePassword(ctx: RequestContext, userId: ID, currentPassword: string, newPassword: string) => Promise<boolean | InvalidCredentialsError | PasswordValidationError>;
}

Members

constructor

method
type:
(connection: TransactionalConnection, configService: ConfigService, roleService: RoleService, passwordCipher: PasswordCipher, verificationTokenGenerator: VerificationTokenGenerator, moduleRef: ModuleRef) => UserService

getUserById

method
type:
(ctx: RequestContext, userId: ID) => Promise<User | undefined>

getUserByEmailAddress

method
type:
(ctx: RequestContext, emailAddress: string, userType?: 'administrator' | 'customer') => Promise<User | undefined>

createCustomerUser

method
type:
(ctx: RequestContext, identifier: string, password?: string) => Promise<User | PasswordValidationError>
Creates a new User with the special customer Role and using the NativeAuthenticationStrategy.

addNativeAuthenticationMethod

method
type:
(ctx: RequestContext, user: User, identifier: string, password?: string) => Promise<User | PasswordValidationError>
Adds a new NativeAuthenticationMethod to the User. If the AuthOptions requireVerification is set to true (as is the default), the User will be marked as unverified until the email verification flow is completed.

createAdminUser

method
type:
(ctx: RequestContext, identifier: string, password: string) => Promise<User>
Creates a new verified User using the NativeAuthenticationStrategy.

softDelete

method
type:
(ctx: RequestContext, userId: ID) =>

setVerificationToken

method
type:
(ctx: RequestContext, user: User) => Promise<User>
Sets the NativeAuthenticationMethod verificationToken as part of the User email verification flow.

verifyUserByToken

method
type:
(ctx: RequestContext, verificationToken: string, password?: string) => Promise<ErrorResultUnion<VerifyCustomerAccountResult, User>>

Verifies a verificationToken by looking for a User which has previously had it set using the setVerificationToken() method, and checks that the token is valid and has not expired.

If valid, the User will be set to verified: true.

setPasswordResetToken

method
type:
(ctx: RequestContext, emailAddress: string) => Promise<User | undefined>
Sets the NativeAuthenticationMethod passwordResetToken as part of the User password reset flow.

resetPasswordByToken

method
type:
(ctx: RequestContext, passwordResetToken: string, password: string) => Promise< User | PasswordResetTokenExpiredError | PasswordResetTokenInvalidError | PasswordValidationError >

Verifies a passwordResetToken by looking for a User which has previously had it set using the setPasswordResetToken() method, and checks that the token is valid and has not expired.

If valid, the User’s credentials will be updated with the new password.

changeUserAndNativeIdentifier

method
type:
(ctx: RequestContext, userId: ID, newIdentifier: string) =>
Changes the User identifier without an email verification step, so this should be only used when an Administrator is setting a new email address.

setIdentifierChangeToken

method
type:
(ctx: RequestContext, user: User) => Promise<User>
Sets the NativeAuthenticationMethod identifierChangeToken as part of the User email address change flow.

changeIdentifierByToken

method
type:
(ctx: RequestContext, token: string) => Promise< | { user: User; oldIdentifier: string } | IdentifierChangeTokenInvalidError | IdentifierChangeTokenExpiredError >
Changes the User identifier as part of the storefront flow used by Customers to set a new email address, with the token previously set using the setIdentifierChangeToken() method.

updatePassword

method
type:
(ctx: RequestContext, userId: ID, currentPassword: string, newPassword: string) => Promise<boolean | InvalidCredentialsError | PasswordValidationError>
Updates the password for a User with the NativeAuthenticationMethod.