Ruby on Rails チュートリアル(第7版)を1周走破しましたが、個人的に気になる点があったので修正してみました。
気になる点とは、
”非ログインユーザーが、登録済みユーザーのプロフィールページにアクセスできる”点です。
(プロフィール編集ページにはアクセスできないため、問題ないのでしょうか?)
/users/(id) リクエストを送信すると、非ログインユーザーでもアクセス可能でした。
この操作を行っている箇所を探します。
users_controller.rb
def show
@user = User.find(params[:id])
redirect_to root_url and return unless @user.activated?
@microposts = @user.microposts.paginate(page: params[:page])
end
showアクションでプロフィールページが表示されています。
この前にログイン確認をしたいので、
users_controller.rb
class UsersController < ApplicationController
before_action :logged_in_user, only: [:index, :edit, :update, :destroy,
:following, :followers]
.
.
.
end
logged_in_userメソッド(ログイン確認)をshowアクション前にも行うようにします。
before_action :logged_in_user に :show を追加
users_controller.rb
class UsersController < ApplicationController
before_action :logged_in_user, only: [:index, :show, :edit, :update, :destroy,
:following, :followers]
.
.
.
end
これで非ログインユーザーが、登録済みユーザーのプロフィールページにアクセスすると、
ログインページにリダイレクトされるようになりました。