CanCan и Devise, ограничение входа в систему на основе роли - PullRequest
0 голосов
/ 02 августа 2011

Я только что закончил настройку Devise для одного приложения, используя одну модель User с двумя областями действия, поэтому у меня может быть /admin/login, а также обычный путь /users/login.Это работает довольно хорошо, мой файл config / rout.rb выглядит следующим образом:

devise_for :users,
           :path_names => { :sign_in => 'login', :sign_out => 'logout' }

devise_for :admins,
           :class_name => 'User',
           :skip => [:passwords, :registrations, :confirmations, :sessions],
           :controllers => { :sessions => 'admin/sessions' } do

  get 'admin/login' => 'admin/sessions#new', :as => :new_admin_session
  post 'admin/login' => 'admin/sessions#create', :as => :admin_session
  delete 'admin/logout' => 'admin/sessions#destroy', :as => :destroy_admin_session 
end     

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

Теперь я настроил CanCan с моей моделью Roles и моделью Ability и имеюони определены в моей базе данных и работают.

Вопрос в том, что я хочу иметь возможность заполнить форму на admin/login и получить сообщение об ошибке, поскольку моя роль не позволяет мне войти в эту область.Как мне это сделать?

1 Ответ

0 голосов
/ 19 декабря 2011

Я немного смущен вашим вопросом.Если вы заполняете форму через admin / login, то, вероятно, вы еще не вошли в систему?

Если это так, то нет current_user или current_admin и, следовательно, в CanCan еще ничего не передается.*

У меня есть похожая настройка в моем приложении, и у меня разные учетные записи на каждой стороне приложения.Моя учетная запись отличается от моей учетной записи администратора.Если я забываю и пытаюсь войти в систему с правами администратора, используя мою учетную запись обычного пользователя, я просто получаю неизвестную ошибку пользователя / пароля от Devise.

...