diff --git a/backend/controller/authController.js b/backend/controller/authController.js new file mode 100644 index 0000000..d4d3839 --- /dev/null +++ b/backend/controller/authController.js @@ -0,0 +1,78 @@ +import User from '../models/userModel'; +import { getToken } from '../util'; + +export async function updateUser(req, res) { + const userId = req.params.id; + const user = await User.findById(userId); + // eslint-disable-next-line linebreak-style + if (user) { + user.name = req.body.name || user.name; + user.email = req.body.email || user.email; + user.password = req.body.password || user.password; + const updatedUser = await user.save(); + // eslint-disable-next-line linebreak-style + res.send({ + _id: updatedUser.id, + name: updatedUser.name, + email: updatedUser.email, + isAdmin: updatedUser.isAdmin, + // eslint-disable-next-line no-undef + token: getToken(updatedUser), + }); + } else { + res.status(404).send({ message: 'User Not Found' }); + } +} + +export async function signIn(req, res) { + const signinUser = await User.findOne({ + email: req.body.email, + password: req.body.password, + }); + if (signinUser) { + res.send({ + _id: signinUser.id, + name: signinUser.name, + email: signinUser.email, + isAdmin: signinUser.isAdmin, + token: getToken(signinUser), + }); + } else { + res.status(401).send({ message: 'Invalid Email or Password.' }); + } +} + +export async function register(req, res) { + const user = new User({ + name: req.body.name, + email: req.body.email, + password: req.body.password, + }); + const newUser = await user.save(); + if (newUser) { + res.send({ + _id: newUser.id, + name: newUser.name, + email: newUser.email, + isAdmin: newUser.isAdmin, + token: getToken(newUser), + }); + } else { + res.status(401).send({ message: 'Invalid User Data.' }); + } +} + +export async function createAdmin(req, res) { + try { + const user = new User({ + name: 'Basir', + email: 'admin@example.com', + password: '1234', + isAdmin: true, + }); + const newUser = await user.save(); + res.send(newUser); + } catch (error) { + res.send({ message: error.message }); + } +} \ No newline at end of file diff --git a/backend/routes/userRoute.js b/backend/routes/userRoute.js index 40ab7d4..de02694 100644 --- a/backend/routes/userRoute.js +++ b/backend/routes/userRoute.js @@ -1,80 +1,15 @@ import express from 'express'; -import User from '../models/userModel'; +import { createAdmin, register, signIn, updateUser } from '../controller/authController'; import { getToken, isAuth } from '../util'; const router = express.Router(); -router.put('/:id', isAuth, async (req, res) => { - const userId = req.params.id; - const user = await User.findById(userId); - if (user) { - user.name = req.body.name || user.name; - user.email = req.body.email || user.email; - user.password = req.body.password || user.password; - const updatedUser = await user.save(); - res.send({ - _id: updatedUser.id, - name: updatedUser.name, - email: updatedUser.email, - isAdmin: updatedUser.isAdmin, - token: getToken(updatedUser), - }); - } else { - res.status(404).send({ message: 'User Not Found' }); - } -}); +router.put('/:id', isAuth, updateUser); -router.post('/signin', async (req, res) => { - const signinUser = await User.findOne({ - email: req.body.email, - password: req.body.password, - }); - if (signinUser) { - res.send({ - _id: signinUser.id, - name: signinUser.name, - email: signinUser.email, - isAdmin: signinUser.isAdmin, - token: getToken(signinUser), - }); - } else { - res.status(401).send({ message: 'Invalid Email or Password.' }); - } -}); +router.post('/signin', signIn); -router.post('/register', async (req, res) => { - const user = new User({ - name: req.body.name, - email: req.body.email, - password: req.body.password, - }); - const newUser = await user.save(); - if (newUser) { - res.send({ - _id: newUser.id, - name: newUser.name, - email: newUser.email, - isAdmin: newUser.isAdmin, - token: getToken(newUser), - }); - } else { - res.status(401).send({ message: 'Invalid User Data.' }); - } -}); +router.post('/register', register); -router.get('/createadmin', async (req, res) => { - try { - const user = new User({ - name: 'Basir', - email: 'admin@example.com', - password: '1234', - isAdmin: true, - }); - const newUser = await user.save(); - res.send(newUser); - } catch (error) { - res.send({ message: error.message }); - } -}); +router.get('/createadmin', createAdmin); export default router;