fauth-template
Version:
Generate auth templates for your projects
43 lines (35 loc) • 1.04 kB
text/typescript
import { Request, Response } from "express";
import User from "@/models/user.model";
import { IFormData } from "@/types/mongodb";
import { createSession } from "@/session/session";
import { Payload } from "@/session/jwt";
import bcrypt from "bcryptjs";
export async function signinController(req: Request, res: Response) {
const { email, password } = req.body as IFormData;
const findUser = await User.findOne({ email });
if (!findUser) {
res.status(404).json({
success: false,
message: `email does not exist`,
});
return;
}
const passwordMatched = await bcrypt.compare(password, findUser.password);
if (!passwordMatched) {
res.status(400).json({
success: true,
message: "Incorrect password",
});
return;
}
const { id, username } = findUser;
const payload: Payload = {
username,
id,
};
await createSession({ res, payload });
res.status(200).json({
success: true,
message: `Welcone ${username}`,
});
}