universal_authentication
Version:
Seamless and Secure Authentication for Modern Web Applications: Easily integrate OTP-based email verification, Google OAuth, GitHub, Microsoft, and Okta login into your Node.js app. Modular, flexible, and database-agnostic, this package simplifies user au
38 lines (37 loc) • 1.18 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.cleanUpOtp = exports.verifyOtp = exports.storeOtp = exports.generateOtp = exports.otpStore = void 0;
exports.otpStore = new Map();
// Function to generate an OTP and store it in the otpStore
const generateOtp = () => {
return Math.floor(100000 + Math.random() * 900000).toString();
};
exports.generateOtp = generateOtp;
const storeOtp = (email, otp) => {
const expiresAt = Date.now() + 5 * 60 * 1000;
exports.otpStore.set(email, { otp, expiresAt });
};
exports.storeOtp = storeOtp;
//verify otp from memory
const verifyOtp = (email, otp) => {
const record = exports.otpStore.get(email);
if (!record) {
return false;
}
if (record.expiresAt < Date.now()) {
exports.otpStore.delete(email);
return false;
}
return record.otp === otp;
};
exports.verifyOtp = verifyOtp;
//clean up the expired otp
const cleanUpOtp = () => {
const now = Date.now();
exports.otpStore.forEach((record, email) => {
if (record.expiresAt < now) {
exports.otpStore.delete(email);
}
});
};
exports.cleanUpOtp = cleanUpOtp;
;