Мое приложение использует Devise для аутентификации, CanCanCan для авторизации и RailsAdmin для администратора. В настоящее время есть пользователи, которых считают «администраторами», и они могут получить доступ ко всему в приложении, и есть пара других типов пользователей, которые в основном являются разновидностями администраторов с немного меньшими привилегиями, все они определены в файле Ability.rb.
Однако теперь мне нужно реализовать разрешения на уровне компании для пользователей. Прямо сейчас администраторы имеют доступ к любой компании в приложении. В дальнейшем мне нужно добавить возможность для владельца компании добавлять / приглашать пользователей в свою компанию и давать им определенные разрешения. Этот пользователь также может потенциально принадлежать другим компаниям в приложении с различными разрешениями.
CanCanCan "может" это сделать? Или это работа для пандита? Что-то еще целиком?
Все учебные пособия и документация, которые я вижу в Интернете для CCC и Pundit, содержат разрешения для всего приложения. Но мне нужен более детальный контроль.
Например, в моем приложении сотни компаний. В каждой компании есть пользователь, который является «владельцем», и они каждый день входят в систему, чтобы посмотреть информацию о своих доходах. Этот владелец / пользователь хочет пригласить Джо Смита в приложение, чтобы они также могли просматривать данные и вносить изменения. Но они не хотят, чтобы Джо Смит мог видеть определенные типы данных. Поэтому мы ограничиваем доступ Джо Смита к определенным данным для этой компании.
Это полностью отделено от того, для чего я в настоящее время использую CanCanCan, для установки прав доступа для администраторов, чтобы пользователь-администратор мог видеть ЛЮБУЮ информацию о компании и вносить изменения в глобальном масштабе.
Мне любопытно узнать, сталкивался ли кто-нибудь с этой проблемой раньше и что они, возможно, использовали для ее решения. Я очень ценю любой совет / мудрость!