ログイン後にログインページとサインアップのページに遷移できないようにする
ログインしているユーザーがログイン画面、またユーザー新規登録画面にアクセスできるようになっていたので修正していこうと思います。
どうやって直していくのか少し考えます、、、
- ビューファイルでも、モデルでもなくコントローラをいじらないといけない。
- user_sessions#newとusers#newが該当のアクションになる
- 現在のユーザーが判別できたらリダイレクトする仕様にする
この感じの流れで解決できそうだと思ったので実装していきます。
まず最初にログイン画面(user_sessions#new)のアクションを修正していきます。current_userがログインしているならリダイレクトするというコードを記入しました。このコードはlogged_in?
メソッドがないというメソッドエラーになります。Sorceryのメソッドですが、ビューでのみ使えるメソッドのようです。
class UserSessionsController < ApplicationController 省略 def new if current_user.logged_in? redirect_to user_diaries_path(current_user.name), danger: t('.fail') end end 省略 end
もしcurrent_userならリダイレクトするというコードを書いたらどうだろうと思ったので実装していきます。このコードで思っていた実装ができました!!
class UserSessionsController < ApplicationController 省略 def new if current_user redirect_to user_diaries_path(current_user.name), danger: t('.fail') end end 省略 end
ログイン画面へのアクセス制限ができたので、次はユーザー登録画面のアクセス制限を行います。コードは同じように書いていきたいと思います。こちらも実装できました!
class UsersController < ApplicationController 省略 def new @user = User.new if current_user redirect_to user_diaries_path(current_user.name), danger: t('.fail') end end 省略 end
あとはi18nの設定を追加して実装は終わりです。