From b0bac762d227aef06b8e0167426d2531c21680fa Mon Sep 17 00:00:00 2001 From: swayamName1 Date: Sun, 26 May 2024 12:02:28 +0530 Subject: [PATCH 1/2] deleteAdmin Api fix issue #952 --- backend/app/routes/faq/deleteFaq.js | 19 +-- backend/app/routes/faq/index.js | 4 +- backend/app/routes/index.js | 8 +- .../Admin/Components/Faq/AddFaq/AddFaq.jsx | 2 +- .../Components/Faq/ManageFaq/ManageFaq.jsx | 158 ++++++++++-------- frontend/src/pages/Faq/Faq.jsx | 2 +- 6 files changed, 95 insertions(+), 98 deletions(-) diff --git a/backend/app/routes/faq/deleteFaq.js b/backend/app/routes/faq/deleteFaq.js index d0a762ba..299f39d3 100644 --- a/backend/app/routes/faq/deleteFaq.js +++ b/backend/app/routes/faq/deleteFaq.js @@ -2,12 +2,14 @@ const to = require('await-to-js').default; const faq = require('../../models/faq'); const { ErrorHandler } = require('../../../helpers/error'); const constants = require('../../../constants'); -const Admin = require('../../models/Admin'); module.exports = async (req, res, next) => { - const { userId } = req.body; const { faqId } = req.body; - if (!userId || !faqId) { + const payload = res.locals.decode; + if (!payload.isSuperAdmin) { + return res.status(401).json({ error: 'You are not authorized to perform this action' }); + } + if (!faqId) { const error = new ErrorHandler(constants.ERRORS.DATABASE, { statusCode: 500, message: `You don't have the required permissions`, @@ -15,17 +17,8 @@ module.exports = async (req, res, next) => { }); return next(error); } - const [err] = await to(Admin.findById(userId)); + const [err] = await to(faq.findByIdAndDelete(faqId)); if (err) { - const error = new ErrorHandler(constants.ERRORS.DATABASE, { - statusCode: 500, - message: `You don't have the required permissions`, - errStack: err, - }); - return next(error); - } - const [err2] = await to(faq.findByIdAndDelete(faqId)); - if (err2) { const error = new ErrorHandler(constants.ERRORS.DATABASE, { statusCode: 500, message: `Faq doesn't exist`, diff --git a/backend/app/routes/faq/index.js b/backend/app/routes/faq/index.js index 6fc56a61..49bd3b73 100644 --- a/backend/app/routes/faq/index.js +++ b/backend/app/routes/faq/index.js @@ -5,10 +5,10 @@ const FAQValidationSchema = require('./@validationSchema'); const validation = require('../../../helpers/middlewares/validation'); const deleteFaq = require('./deleteFaq'); const updateFaq = require('./updateFaq'); - +const {authMiddleware}=require('../../../helpers/middlewares/auth') router.post('/faq', validation(FAQValidationSchema), faq); router.get('/getFaq', getfaq); -router.put('/deleteFaq', deleteFaq); +router.put('/deleteFaq',authMiddleware, deleteFaq); router.patch('/updateFaq',updateFaq); module.exports = router; diff --git a/backend/app/routes/index.js b/backend/app/routes/index.js index ba54ff67..5b9adc03 100644 --- a/backend/app/routes/index.js +++ b/backend/app/routes/index.js @@ -4,10 +4,7 @@ const auth = require('./auth'); const { emailTest } = require('./testRoutes/emailTest'); const tinyURL = require('./tinyURL'); const broadcast = require('./broadcast'); -const faq = require('./faq/post'); -const getFaq = require('./faq/getFaq'); -const deleteFaq = require('./faq/deleteFaq'); -const updateFaq = require('./faq/updateFaq') +const faq = require('./faq'); const joinUs = require('./joinUs'); const contactus = require('./contactUs') const question = require('./Q&A/question'); @@ -19,9 +16,6 @@ router.use('/admin', admin); router.use('/auth', auth); router.post('/emailTest', emailTest); router.use('/faq', faq); -router.use('/deleteFaq', deleteFaq); -router.use('/updateFaq',updateFaq) -router.use('/getFaq', getFaq); router.use('/contactus', contactus); router.use('/broadcast', broadcast); router.use('/question', question); diff --git a/frontend/src/pages/Admin/Components/Faq/AddFaq/AddFaq.jsx b/frontend/src/pages/Admin/Components/Faq/AddFaq/AddFaq.jsx index bdbc6e1b..1602318b 100644 --- a/frontend/src/pages/Admin/Components/Faq/AddFaq/AddFaq.jsx +++ b/frontend/src/pages/Admin/Components/Faq/AddFaq/AddFaq.jsx @@ -96,7 +96,7 @@ export class AddFaq extends React.Component { e.preventDefault(); if (this.handleValidation()) { let tags = this.state.tags; - return fetch(`${END_POINT}/faq`, { + return fetch(`${END_POINT}/faq/faq`, { method: "POST", headers: { "Content-Type": "application/json", diff --git a/frontend/src/pages/Admin/Components/Faq/ManageFaq/ManageFaq.jsx b/frontend/src/pages/Admin/Components/Faq/ManageFaq/ManageFaq.jsx index 25d7297b..fcc00b44 100644 --- a/frontend/src/pages/Admin/Components/Faq/ManageFaq/ManageFaq.jsx +++ b/frontend/src/pages/Admin/Components/Faq/ManageFaq/ManageFaq.jsx @@ -1,86 +1,96 @@ -import React from "react" +import React from "react"; import { useEffect, useState } from "react"; import Accordion from "@material-ui/core/Accordion"; import AccordionDetails from "@material-ui/core/AccordionDetails"; import AccordionSummary from "@material-ui/core/AccordionSummary"; import Typography from "@material-ui/core/Typography"; -import Button from "@material-ui/core/Button" -import { Edit, Delete } from "@material-ui/icons" +import Button from "@material-ui/core/Button"; +import { Edit, Delete } from "@material-ui/icons"; import ExpandMoreIcon from "@material-ui/icons/ExpandMore"; import { END_POINT } from "../../../../../config/api"; import Loader from "../../../../../components/util/Loader"; -import style from "./manage-faq.module.scss" +import style from "./manage-faq.module.scss"; export function ManageFaq() { - const [faqs, setFaqs] = useState([]); - const [expanded, setExpanded] = React.useState(false); - const [isFetching, setIsFetching] = useState(false) - const handleChange = (panel) => (event, isExpanded) => { - setExpanded(isExpanded ? panel : false); - }; - async function fetchAllFaq() { - try { - const response = await fetch(`${END_POINT}/getFaq`); - const data = await response.json(); - console.log(data) - setFaqs(data.Faq) - setIsFetching(false) - } - catch (err) { - console.log(err.message) - } + const [faqs, setFaqs] = useState([]); + const [expanded, setExpanded] = React.useState(false); + const [isFetching, setIsFetching] = useState(false); + const handleChange = (panel) => (event, isExpanded) => { + setExpanded(isExpanded ? panel : false); + }; + async function fetchAllFaq() { + try { + const response = await fetch(`${END_POINT}/faq/getFaq`); + const data = await response.json(); + console.log(data); + setFaqs(data.Faq); + setIsFetching(false); + } catch (err) { + console.log(err.message); } - useEffect(() => { - setIsFetching(true) - fetchAllFaq() - }, []) + } + useEffect(() => { + setIsFetching(true); + fetchAllFaq(); + }, []); - return ( -
-

