UNPKG

@inv2/common

Version:

A common module for v2

54 lines (53 loc) 3 kB
"use strict"; 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;