Орган
Взгляните на мой новый драгоценный камень, Авторитет . Управление доступом осуществляется с помощью простых методов Ruby, поэтому вы можете использовать абсолютно любую логику, которую вы знаете, как это делать в Ruby.
Прекрасно работает с единой регистрацией
Ситуация, которую вы описываете, была оригинальной, для которой мы ее создали: у нас уже было приложение SSO, которое заботится о CRUD для создания пользователей и назначения ролей, например: «Карла - администратор в приложении X; в приложении Y она - и работник, и продавец. "
Когда Карла пытается получить доступ к Приложению Y, если она вошла в систему, она сообщает Приложению Y «вот Карла: она вошла в систему и выполняет следующие роли». Затем приложение Y решает, что эти роли на самом деле позволяют ей делать. Эта логика не попадает в базу данных вообще; мы фактически сравниваем список ролей с разрешениями в файле YAML.
Это всего лишь один пример логики, которую вы можете реализовать с помощью Authority, но на самом деле она широко открыта.
Группировка моделей
В вашем случае, если вы использовали Authority, я бы посоветовал вам сгруппировать некоторые модели в StandardAuthorizer, а другие - в AdminAuthorizer. Проверьте README для получения дополнительной информации.