@inv2/common
Version:
A common module for v2
54 lines (53 loc) • 3 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.OtpService = void 0;
const helper_1 = require("../_utils/helper");
const email_builder_service_1 = require("./email-builder.service");
class OtpService {
constructor(client) {
this.client = client;
}
generateOTP(_a) {
return __awaiter(this, arguments, void 0, function* ({ user, sender, subject, message }) {
// const tokenExists = await this.client.get(email);
let otp = helper_1.Helper.generateOTCode(6, false);
yield this.client.setEx(user.email, 600, JSON.stringify({ otp, createdAt: new Date }));
console.log(`OTP ${otp} generated for user`, user);
yield new email_builder_service_1.EmailBuilderService({ recipient: user.email, sender: sender !== null && sender !== void 0 ? sender : 'info@investnaija.com', subject: (subject !== null && subject !== void 0 ? subject : 'One Time Password') + ` <${otp}>` })
.setCustomerDetails(user)
.setEmailType({ type: 'resend_otp', meta: { user, otp, message } })
.execute();
return { success: true, message: 'OTP generated successfully' };
});
}
verifyOTP(params) {
return __awaiter(this, void 0, void 0, function* () {
const tokenExists = yield this.client.get(params.user.email);
if (!tokenExists)
return { success: false, status: 403, message: `Invalid or expired token`, data: params };
const token = JSON.parse(tokenExists);
const checkToken = yield helper_1.Helper.checkToken({ duration: process.env.TOKEN_TIME, tokenTime: token.createdAt });
if (!checkToken) {
this.deleteOTP(params);
return { success: false, status: 403, message: `Invalid or expired token`, data: params };
}
return { success: true, status: 200, message: 'OTP verified successfully', data: params };
});
}
deleteOTP(params) {
return __awaiter(this, void 0, void 0, function* () {
yield this.client.del(params.user.email);
return { success: true, status: 200, message: 'OTP deleted successfully', data: params };
});
}
}
exports.OtpService = OtpService;