|
1 | 1 | const express = require("express"); |
2 | 2 | const passport = require("passport"); |
3 | 3 | const User = require("../models/User"); |
| 4 | +const { signupSchema, loginSchema } = require("../validators/authValidator"); |
| 5 | +const { validateRequest } = require("../validators/validationRequest"); |
4 | 6 | const router = express.Router(); |
5 | 7 |
|
6 | 8 | // Signup route |
7 | | -router.post("/signup", async (req, res) => { |
| 9 | +router.post("/signup", validateRequest(signupSchema), async (req, res) => { |
8 | 10 |
|
9 | 11 | const { username, email, password } = req.body; |
10 | 12 |
|
11 | 13 | try { |
12 | | - const existingUser = await User.findOne( {email} ); |
| 14 | + const existingUser = await User.findOne({ |
| 15 | + $or: [{ email }, { username }], |
| 16 | + }); |
13 | 17 |
|
14 | 18 | if (existingUser) |
15 | | - return res.status(400).json( {message: 'User already exists'} ); |
| 19 | + return res.status(400).json({ message: 'User already exists' }); |
16 | 20 |
|
17 | | - const newUser = new User( {username, email, password} ); |
| 21 | + const newUser = new User({ username, email, password }); |
18 | 22 | await newUser.save(); |
19 | | - res.status(201).json( {message: 'User created successfully'} ); |
| 23 | + res.status(201).json({ message: 'User created successfully' }); |
20 | 24 | } catch (err) { |
| 25 | + if (err && err.code === 11000) { |
| 26 | + return res.status(400).json({ message: 'User already exists' }); |
| 27 | + } |
| 28 | + |
21 | 29 | res.status(500).json({ message: 'Error creating user', error: err.message }); |
22 | 30 | } |
23 | 31 | }); |
24 | 32 |
|
25 | 33 | // Login route |
26 | | -router.post("/login", passport.authenticate('local'), (req, res) => { |
| 34 | +router.post("/login", validateRequest(loginSchema), passport.authenticate('local'), (req, res) => { |
27 | 35 | res.status(200).json( { message: 'Login successful', user: req.user } ); |
28 | 36 | }); |
29 | 37 |
|
|
0 commit comments