Untitled
unknown
plain_text
a year ago
1.4 kB
5
Indexable
// LOGIN SIVICO import { compare } from 'bcryptjs'; import { sign } from 'jsonwebtoken'; import Users from '../database/models/Users.model'; const notFilledErrMsg = 'All fields must be filled'; const invalidCredErrMsg = 'Invalid email or password'; const genToken = (username: string) => { const token = sign({ username }, process.env.JWT_SECRET as string, { expiresIn: '4h', }); return token; }; const validateEmail = (email: string) => { const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return emailRegex.test(email); }; const loginSrv = async (email: string, password: string) => { if (!email || !password) { return { status: 400, message: notFilledErrMsg }; } if (!validateEmail(email)) { return { status: 401, message: invalidCredErrMsg }; } const user = await Users.findOne({ where: { email } }); if (!user) { return { status: 401, message: invalidCredErrMsg }; } const passwordMatch = await compare(password, user.password); if (!passwordMatch || password.length < 6) { return { status: 401, message: invalidCredErrMsg }; } const token = genToken(user.username); return { status: 200, token }; }; const getRoleSrv = async (username: string) => { const user = await Users.findOne({ where: { username } }); if (!user) { return null; } return user.role; }; export default { loginSrv, genToken, getRoleSrv };
Editor is loading...
Leave a Comment