Rails アジャイル本 第11章 タスクF:ユーザ管理(Initial Login)

ユーザが1人も登録されていない場合に、フリーアクセスできるようにする。
アクセス制限のフィルタリング(authorize)時にユーザ数を確認して処理する。
ユーザ数が 0 ならばメッセージを表示させ、サイドバーに管理機能へのリンクを表示させる。

app/controllers/application_controller.rb

def authorize
  if User.count.zero?
      flash[:notice] = 'Make the first user'
  else
    unless User.find_by_id(session[:user_id])
      session[:original_uri] = request.request_uri
      flash[:notice] = 'Please login'
      redirect_to :controller => 'admin', :action => 'login'
    end
  end
end

app/views/layouts/store.html.erb

<% if session[:user_id] or User.count.zero? %>
  <br />
  <%= link_to 'Order', :controller => 'orders' %><br />
  <%= link_to 'Product', :controller => 'products' %><br />
  <%= link_to 'User', :controller => 'users' %><br />
  <br />
  <%= link_to 'Logout', :controller => 'admin', :action => 'logout' %>
<% end %>

テストする際に、セッション情報が残っている場合、削除しておく。

$ rake db:sessions:clear
RailsによるアジャイルWebアプリケーション開発
Sam Ruby David Heinemeier Hansson Dave Thomas
オーム社
売り上げランキング: 29946
«
»