認証用プラグインrestful_authentication+ユーザーテーブル拡張して管理者権限判定

でけたー
①管理者用のアクションとviewを追加
portal_controller.rb

class PortalController < ApplicationController
  # 認証が必要
  before_filter :login_required

  def index
  end
  
  def secret
    p 'secret()in..', params
    p current_user.admin
    raise 'authrize admin error!' unless current_user.admin
  end
end

view/portal/secret.html.erb

<h1>管理者の秘密のページ</h1>
<p><%= current_user.name %>さん、あなたは管理者ですね☆</p>
<p>管理者フラグ:<%= current_user.admin %></p>
<%= link_to('トップページに戻る',{:controller => "portal", :action => "index"}) %>
<%= link_to 'ログアウト', logout_url %>

②インデックスページに、管理者ページ用へのリンクを追加
view/portal/index.html.erb

<h1>Portal#index</h1>
<p>Find me in app/views/portal/index.html.erb</p>
<p><%= current_user.name %>さん、ようこそ</p>
<p>管理者フラグ:<%= current_user.admin %></p>

<%= link_to('管理者専用ページへ',{:controller => "portal", :action => "secret"}) %>

<%= link_to 'ログアウト', logout_url %>

③ユーザ登録画面で、管理者かどうかを設定できるように修正
view/user/new.html.erb

<%= error_messages_for :user %>
<% form_for :user, :url => users_path do |f| -%>
<p><label for="login">社員番号</label><br/>
<%= f.text_field :login %></p>

<p><label for="name">氏名</label><br/>
<%= f.text_field :name %></p>

<p><label for="email">Email</label><br/>
<%= f.text_field :email %></p>

<p><label for="password">Password</label><br/>
<%= f.password_field :password %></p>

<p><label for="password_confirmation">Confirm Password</label><br/>
<%= f.password_field :password_confirmation %></p>

<!-- ★追加★ -->
<p><label for="admin">管理者の場合はチェック</label><br/>   
<%= f.check_box :admin %></p>

<p><%= submit_tag 'Sign up' %></p>
<% end -%>

④管理者の場合
ログイン後の画面。管理者ページへのリンクを押すと、、

管理者ページに行けた

⑤一般ユーザの場合
ログイン後の画面。管理者ページへのリンクを押すと、、

例外発生。(余談:メッセージはちゃんとactionで設定したものになっている)

今回は、ただ例外を投げるだけの処理にしてしまったが、ユーザ情報の管理者フラグを見て
あとは任意の処理をしてやればOK(のハズ)