login-auth-services
Version:
Authentication services for Google, GitHub, Microsoft, okta and multi-factor authentication using OTP.
44 lines (43 loc) • 1.65 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateToken = exports.validatePassword = exports.hashPassword = void 0;
const bcrypt_1 = __importDefault(require("bcrypt"));
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
const dotenv_1 = __importDefault(require("dotenv"));
dotenv_1.default.config();
async function hashPassword(password, saltRounds = 10) {
try {
const salt = await bcrypt_1.default.genSalt(saltRounds);
const hashedPassword = await bcrypt_1.default.hash(password, salt);
return hashedPassword;
}
catch (error) {
throw new Error("Error hashing password");
}
}
exports.hashPassword = hashPassword;
async function validatePassword(password, hashedPassword) {
try {
const isValid = await bcrypt_1.default.compare(password, hashedPassword);
return isValid;
}
catch (error) {
throw new Error("Error validating password");
}
}
exports.validatePassword = validatePassword;
const SECRET_KEY = process.env.SECRET_KEY || "default_secret_key"; // Default fallback if SECRET_KEY is not set
const generateToken = (email, expiresIn = "1h") => {
try {
const payload = { email };
const token = jsonwebtoken_1.default.sign(payload, SECRET_KEY, { expiresIn });
return token;
}
catch (error) {
throw new Error("Error generating token");
}
};
exports.generateToken = generateToken;