UNPKG

@tayar/auth

Version:

Authentication Kit for React and Next.js

44 lines 1.25 kB
// src/login.ts import { compare } from "bcrypt"; import { sign } from "jsonwebtoken"; async function login(email, password, userType, config) { try { const { models } = config.mongoose; const user = await models.User.findOne({ email }); if (!user) { throw new Error("User not found"); } const validPassword = await compare(password, user.password); if (!validPassword) { throw new Error("User not found"); } const modelType = userType.charAt(0).toUpperCase() + userType.slice(1); if (!models[modelType]) { throw new Error("User not found"); } const additionalData = await models[modelType].findOne({ uid: user._id }); if (!additionalData) { throw new Error("User not found"); } const token = sign({ _id: user._id }, config.accessToken, { expiresIn: "1h" }); const refreshToken = sign({ _id: user._id }, config.refreshToken, { expiresIn: "7d" }); return { success: true, user: { ...user.toObject() }, [userType]: { ...additionalData.toObject() }, token, refreshToken }; } catch (error) { console.error("Login error:", error); throw error; } } export { login }; //# sourceMappingURL=index.mjs.map