Je viens de terminer la configuration de Devise sur une seule application, en utilisant un seul modèle d'utilisateur avec deux étendues, donc je peux avoir un /admin/login
ainsi qu'un chemin /users/login
régulier. Cela fonctionne assez bien, ma config/routes.rb ressemble à ceci:CanCan et Devise, restriction de connexion basée sur le rôle
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
Cela fonctionne assez bien et dandy, je peux connecter à chaque côté de l'application sans affecter l'autre. C'est-à-dire que les noms de session sont séparés et que la connexion à l'un ne vous connecte pas à l'autre.
Maintenant, j'ai configuré CanCan avec mon modèle Roles
, et un modèle Ability
, et les ai définis dans ma base de données et fonctionnant. Question est, je veux être en mesure de remplir le formulaire sur admin/login
, et recevez un message d'erreur parce que mon rôle ne me permet pas de se connecter dans cette zone. Comment puis-je accomplir cela?
Quelque part votre application demande cancan pour une permission basée sur le rôle. Où avez-vous cela? Si vous utilisez un débogueur, vous pouvez placer une trace sur le modèle Capacité et ensuite voir la trace de qui l'a appelée. Vous avez un filtre quelque part. – Amala