Bien que la fonction de connexion était disponible jusqu'à la dernière fois, il reste un défaut selon lequel il n'est pas possible de savoir quel utilisateur est connecté dans l'état actuel, et la page de liste est accessible sans connexion. Faites avec
Méthode --current_room. Ajouter une méthode d'assistance pour afficher l'utilisateur actuellement connecté
app/helpers/sessions_helper.rb
#S'il y a un utilisateur connecté, remplacez l'utilisateur
def current_room
if session[:room_id]
@current_room ||= Room.find_by(id: session[:room_id])
end
end
app/helpers/sessions_helper.rb
#Déterminez si vous êtes connecté
def logged_in?
!current_room.nil?
end
app/helpers/sessions_helper.rb
def log_out
session.delete(:room_id)
@current_room = nil
end
app/controllers/sessions_controller.rb
def destroy
log_out
redirect_to login_path
end
Page contrôlée par connexion
~
<div class="header-title">
<div class="header-title">Liste de réception:
<%= current_room.name %>
<%= link_to "Logout", logout_path, method: :delete %>
</div>
</div>
~
app/controllers/receptions_controller.rb
class ReceptionsController < ApplicationController
before_action :logged_in_room, only: [:index]
~
private
def logged_in_room
unless logged_in?
flash[:alert] = "une connexion est nécessaire"
redirect_to login_path
end
end
~
Recommended Posts