Xandr24
@Xandr24
учиться и еще раз учиться

Какой модуль node.js, работающий на клиенте использовать для localStorage?

Добрый день всем. Какой модуль посоветуете юзать для установки localStorage?
Суть такая что мне надо настроить до конца авторизацию, при успешной авторизации надо чтоб отображалось "привет user" вместо кнопок signin и signup, на данный момент у меня архитектура такова что эти кнопки находятся в подключаемом ко все страницам блоке (меню) header. Он подключен ко всем страницам и не расположен в той же директории что и они.
.../views/index.ejs
.../views/signin.ejs
.../views/blocks/header.ejs
вот какая архитектура
А вот код signin при postзапросе с него
router.post('/signin', (req, res, next) => {
  passport.authenticate('signin', (authenticateError, user, info) => {
    if (authenticateError) {
      next(authenticateError);

      return;
    }

    if (info && info.message) {
      res.render('signin', {
        errorMessage: info.message
      });

      return;

    }

    req.logIn(user, (err) => {
      if (err) {
        next(err);

        return;
      }
      console.log("===================" + user.email);  <----тут для теста при верной авторизе вывожу мыло юзера 
      res.redirect('/');  <------- тут он редиректит на главную

    });
  })(req, res, next);
});


Вот html страницы signin, тту видно как в нее подключается блок header
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=0.1">
  <link rel="stylesheet" href="./public/css/signin.css" type="text/css"/>
</head>
<header>
  <% include blocks/header.ejs %>
</header>
  <div id="log-acc">
    <div id="wr">
        <p id="description">Login</p>
        <p id="warning">Enter your email and password</p>
        <form action="/signin" method="post">
          <div>
            <input type="email" name="email" id="email" class="data" placeholder="EMAIL" required>
          </div>
          <div>
            <input type="password" name="password" id="password" class="data" placeholder="PASSWORD" required>
          </div>
          <div>
            <button id="form-auth">Login Now</button>
          </div>
        </form>
    </div>
  </div>
</div>
</body>
</html>

Подскажите как правильно реализовать что при верной авторизации редиректит на главную(задача решена) и меняются в этом подключаемом блоке header кнопки signin и signup на "Hello"
  • Вопрос задан
  • 263 просмотра
Пригласить эксперта
Ответы на вопрос 1
EShein
@EShein
Shein
Во-первых, если вы используете паспорт для авторизации то делайте это по документации. Тут велосипед изобретать не надо уже все сделано за вас:
router.post('/signin', passport.authenticate('signin', 
              { 
                   successRedirect: '/',
                   failureRedirect: '/login' 
              }
));

Во-вторых чтобы менять кнопки то вам нужно передать юзера шаблон и использовать для этого условия:
(при успешной авторизации если все сделано правильно то у объект  req появляется свойство user)
res.render('signin', {
        errorMessage: info.message,
        user: req.user
});

И дальше на примере pug покажу(как делать в ejs читайте документацию)
if user
    button(type="submit") signin
    button(type="submit") signup
else
  h1 Hello #{user.name}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект