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