From 05142fca29bf6a1a35844243f8c3a284cbd08c55 Mon Sep 17 00:00:00 2001 From: Nikola Petrov Date: Sat, 23 Sep 2023 22:02:05 +0200 Subject: [PATCH] Add a way to edit admin --- app.js | 2 ++ controllers/userController.js | 65 +++++++++++++++++++++++++++++++++++ routes/user.js | 16 +++++++++ views/user.hbs | 62 +++++++++++++++++++++++++++++++++ 4 files changed, 145 insertions(+) create mode 100644 controllers/userController.js create mode 100644 routes/user.js create mode 100644 views/user.hbs diff --git a/app.js b/app.js index 004d0ab..9f66368 100644 --- a/app.js +++ b/app.js @@ -46,11 +46,13 @@ var mainRouter = require('./routes/main'); var listRouter = require('./routes/list'); var apiRouter = require('./routes/api/apiRouter'); var mailRouter = require('./routes/mail'); +//var userRouter = require('./routes/user'); app.use('/', mainRouter); app.use('/list', listRouter); app.use('/api', apiRouter); app.use('/mail', mailRouter); +//app.use('/user', userRouter); // catch 404 and forward to error handler app.use(function (req, res, next) { diff --git a/controllers/userController.js b/controllers/userController.js new file mode 100644 index 0000000..73f0fc3 --- /dev/null +++ b/controllers/userController.js @@ -0,0 +1,65 @@ +var UserModel = require('../models/userModel'); + +module.exports = { + + create: async function (req, res) { + console.log(req.body); + const pass = req.body.password; + const omdb_key = req.body.omdb_key; + const twitch_client_id = req.body.twitch_client_id; + const twitch_client_secret = req.body.twitch_client_secret; + + try { + const userFound = await UserModel.findOne({ pass: pass }); + if (userFound) { + return res.status(409).json({ message: 'User already exists' }); + } + + const user = new UserModel({ + pass: pass, + omdb_key: omdb_key, + twitch_client_id: twitch_client_id, + twitch_client_secret: twitch_client_secret, + }); + + await user.save(); + return res.redirect('/list'); + } + catch (err) { + return res.status(500).json({ message: 'Error when creating user', error: err }); + } + }, + + /** + * mediaController.delete() + */ + remove: async function (req, res) { + const pass = req.body.password; + try { + const userFound = await UserModel.findOne({ pass: pass }); + if (!userFound) { + return res.status(404).json({ message: 'Wrong password' }); + } + await userFound.remove(); + return res.status(204).json({ message: 'User deleted' }); + } catch (err) { + return res.status(500).json({ message: 'Error when deleting the user', error: err }); + } + }, + + get: async function (req, res) { + const pass = req.body.password; + try { + const userFound = await UserModel.findOne({ pass: pass }); + if (!userFound) { + return res.status(404).json({ message: 'Wrong password' }); + } + + const usersFound = await UserModel.find(); + + return res.status(200).json(usersFound); + } catch (err) { + return res.status(500).json({ message: 'Error when getting the user', error: err }); + } + }, +}; \ No newline at end of file diff --git a/routes/user.js b/routes/user.js new file mode 100644 index 0000000..7ac0619 --- /dev/null +++ b/routes/user.js @@ -0,0 +1,16 @@ +var express = require('express'); +var router = express.Router(); +var userController = require('../controllers/userController.js'); + +/* GET home page. */ +router.get('/', function (req, res, next) { + res.render('user', {title: 'Register'}); +}); + +router.post('/', userController.create); + +router.delete('/', userController.remove); + +router.put('/', userController.get); + +module.exports = router; \ No newline at end of file diff --git a/views/user.hbs b/views/user.hbs new file mode 100644 index 0000000..3ae7cb4 --- /dev/null +++ b/views/user.hbs @@ -0,0 +1,62 @@ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + +
+
+
Delete
+
+
Get
+
+
+ + +
\ No newline at end of file