Added signin route in backend

This commit is contained in:
Manik Maity
2024-11-08 12:51:14 +05:30
parent edfce3edaa
commit 582daa2c3b
9 changed files with 256 additions and 28 deletions

View File

@@ -1,6 +1,7 @@
import { SALT } from "../config/veriables.js";
import { createUser } from "../repositories/user.repo.js";
import { JWT_PRIVATE, SALT } from "../config/veriables.js";
import { createUser, findUserByEmail } from "../repositories/user.repo.js";
import bcrypt from "bcrypt";
import jwt from "jsonwebtoken";
export async function signupService(username, email, password) {
try {
@@ -24,3 +25,35 @@ export async function signupService(username, email, password) {
}
}
}
export async function signinService(email, password) {
try{
if (email.trim() == "" || password.trim() == "") {
throw {
statusCode: 400,
message: "All fields are required",
};
}
const user = await findUserByEmail(email);
if (!user){
throw {
statusCode : 404,
message : "User not found."
}
}
if (!bcrypt.compareSync(password, user?.password)){
throw {
statusCode : 401,
message : "Password isn't correct."
}
}
const token = jwt.sign({id : user._id}, JWT_PRIVATE);
const {password:pass, ...userData} = user._doc;
return {token, userData};
}
catch(err){
throw err;
}
}