Администратовое разрешение с Cancan
-
12-10-2019 - |
Вопрос
A Имеет кучу контроллеров с пространством имен администраторов. Я хочу ограничить их доступ, если пользователь не является администратором. Есть ли способ сделать это с помощью Cancan без необходимости называть несанкционированным! В каждом методе каждого контроллера?
Решение
Добавьте контроллер приложения в ваше пространство имен и перед фильтром в него.
class ApplicationController < ActionController::Base
end
class Admin::ApplicationController < ApplicationController
# these goes in your namespace admin folder
before_filter :check_authorized
def check_authorized
redirect_to root_path unless can? :admin, :all
end
end
class SomeadminController < Admin::ApplicationController
def some_action
# do_stuff
end
end
Другие советы
А Административные пространства имен Страница Wiki для Cancan перечисляет несколько решений этой проблемы.
- Как предложил @mark, есть базовый контроллер для администраторов, который проверяет разрешение на каждое действие.
- Возможно, вам вообще не нужно использовать Cancan для этого, если все, что вам нужно, это проверить, что у пользователей есть
admin
флаг.
- Возможно, вам вообще не нужно использовать Cancan для этого, если все, что вам нужно, это проверить, что у пользователей есть
- Для обработки администраторов иначе друг друга (в отличие от не только обычных пользователей), рассмотрите отдельное
AdminAbility
Класс (это немного не по теме, но может оказаться актуальным).
Теперь Rails_admin имеет полную поддержку в Cancan, вы можете найти его на его официальном веб -сайте, есть страница вики для этой темы:
Не связан с StackOverflow