ruby-on-rails - not - rspec rails devise
La página de perfil de usuario de Rails solo es accesible para el usuario correcto (2)
Estoy usando el dispositivo para la autenticación. En este momento, estoy configurando perfiles de usuario. Tengo todo configurado, excepto que cada página es accesible para todos (para que pueda ver los perfiles sin haber iniciado sesión). ¿Cómo lo hago para que solo el usuario correcto pueda ver su propia página de perfil?
users_controller.rb
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
end
end
routes.rb
devise_for :users
resources :users, only: [:show]
get ''users/show''
mostrar vista ...
<div class="home-page-content">
<%= @user.id %>
<h1>Users#show</h1>
<p>Find me in app/views/users/show.html.erb</p>
</div>
Cree una relación has_one belongs_to entre usuario y perfil. En su controlador, puede incluir alguna lógica que solo muestra el perfil del usuario actual.
Pundit es una joya que ayuda con la autorización - https://github.com/elabs/pundit
Este debería ayudar a detectar current_user es correcto.
class UsersController < ApplicationController
before_action :check_user
private
def check_user
if current_user != @user
redirect_to root_url, alert: "Sorry, This Profile belongs to someone else !"
end
end
end