Реализация CASL с помощью React и Redux - PullRequest
0 голосов
/ 03 марта 2019

Я буду ссылаться на эту статью https://medium.com/dailyjs/managing-user-permissions-in-your-react-app-a93a94ff9b40

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

import { AbilityBuilder } from 'casl'

function subjectName(item) { 
if (!item || typeof item === 'string') {
    return item  
    }  
return item.__type
}
export default AbilityBuilder.define({ subjectName }, can => {
    can(['read', 'create'], 'Todo') 
    can(['update', 'delete'], 'Todo', { assignee: 'me' })
});

Область сверху, которая меня смущает, - это 'Todo' в функции экспорта по умолчанию, которая может (['read', 'create'], 'Todo') Что это за "Todo"?В статье он описывает это так: «Второй аргумент - тип объекта, в нашем случае Todo, для которого применимо это правило.» Где он получает этот тип объекта,от subjectName?

Я осмотрелся и также нашел пример использования вошедшего в систему пользователя с помощью redux (ближе к моей обнадеживающей реализации) и нашел это https://github.com/stalniy/casl/issues/148

Что я хочу реализовать: Мое приложениепредназначен для колледжа и является ремейком грантового сайта для исследователей на университетском уровне.(Исследователи IE могут видеть доступные гранты, подавать заявки на них и т. Д.), И у меня будут администраторы, которые смогут войти в это же приложение и иметь возможность загружать гранты и принимать / отклонять заявки грантов исследователей.Поэтому мне нужно иметь возможность защищать маршруты от определенных ролей пользователя.

Как, я надеюсь, это будет работать: пользователь входит в систему. Если исследователь -> разрешит им просматривать все гранты и подать заявку на них, а также просмотреть их статус, если admin -> увидеть заявки грантов и принять / отклонить их по существускрыть маршруты для обоих людей.(Администратор не может подать заявку на грант, исследователь не может принимать заявки и т. д.)

Любая информация о том, как реализовать это в реакции, будет принята с благодарностью.

...