@lomray/microservice-users
Version:
Users microservice based on NodeJS & inverted json.
104 lines (100 loc) • 4.28 kB
JavaScript
;
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;