Railsを使って管理者ページを作っている途中なのですが、管理者としてログインしたユーザ以外はサイトの管理ページにアクセスできないようにしたいのですが、このような処理を実装するには、どうすればできますでしょうか?
どなたか教えてください。宜しくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
長い記事ですが、ある操作を管理者だけに制限する方法が以下に示されています。
Ruby on Rails チュートリアル 実例を使ってRailsを学ぼう から引用。
...
リスト9.46 destroyアクションから管理者へのアクセスを制限するbefore_action。
class UsersController < ApplicationController
before_action :signed_in_user, only: [:index, :edit, :update, :destroy]
before_action :correct_user, only: [:edit, :update]
before_action :admin_user, only: :destroy
.
.
.
private
.
.
.
def admin_user
redirect_to(root_path) unless current_user.admin?
end
end
この例では、自前で login/logout の処理を実装する方法が、もっと前の章で実装されています。
そして current_user.admin? メソッドは、管理者としてログインしているかを調べることができるようになっています。
before_action :admin_user, only: :destroy の行は、destroy のアクションに実行前に admin_user() を実行することを指示しています。
つまり、destory 操作は 管理者だけが実行できるようにしているのです。
login/logout 処理は devise といった gem を使って実装することもできます。
その場合は、admin_user() の実装を変更することで対応できます。
さらに言えば、管理者画面を作成するための gem もあります。
RailsAdmin | Railsで管理画面を自動生成
これらの情報をスタート地点として、自分が実装したい機能 / どの程度の手間をかけるかとの兼ね合いから 実装方針を決めるとよいと思います。
投稿2014/08/31 12:00
総合スコア22324
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/09/04 04:35