Как назначить права администратора пользователю в Keystone JS 5? - PullRequest
0 голосов
/ 23 февраля 2020

Как назначить статус администратора пользователю в интерфейсе администратора?

Я прочитал руководство по аутентификации и руководство по управлению доступом, но я не понимаю разницу между "владельцем" и "администратором" в Keystone JS. Когда вы создаете пользователя, как вы назначаете права этого пользователя администратора? Как вам нужно настроить список пользователей, чтобы разрешить это? Что такое «владелец» тогда?

Спасибо за любую помощь в продвижении вперед.

1 Ответ

1 голос
/ 25 февраля 2020

Keystone Js контроль доступа является декларативным, у вас есть полный контроль, и keystone не делает никаких предположений по этому поводу.

Admin : простыми словами вы можете подумать, что Admin означает, что пользователь может получить доступ к приложению Admin-UI. но приложение Admin UI также ограничено с помощью некоторого метода управления доступом.

По умолчанию все имеют доступ к интерфейсу администратора, вы можете ограничить это, используя свойство isAccessAllowed в опции конструктора приложения Admin UI. из приведенного выше примера ссылки:

new AdminUIApp({
  /*...config */
  isAccessAllowed: ({ authentication: { item: user, listKey: list } }) => !!user && !!user.isAdmin,
}),

вышеупомянутый элемент списка обычно находится в списке «Пользователь», как определено в стратегии аутентификации

const authStrategy = keystone.createAuthStrategy({
  type: PasswordAuthStrategy,
  list: 'User',
  config: {
    identityField: 'username', // default: 'email'
    secretField: 'password', // default: 'password'
  },
});

...

module.exports = {
  keystone: new Keystone(),
  apps: [
    new GraphQLApp(),
    new AdminUIApp({
        adminPath: '/admin',
        authStrategy,
        isAccessAllowed: ({ authentication: { item: user, listKey: list } }) => !!user && !!user.isAdmin,
    }),
  ],
};

Владелец : keystone не определяет владельца, все, что вы делаете, - это создаете право владения на основе декларации, как для сообщения в блоге, а Автор является владельцем, на основании этого различия вы можете разрешить определенное действие автору сообщения, например редактирование и отправка на утверждение.

все это входит в api контроля доступа, когда вы создаете определение контроля доступа, они оценивают функцию и решают, разрешено ли это действие. Вы можете увидеть полный пример того, как это работает в https://github.com/MadeByMike/keystone-access-control-demo и более продвинутый в их тестовом костюме здесь - https://github.com/keystonejs/keystone/blob/master/test-projects/access-control/index.js

...