Step by Step Ruby on Rails

Ruby on Railsで実際にWebサイトを構築する手順をまとめています。

Ruby on Rails Tutorial ユーザー登録後自動ログイン

「Ruby on Rails Tutorial」のサンプルアプリをAngularJSとBootstrap3を使う形にして作成します。ユーザー登録後に自動でログイン済みにするように修整します。

1)Usersコントローラのcreateアクションを修整

下記のようにユーザーをデータベースに保存後、トークンの生成、クッキーの設定、トークンの保存処理を行ってからクライアントにリターンします。

$ vi app/controllers/users_controller.rb

  def create
    @user = User.new(user_params)
    if @user.save
      remember_token = User.new_remember_token
      cookies.permanent[:remember_token] = remember_token
      @user.update_attribute(:remember_token, User.encrypt(remember_token))
      render json: @user, status: :created, location: @user
    else
      render json: @user.errors, status: :unprocessable_entity
    end
  end

2)AngularJSコントローラを修整

ユーザー登録のAngularJSコントローラを修整します。サーバーからの応答結果からユーザー情報を取得し、前回定義したflashService.setUserでログイン済みユーザー情報をセットします。

$ vi app/controllers/users_controller.rb

myModule.controller("UsersNewCtrl", function($scope, userResource, $location, flashService) {
   :
  $scope.submit = function() {
    function success(response) {
   :
      var user_info = { 
        user: response
     };
      flashService.setUser(user_info);
      $location.path("/users/" + response.id);
    }

3)動作確認

ユーザー登録後、ナビゲーションメニューのログインリンクがログアウトに変更されていて、ログイン済みである事が認識されました。