send error if user already exist
This commit is contained in:
parent
431a5efdbb
commit
b7966be9ea
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
});
|
||||
|
||||
return prismaUser;
|
||||
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 newUser;
|
||||
};
|
||||
|
||||
export { getUser, newUser };
|
||||
|
|
|
|||
Loading…
Reference in New Issue