26 lines
885 B
TypeScript
26 lines
885 B
TypeScript
import { getUser } from '@/controller/UserController';
|
|
import UserLoginModel from '@/models/UserLoginModel';
|
|
import { comparePassword, genToken } from '@/controller/AuthController';
|
|
import { Request, Response } from 'express';
|
|
import { User } from '@prisma/client';
|
|
|
|
const login = async (req: Request, res: Response) => {
|
|
try {
|
|
const userInfo = UserLoginModel.parse(req.body);
|
|
const user: User | null = await getUser(userInfo.email);
|
|
if (user === null) {
|
|
return res.status(401).send('User not found');
|
|
}
|
|
const isValid = await comparePassword(userInfo.password, user.password);
|
|
if (!isValid) {
|
|
return res.status(401).send({ error: 'Invalid password' });
|
|
}
|
|
const token = genToken(user.id);
|
|
return res.status(200).send({ token, userId: user.id });
|
|
} catch (error) {
|
|
return res.status(500).send(error);
|
|
}
|
|
};
|
|
|
|
export default login;
|