Manage FAQ

-
-
- {isFetching ? ( - - ) : ( - faqs.map((faq) => ( - - - } - aria-controls="panel1a-content" - id="panel1a-header" - > -

- -    {faq.question} -

-
- - - {faq.answer} - -
- - -
-
-
- )) - )} -
-
+ return ( +
+

Manage FAQ

+
+
+ {isFetching ? ( + + ) : ( + faqs.map((faq) => ( + + + } + aria-controls="panel1a-content" + id="panel1a-header" + > +

+ +    {faq.question} +

+
+ + + {faq.answer} + +
+ + +
+
+
+ )) + )}
- ); -} \ No newline at end of file +
+
+ ); +} diff --git a/frontend/src/pages/Faq/Faq.jsx b/frontend/src/pages/Faq/Faq.jsx index 1d668db3..2006e6b3 100644 --- a/frontend/src/pages/Faq/Faq.jsx +++ b/frontend/src/pages/Faq/Faq.jsx @@ -56,7 +56,7 @@ export function Faq(props) { }; const fetchFaqs = () => { - fetch(`${END_POINT}/getFaq`, { + fetch(`${END_POINT}/faq/getFaq`, { method: "GET", headers: { "Content-Type": "application/json", From 4af57ee774130444b82b61cafd40e6a25a9be658 Mon Sep 17 00:00:00 2001 From: swayamName1 Date: Sun, 26 May 2024 13:22:48 +0530 Subject: [PATCH 2/2] deleteApi post route fix --- backend/app/routes/faq/index.js | 2 +- frontend/src/pages/Admin/Components/Faq/AddFaq/AddFaq.jsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/app/routes/faq/index.js b/backend/app/routes/faq/index.js index 49bd3b73..bfa41276 100644 --- a/backend/app/routes/faq/index.js +++ b/backend/app/routes/faq/index.js @@ -6,7 +6,7 @@ const validation = require('../../../helpers/middlewares/validation'); const deleteFaq = require('./deleteFaq'); const updateFaq = require('./updateFaq'); const {authMiddleware}=require('../../../helpers/middlewares/auth') -router.post('/faq', validation(FAQValidationSchema), faq); +router.post('/postFaq', validation(FAQValidationSchema), faq); router.get('/getFaq', getfaq); router.put('/deleteFaq',authMiddleware, deleteFaq); router.patch('/updateFaq',updateFaq); diff --git a/frontend/src/pages/Admin/Components/Faq/AddFaq/AddFaq.jsx b/frontend/src/pages/Admin/Components/Faq/AddFaq/AddFaq.jsx index 1602318b..9eeff517 100644 --- a/frontend/src/pages/Admin/Components/Faq/AddFaq/AddFaq.jsx +++ b/frontend/src/pages/Admin/Components/Faq/AddFaq/AddFaq.jsx @@ -96,7 +96,7 @@ export class AddFaq extends React.Component { e.preventDefault(); if (this.handleValidation()) { let tags = this.state.tags; - return fetch(`${END_POINT}/faq/faq`, { + return fetch(`${END_POINT}/faq/postFaq`, { method: "POST", headers: { "Content-Type": "application/json",