Просмотр исходного кода

Update backend to only allows answers from me.
Add page to create answers.

Lee Morgan 4 лет назад
Родитель
Сommit
fd954fadb6
2 измененных файлов с 25 добавлено и 7 удалено
  1. 20 6
      controllers/learn.js
  2. 5 1
      views/learn/newAnswer.html

+ 20 - 6
controllers/learn.js

@@ -310,11 +310,13 @@ module.exports = {
     /*
     POST: creates a new answer to a question
     req.body = {
+        uploader: String (Uploader id)
+        password: String
         lecture: String (Lecture id)
         question: String (Question id)
-        name: String
         content: String
     }
+    redirect: /learn/lecture/:id
     */
     createAnswer: function(req, res){
         let answer = new Answer({
@@ -322,8 +324,16 @@ module.exports = {
             content: req.body.content
         });
 
-        Lecture.findOne({_id: req.body.lecture})
-            .then((lecture)=>{
+        let uploader = Uploader.findOne({_id: req.body.uploader});
+        let lecture = Lecture.findOne({_id: req.body.lecture});
+
+        Promise.all([uploader, lecture])
+            .then((response)=>{
+                let lecture = response[1];
+                let uploader = response[0];
+
+                if(uploader === null || uploader.password !== req.body.password) throw "auth";
+
                 let question = lecture.questions.id(req.body.question);
 
                 question.answers.push(answer);
@@ -331,11 +341,15 @@ module.exports = {
                 lecture.save();
             })
             .then((lecture)=>{
-                return res.json(answer);
+                return res.redirect(`/learn/lectures/${req.body.lecture}`);
             })
             .catch((err)=>{
-                console.error(err);
-                return res.json("ERROR: unable to create new question");
+                switch(err){
+                    case "auth": return res.redirect(`/learn/lectures/${req.body.lecture}`);
+                    default:
+                        console.error(err);
+                        return res.json("ERROR: unable to create new question");
+                }
             });
     }
 }

+ 5 - 1
views/learn/newAnswer.html

@@ -32,8 +32,12 @@
                 <input name="lecture" type="text" required>
             </label>
 
+            <label>Question
+                <input name="question" type="text" required>
+            </label>
+
             <label>Content
-                <input name="content" type="text" required>
+                <textarea name="content" required></textarea>
             </label>
 
             <input type="Submit">