From 8c26480b7a1325dbd862e0ee91fcfbebf4672df0 Mon Sep 17 00:00:00 2001 From: NOBLE2008 <143566611+NOBLE2008@users.noreply.github.com> Date: Mon, 20 May 2024 23:32:31 +0100 Subject: [PATCH 1/2] Improved in MVC Architecture --- backend/controller/userController.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 backend/controller/userController.js diff --git a/backend/controller/userController.js b/backend/controller/userController.js new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/backend/controller/userController.js @@ -0,0 +1 @@ + From 5c0245498695a5ac94a77cf6319f21f5c7d42922 Mon Sep 17 00:00:00 2001 From: Noble Benjamin Date: Mon, 20 May 2024 23:54:59 +0100 Subject: [PATCH 2/2] Modified For MVC --- backend/controller/authController.js | 78 ++++++++++++++++++++++++++++ backend/controller/userController.js | 1 - backend/routes/userRoute.js | 75 ++------------------------ 3 files changed, 83 insertions(+), 71 deletions(-) create mode 100644 backend/controller/authController.js delete mode 100644 backend/controller/userController.js 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/controller/userController.js b/backend/controller/userController.js deleted file mode 100644 index 8b13789..0000000 --- a/backend/controller/userController.js +++ /dev/null @@ -1 +0,0 @@ - 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;