UNPKG

@rytass/member-base-nestjs-module

Version:

Rytass Member System NestJS Base Module

69 lines (66 loc) 2.86 kB
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 };