「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)動作確認
ユーザー登録後、ナビゲーションメニューのログインリンクがログアウトに変更されていて、ログイン済みである事が認識されました。