send error if user already exist

This commit is contained in:
Guillaume Dorce 2022-08-25 12:13:03 +02:00
parent 431a5efdbb
commit b7966be9ea
3 changed files with 42 additions and 11 deletions

View File

@ -13,7 +13,7 @@ const login = async (req: Request, res: Response) => {
}
const isValid = await comparePassword(userInfo.password, user.password);
if (!isValid) {
return res.status(401).send('Invalid password');
return res.status(401).send({ error: 'Invalid password' });
}
return res.status(200).send(user);
} catch (error) {

View File

@ -1,15 +1,18 @@
import { newUser } from '@/controller/UserController';
import UserModel from '@/models/UserModel';
import { User } from '@/models/UserModel';
import { hashPassword } from '@/controller/AuthController';
import { User } from '@prisma/client';
import { Request, Response } from 'express';
import { User as PrismaUser } from '@prisma/client';
const signup = async (req: Request, res: Response) => {
try {
UserModel.parse(req.body);
req.body.password = await hashPassword(req.body.password);
const user: User = req.body;
const prismaUser = await newUser(user);
const user: User = User.parse({ ...req.body });
const prismaUser: PrismaUser | null = await newUser(user);
if (!prismaUser) {
return res.status(400).send({ error: 'User already exists' });
}
return res.status(200).send(prismaUser);
} catch (error) {
return res.status(500).send(error);

View File

@ -1,4 +1,5 @@
import { PrismaClient, User } from '@prisma/client';
import { PrismaClient } from '@prisma/client';
import { User } from '@/models/UserModel';
const prisma = new PrismaClient();
@ -12,12 +13,39 @@ const getUser = (email: string) => {
return user;
};
const newUser = (user: User) => {
const prismaUser = prisma.user.create({
data: user,
const isUserExist = (email: string) =>
prisma.user
.findUnique({
where: {
email,
},
})
.then((user) => {
if (user) {
return true;
}
return false;
})
.catch((error) => {
throw error;
});
const newUser = async (user: User) => {
const userExist: Boolean = await isUserExist(user.email);
if (userExist) {
return null;
}
const newUser = await prisma.user.create({
data: {
email: user.email,
password: user.password,
firstName: user.firstName,
lastName: user.lastName,
role: 'USER',
},
});
return prismaUser;
return newUser;
};
export { getUser, newUser };