2011-08-02 7 views
0

2つのスコープを持つ単一のUserモデルを使用して、1つのアプリケーションでDeviseの設定を完了しましたので、/admin/loginと通常の/users/loginパスを使用できます。これはかなりうまく動作しますが、私のconfig/routes.rbをファイルには、次のようになります。これはかなり結構な作品CanCanとDevise、ロールベースのログインを制限する

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  

、私は他に影響を与えることなく、アプリケーションの各辺にログインすることができます。つまり、セッション名は別々であり、セッション名は別のセッションにログインすることはありません。

私はRolesモデルとAbilityモデルでCanCanをセットアップし、これらをデータベースに定義して動作させました。

質問:admin/loginにフォームに記入して、自分の役割でそのエリアにログインできないため、エラーメッセージが表示されるようにしたいですか。どうすればこれを達成できますか?

+0

あなたのアプリは、cancanに役割に基づいた許可を求めています。あなたはどこにいますか?デバッガを使用している場合は、Abilityモデルにトレースを入れて、それを呼び出した人のバックトレースを表示できます。あなたはどこかのフィルターを持っています。 – Amala

答えて

0

私は少しあなたの質問で混乱しています。 admin/loginでフォームに記入すると、まだログインしていない可能性があります。

この場合、current_userまたはcurrent_adminは存在しないため、CanCanにはまだ何も渡されません。

私のアプリには同様の設定があり、アプリの両面に異なるアカウントを設定しています。私のユーザーアカウントは私の管理者アカウントとは異なります。忘れて、通常のユーザーアカウントを使用して管理者側にログインしようとすると、Deviseから不明なユーザー/パスワードのエラーが表示されます。

関連する問題