Как показать всплывающее окно входа в систему для определенного действия? - PullRequest
0 голосов
/ 27 мая 2020

У меня есть система голосования. Я хочу разрешить зарегистрированным пользователям голосовать, отклонить это для незарегистрированных, для чего я хотел бы показать всплывающее окно.

Код моего всплывающего окна: всплывающее окно будет отображаться только тогда, когда пользователь не вошел в систему, только после нажатия кнопки в противном случае AJAX отправит данные в серверную часть. Это всплывающее окно Bootstrap, которое будет работать с идентификатором всплывающего окна.

Мой AJAX маршрут: это мой AJAX для нажатия кнопки, когда пользователь нажимает на него, отправляет некоторый запрос на соответствующий маршрут

     $('body').on('click', '#upvote', event => {
            const id = event.target.parentElement.getAttribute('data-id');
                upvoteMessage(id);
            })


          function upvoteMessage(id) {
        let userPhoto = STORE.photos.find(photo => {
            return photo._id == id; 
         });
        $.ajax({
                url: '/' + id + '/upvote',
                type: 'patch', 
                contentType: 'application/json',
                headers: {
                    authorization: `Bearer ${window.localStorage.token}`
                }
            })
            .done(res => {
                STORE.update(res.photo);
                renderPhotos();
            })
        }

Наконец, мой маршрут на сервере: это маршрут к действию. Он будет вызываться, когда пользователь нажимает кнопку, и это произойдет, только если он уже вошел в систему.

У меня есть система голосования, мне нужен пользователь, который вошел в систему, может голосовать, а в противном случае не может голосовать. Я хочу показать всплывающее окно входа в систему, если кто-либо попытается проголосовать без входа в систему.

          const alreadyUpvoted = photos.upvoted.includes(req.user.id);
          if (alreadyUpvoted) {
            photos.voteScore--; 
            photos.downvoted.push(req.user.id);
            photos.save()
            .then(photos => {
                return res.status(200).json({photos});
            })
          }
          const alreadyDownvoted = photos.downvoted.includes(req.user.id);
          if (alreadyDownvoted) {
              let _downvoted = photos.downvoted.filter(id => id !== req.user.id);
              photos.downvoted = _downvoted; 
          }
          photos.voteScore++; 
          photos.upvoted.push(req.user.id);
          photos.save()

          .then(photos => {
            return res.status(200).json({photos});
          })
      })


      .catch(err => {
          res.status(500).json({error: err});
      }) 
    }

Я хочу показать всплывающее окно входа в систему при нажатии кнопки, если он не является пользователем, если он является пользователем и уже вошел в систему он может щелкнуть, и он вызовет маршрут, может выполнить действие без всплывающего окна входа в систему. Могу ли я добиться этого из внутреннего интерфейса, если нет, как я могу сделать это из внешнего интерфейса?

В качестве угрозы безопасности из внешнего интерфейса я хочу реализовать его из внутреннего интерфейса Мне нужно решение, как я могу отправить выше всплывающий код из серверной части. Насколько я знаю, я могу отправить страницу HTML и переменные из серверной части, но как я могу отправить конкретный div, например всплывающее окно. У меня есть система голосования, мне нужен пользователь, который вошел в систему, может голосовать, а в противном случае не может голосовать. Я хочу показать всплывающее окно входа в систему, если кто-нибудь попытается проголосовать без входа в систему.

...