Added signin route in backend
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user