Как редактировать URL для выхода из ApostropheCMS - PullRequest
1 голос
/ 07 апреля 2020

Я работаю над определенной стратегией для входа OAuth2 в ApostropheCMS. После входа в систему мне нужно закрыть сеанс через URL-адрес сервера идентификации, который позволяет мне выполнять поток OAuth2.

Вместо использования http://localhost: 3000 / logout, используйте http://localhost: порт / auth / oauth2 / logout . Но я не могу найти, где редактировать URL, используя ссылку выхода из системы в ApostropheCMS.

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

Полагаю, вы говорите, что вам не нужно дублировать функцию выхода из системы (вы уже это сделали), вам нужно изменить ссылку выхода из системы в панели администратора. К счастью, есть хороший способ сделать это.

Как и большинство модулей, модуль apostrophe-login добавляет свои кнопки панели администратора в метод, называемый addAdminBarItems. Этот метод выглядит следующим образом:

    self.addAdminBarItems = function() {
      var items = [];
      var key;
      if (self.options.resetKnownPassword) {
        key = self.__meta.name + '-reset-known-password';
        self.apos.adminBar.add(key, 'Change Password', null);
        items.push(key);
      }
      key = self.__meta.name + '-logout';
      self.apos.adminBar.add(key, 'Log Out', null, { last: true, href: '/logout' });
      items.push(key);
      if (items.length > 1) {
        self.apos.adminBar.group({
          label: 'Account',
          items: items,
          last: true
        });
      }
    };

Мы можем переопределить его в соответствии с нашими потребностями.

Создать lib/modules/apostrophe-login/index.js на уровне проекта. Не копируйте и не вставляйте все это из node_modules, это никогда не требуется, мы переопределяем один метод здесь. Apostrophe автоматически увидит это и применит наши изменения к оригиналу.

Вот как будет выглядеть файл:

// in lib/modules/apostrophe-login/index.js of your project
module.exports = {
  construct: function(self, options) {
    self.addAdminBarItems = function() {
      key = self.__meta.name + '-logout';
      self.apos.adminBar.add(key, 'Log Out', null, { last: true, href: '/anywhere/you/want/it/to/go' });
    };
  }
};

Это заменит метод, который нам нужно изменить, не изменяя ничего другого .

0 голосов
/ 07 апреля 2020

В настоящее время нет способа изменить путь выхода из системы. Однако обратный вызов на этом маршруте довольно прост , поэтому может быть довольно просто написать собственный маршрут, который делает то же самое.

self.apos.app.get('/logout', function(req, res) {
  return req.session.destroy(function(err) {
    if (err) {
      self.apos.utils.error(err);
    }
    res.redirect('/');
  });
});
...