Реализация CASL с помощью React и Redux

Я буду ссылаться на эту статью 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' })
});

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

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

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

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

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

Вы можете прочитать комментарии в github.com/stalniy/casl/issues/135, чтобы понять, что такое Todo. Короче говоря, это имя объекта, к которому вы хотите определить доступ. subjectName — это функция, которая может извлекать имя объекта из экземпляра объекта при проверке разрешений с помощью ability.can(...)

Sergii Stotskyi 03.03.2019 10:46
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
1
1 334
0

Другие вопросы по теме