Même sur twitter et instagram, mon compte est interdit et je n'arrive pas à me connecter ... J'espère que je n'ai pas cette expérience, Cette fois, je voudrais implémenter une telle fonction.
Tout d'abord, préparez un modèle utilisateur avec l'attribut suspendu (booléen) en tant qu'utilisateur. Les utilisateurs avec cet indicateur d'arrêt true ne peuvent pas se connecter et Nous allons créer une fonction qui refuse l'accès à d'autres pages et vous oblige à vous déconnecter.
Tout d'abord, implémentez une méthode pour voir si le modèle utilisateur a un indicateur d'arrêt. Il semble que vous n'ayez pas à vous soucier de le préparer en tant que méthode, mais considérez l'extensibilité et créez une méthode comme modèle.
app/models/user.rb
class User < ApplicationRecord
#réduction
#Êtes-vous un utilisateur actif?
private
def active?
!suspended?
end
end
Modifiez maintenant la classe du contrôleur de base. Si l'utilisateur est connecté et que l'indicateur d'arrêt est défini J'ai supprimé la session et redirigé de force vers la première page.
app/controllers/user/base.rb
class User::Base < ApplicationController
before_action :check_account
private
def current_user
if session[:user_id]
@current_user ||= User.find_by(id: session[:user_id])
end
end
private
def check_account
#Lorsque l'utilisateur est connecté et que l'indicateur d'arrêt est défini
if current_user && !current_user.active?
#Supprimer la session
session.delete(:user_id)
flash.alert = "Le compte est devenu invalide"
#Rediriger vers la première page
redirect_to :user_root
end
end
end
En appelant la méthode check_account avec before_action pour toutes les actions Vous pouvez forcer la déconnexion d'un utilisateur avec un indicateur d'arrêt.
C'est tout pour aujourd'hui. Merci d'avoir lu jusqu'au bout.
Recommended Posts