2016-11-24 6 views
-5

devise gemで管理者ロールを作成する方法と、管理者としてログインしている場合にページを作成する方法を知りたい場合は、アクセスすることができます。そうしないと404ページが表示されます。Devise管理者ロールを追加する

+0

これは、コード例で行ったすべての試みを提供するのに役立ちます。これに対する解決策は、実際には非常に単純です(解答で解明された人のように)。しかし、コードの欠如や試行のデモンストレーションは、投票の下につながります。 – MageeWorld

+0

この質問は、コードの欠如ではなく、例。 – fbelanger

+0

[Devise on Railsベータ3で管理者を作成する](https://stackoverflow.com/questions/2708417/creating-an-admin-user-in-devise-on-rails-beta-3)の可能な複製 –

答えて

1

これを行う単純な方法がありますが、私はあなたと共有します。

あなたの工夫ユーザにブール値を追加し、移行を作成します。

rails g migration AddsAdminColumnToUsers 

def change 
    add_column :users, :admin, :boolean, default: false, null: false 
end 

これが戻ってあなたのモデルにマッピングしてuser.admin?メソッドを作成します。

ページアクセスの場合、私は以上のメソッドを作成しますが、コントローラーの関心事はAuthenticateAdminとなります。

authenticate_admin!という名前のメソッドを作成します。

def authenticate_admin! 
    authenticate_user! 
    redirect_to :somewhere, status: :forbidden unless current_user.admin? 
end 

P.S. ApplicationController内の場合も、あなたのコントローラやアクションのそれぞれについて、あなたは制限する必要がある、これはprotected方法

であることを確認してください。

before_action :authenticate_admin!, only: [:action] # `only` part if applicable 

あなたはここにforbiddenを送ることにしたいです。

理由はこの質問の範囲を超えていますが、本質的にはNot Foundは何かを行う権限がありません。

HTTPステータスコードにはUnauthenticatedがありますが、この場合は認証され、そのページにはアクセスが禁止されています(権限のないユーザー)。

このケースでは、HTTPステータス403が禁止されています。

関連する問題