@rytass/member-base-nestjs-module
Version:
Rytass Member System NestJS Base Module
69 lines (66 loc) • 2.86 kB
JavaScript
import { Injectable, Inject } from '@nestjs/common';
import { hash } from 'argon2';
import { RESOLVED_MEMBER_REPO } from '../typings/member-base-providers.js';
import { PasswordValidatorService } from './password-validator.service.js';
import { MemberPasswordHistoryRepo } from '../models/member-password-history.entity.js';
import { MemberNotFoundError, PasswordDoesNotMeetPolicyError } from '../constants/errors/base.error.js';
function _ts_decorate(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function _ts_param(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
}
class MemberBaseAdminService {
baseMemberRepo;
passwordValidatorService;
memberPasswordHistoryRepo;
constructor(baseMemberRepo, passwordValidatorService, memberPasswordHistoryRepo){
this.baseMemberRepo = baseMemberRepo;
this.passwordValidatorService = passwordValidatorService;
this.memberPasswordHistoryRepo = memberPasswordHistoryRepo;
}
async archiveMember(id) {
const member = await this.baseMemberRepo.findOne({
where: {
id
}
});
if (!member) {
throw new MemberNotFoundError();
}
await this.baseMemberRepo.softRemove(member);
}
async resetMemberPassword(id, newPassword, ignorePasswordPolicy = false) {
if (!ignorePasswordPolicy && !await this.passwordValidatorService.validatePassword(newPassword, id)) {
throw new PasswordDoesNotMeetPolicyError();
}
const member = await this.baseMemberRepo.findOne({
where: {
id
}
});
if (!member) {
throw new MemberNotFoundError();
}
member.password = await hash(newPassword);
member.passwordChangedAt = new Date();
await this.baseMemberRepo.save(member);
await this.memberPasswordHistoryRepo.save(this.memberPasswordHistoryRepo.create({
memberId: member.id,
password: member.password
}));
return member;
}
}
MemberBaseAdminService = _ts_decorate([
Injectable(),
_ts_param(0, Inject(RESOLVED_MEMBER_REPO)),
_ts_param(1, Inject(PasswordValidatorService)),
_ts_param(2, Inject(MemberPasswordHistoryRepo))
], MemberBaseAdminService);
export { MemberBaseAdminService };