Имеет ли смысл установка пользовательских разрешений? - PullRequest
1 голос
/ 07 января 2011

Я создаю приложение на Rails 3 и работаю над дизайном сложного инструмента для пользовательских разрешений, в котором пользователь Company определяет конкретные роли для каждого PM.

Представьте себе этот сценарий - компанияхочет установить определенные роли для трех типов данных.

  • Таблица проекта
  • Таблица клиента
  • Корпоративный счет (т. е. таблица компании)

Я думаю о добавлении полиморфной таблицы ролей с этими полями:

  • user_id (пользователь, к которому относится эта роль, если только all_users == true)
  • тип элемента (например,«Проект», «Клиент» или «Компания», если только all_items == true)
  • идентификатор элемента (как указано выше)
  • роль (например, «чтение», «редактирование», «уничтожить ", или даже" настроить ")
  • all_users (логическое значение: применяется ли роль этого элемента ко всем пользователям)
  • all_items (логическое значение: применяется ли роль этого пользователя ко всем элементам)
  • company_id (компания, которая "владеет" этой ролью)

Я чувствую, что CanCanОтличный способ добиться этого, но вот мой вопрос.1. Является ли приведенная выше таблица хорошим способом сделать это?2. Может ли CanCan связать это, чтобы создать эффективное решение?

1 Ответ

0 голосов
/ 07 января 2011

Ваш стол кажется разумным способом реализовать очень сложную схему авторизации, которая, похоже, является тем, что вам нужно.

Что касается CanCan, то да, он отлично с этим справится.Все, что делает CanCan, - это дает вам возможность определять авторизацию действий, моделей и т. Д. В соответствии с определенными критериями.Этими критериями могут быть что угодно (например, день месяца и т. Д.), Но они обычно привязаны к ролям.Поэтому все, что вам нужно сделать, это указать права авторизации в соответствии с информацией в вашей таблице ролей и конкретным экземпляром модели, который будет оцениваться.

...