@nestjs-mod/two-factor
Version:
Two factor module with an error filter, guard, controller, database migrations and rest-sdk for work with module from other nodejs appliaction
63 lines • 3.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TwoFactorError = exports.TWO_FACTOR_ERROR_ENUM_TITLES = exports.TwoFactorErrorEnum = void 0;
const tslib_1 = require("tslib");
const swagger_1 = require("@nestjs/swagger");
const nestjs_translates_1 = require("nestjs-translates");
var TwoFactorErrorEnum;
(function (TwoFactorErrorEnum) {
TwoFactorErrorEnum["COMMON"] = "TWO_FACTOR-000";
TwoFactorErrorEnum["TwoFactorCodeNotSet"] = "TWO-FACTOR-001";
TwoFactorErrorEnum["TwoFactorCodeWrongCode"] = "TWO-FACTOR-002";
TwoFactorErrorEnum["TwoFactorCodeIsOutdated"] = "TWO-FACTOR-003";
TwoFactorErrorEnum["TwoFactorCodePleaseWaitXXSeconds"] = "TWO-FACTOR-004";
TwoFactorErrorEnum["TwoFactorCodeIsUsed"] = "TWO-FACTOR-005";
})(TwoFactorErrorEnum || (exports.TwoFactorErrorEnum = TwoFactorErrorEnum = {}));
exports.TWO_FACTOR_ERROR_ENUM_TITLES = {
[TwoFactorErrorEnum.COMMON]: (0, nestjs_translates_1.getText)('Two factor error'),
[TwoFactorErrorEnum.TwoFactorCodeNotSet]: (0, nestjs_translates_1.getText)('Two factor code not set'),
[TwoFactorErrorEnum.TwoFactorCodeWrongCode]: (0, nestjs_translates_1.getText)('Wrong two factor code'),
[TwoFactorErrorEnum.TwoFactorCodeIsOutdated]: (0, nestjs_translates_1.getText)('Two factor code is outdated'),
[TwoFactorErrorEnum.TwoFactorCodePleaseWaitXXSeconds]: (0, nestjs_translates_1.getText)('Please wait {{{timeout}}} seconds'),
[TwoFactorErrorEnum.TwoFactorCodeIsUsed]: (0, nestjs_translates_1.getText)('Two-factor code has already been used'),
};
class TwoFactorError extends Error {
constructor(message, code, metadata) {
const codeAsMetadata = Boolean(code && !Object.values(TwoFactorErrorEnum).includes(String(code)));
const messageAsCode = Boolean(message && Object.values(TwoFactorErrorEnum).includes(message));
const preparedCode = messageAsCode ? message : code;
const preparedMessage = messageAsCode && preparedCode ? exports.TWO_FACTOR_ERROR_ENUM_TITLES[preparedCode] : message;
metadata = codeAsMetadata ? code : metadata;
code = preparedCode || TwoFactorErrorEnum.COMMON;
message = preparedMessage || exports.TWO_FACTOR_ERROR_ENUM_TITLES[code];
super(message);
this.code = TwoFactorErrorEnum.COMMON;
this.code = code;
this.message = message;
this.metadata = metadata;
}
}
exports.TwoFactorError = TwoFactorError;
tslib_1.__decorate([
(0, swagger_1.ApiProperty)({
type: String,
description: Object.entries(exports.TWO_FACTOR_ERROR_ENUM_TITLES)
.map(([key, value]) => `${value} (${key})`)
.join(', '),
example: exports.TWO_FACTOR_ERROR_ENUM_TITLES[TwoFactorErrorEnum.COMMON],
}),
tslib_1.__metadata("design:type", String)
], TwoFactorError.prototype, "message", void 0);
tslib_1.__decorate([
(0, swagger_1.ApiProperty)({
enum: TwoFactorErrorEnum,
enumName: 'TwoFactorErrorEnum',
example: TwoFactorErrorEnum.COMMON,
}),
tslib_1.__metadata("design:type", Object)
], TwoFactorError.prototype, "code", void 0);
tslib_1.__decorate([
(0, swagger_1.ApiPropertyOptional)({ type: Object }),
tslib_1.__metadata("design:type", Object)
], TwoFactorError.prototype, "metadata", void 0);
//# sourceMappingURL=two-factor.errors.js.map