UNPKG

@lomray/microservice-users

Version:

Users microservice based on NodeJS & inverted json.

104 lines (100 loc) 4.28 kB
'use strict'; var tslib = require('tslib'); var microserviceHelpers = require('@lomray/microservice-helpers'); var classValidator = require('class-validator'); var classValidatorJsonschema = require('class-validator-jsonschema'); var typeorm = require('typeorm'); var confirmCode = require('../../entities/confirm-code.js'); var user = require('../../repositories/user.js'); var changePassword$1 = require('../../services/change-password.js'); var factory = require('../../services/confirm/factory.js'); class ChangePasswordInput { } tslib.__decorate([ classValidator.IsString(), classValidator.IsNotEmpty(), classValidator.ValidateIf(({ login }) => !login), tslib.__metadata("design:type", String) ], ChangePasswordInput.prototype, "userId", void 0); tslib.__decorate([ classValidator.IsString(), classValidator.IsNotEmpty(), classValidator.ValidateIf(({ userId }) => !userId), tslib.__metadata("design:type", String) ], ChangePasswordInput.prototype, "login", void 0); tslib.__decorate([ classValidator.IsString(), classValidator.IsNotEmpty(), tslib.__metadata("design:type", String) ], ChangePasswordInput.prototype, "newPassword", void 0); tslib.__decorate([ classValidatorJsonschema.JSONSchema({ description: 'Skip if change password has allowed by admin', }), classValidator.IsString(), classValidator.IsNotEmpty(), classValidator.ValidateIf(({ confirmCode, oldPassword, allowByAdmin }) => !allowByAdmin && (!confirmCode || oldPassword)), tslib.__metadata("design:type", String) ], ChangePasswordInput.prototype, "oldPassword", void 0); tslib.__decorate([ classValidator.IsEnum(factory.ConfirmBy), classValidator.ValidateIf(({ confirmCode }) => confirmCode), tslib.__metadata("design:type", String) ], ChangePasswordInput.prototype, "confirmBy", void 0); tslib.__decorate([ classValidatorJsonschema.JSONSchema({ description: 'Skip if change password has allowed by admin', }), microserviceHelpers.IsType(['string', 'number']), classValidator.IsNotEmpty(), classValidator.ValidateIf(({ confirmCode, oldPassword, allowByAdmin }) => !allowByAdmin && (!oldPassword || confirmCode)), tslib.__metadata("design:type", Object) ], ChangePasswordInput.prototype, "confirmCode", void 0); tslib.__decorate([ classValidator.IsBoolean(), microserviceHelpers.IsUndefinable(), tslib.__metadata("design:type", Boolean) ], ChangePasswordInput.prototype, "allowByAdmin", void 0); tslib.__decorate([ classValidator.IsString(), microserviceHelpers.IsUndefinable(), tslib.__metadata("design:type", String) ], ChangePasswordInput.prototype, "clearTokensType", void 0); tslib.__decorate([ classValidator.IsObject(), microserviceHelpers.IsUndefinable(), tslib.__metadata("design:type", Object) ], ChangePasswordInput.prototype, "context", void 0); class ChangePasswordOutput { } tslib.__decorate([ classValidator.IsBoolean(), tslib.__metadata("design:type", Boolean) ], ChangePasswordOutput.prototype, "isChanged", void 0); /** * Change user password */ const changePassword = microserviceHelpers.Endpoint.custom(() => ({ input: ChangePasswordInput, output: ChangePasswordOutput, description: 'Change user password', }), ({ userId, login, newPassword, oldPassword, confirmBy, confirmCode: confirmCode$1, allowByAdmin, context, clearTokensType, payload, }) => tslib.__awaiter(void 0, void 0, void 0, function* () { var _a; const service = changePassword$1.init({ userId, confirmBy, login, isConfirmed: (user) => (confirmBy && factory.Factory.create(confirmBy, typeorm.getRepository(confirmCode), context).verifyCode(user[confirmBy], confirmCode$1)) || allowByAdmin, repository: typeorm.getCustomRepository(user), clearTokensType, currentToken: (_a = payload === null || payload === void 0 ? void 0 : payload.authentication) === null || _a === void 0 ? void 0 : _a.tokenId, }); return { isChanged: Boolean(yield service.change(newPassword, oldPassword)), }; })); exports.ChangePasswordInput = ChangePasswordInput; exports.ChangePasswordOutput = ChangePasswordOutput; exports.changePassword = changePassword;