1. ホーム
  2. ruby-on-rails

[解決済み] Devise Admin Roleの追加【終了しました

2022-02-08 23:43:52

質問事項

devise gemでadminロールを作成する方法と、adminとしてログインしている場合のみアクセス可能で、それ以外の場合は404ページが表示されるページを作成する方法を知りたいのです。

解決方法は?

簡単な方法がありますので、ご紹介します。

deviseのユーザーにbooleanを追加するマイグレーションを作成します。

rails g migration AddsAdminColumnToUsers

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

これはモデルにマップバックして user.admin? メソッドを使用します。

ページへのアクセスのために、私はメソッドを ApplicationController というコントローラの懸念事項。 AuthenticateAdmin .

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

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

追伸:もし ApplicationController であることを確認してください。 protected メソッド

次に、各コントローラーやアクションに対して、制限をかける必要があります。

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

を送信するようにしたい。 forbidden をここで紹介します。

理由はこの質問の範囲を超えていますが、基本的には Not Found は、何かをする権限がないこととは異なります。

HTTPのステータスコードでは Unauthenticated しかし、この場合、我々は認証されており、その人はページへのアクセスを禁じられているだけです(つまり、認証されていない)。

この場合、HTTP ステータス 403 Forbidden が要求されます。