J'utilise Devise pour l'authentification dans mon application.
Comment interdire à certains utilisateurs de se connecter - sorte de désactiver un utilisateur?
J'utilise Devise pour l'authentification dans mon application.
Comment interdire à certains utilisateurs de se connecter - sorte de désactiver un utilisateur?
Réponses:
Fais-le comme ça:
Créez une colonne appelée is_active
pour le User
modèle.
Ajoutez ensuite le code ci-dessous au User
modèle:
class User < ActiveRecord::Base
#this method is called by devise to check for "active" state of the model
def active_for_authentication?
#remember to call the super
#then put our own check to determine "active" state using
#our own "is_active" column
super and self.is_active?
end
end
METTRE À JOUR
Comme le note Matt Huggins, la méthode s'appelle désormais active_for_authentication?
( Documentation )
active_for_authentication?
lieu de juste active?
.
the method is now called active_for_authentication?
signifie que le nom de votre méthode doit être active_for_authentication?
au lieu de active?
.
active_for_authentication?
doit être une méthode publique!
super and self.is_active?
peut être simplifié àsuper && is_active?
Ajouter une colonne au User
modèle: allowed_to_log_in
.
Ajoutez ensuite ceci à /app/models/user.rb
:
def active_for_authentication?
super and self.allowed_to_log_in?
end
Si vous souhaitez informer l'utilisateur avec un message personnalisé, vous pouvez également l'ajouter:
def inactive_message
"You are not allowed to log in."
end
Je pense que c'est assez important car le message standard de Devise dit:
"Votre compte n'est pas encore activé."
C'est déroutant pour les utilisateurs et la vraie raison est que vous leur avez "interdit" de se connecter.
Vous voulez faire une autorisation, pas une authentification. Cependant, Devise ne fait que l'authentification.
C'est-à-dire que la conception vous indique seulement qu'un utilisateur est celui qu'il prétend être.
Vous avez besoin d'autre chose pour lui interdire d'utiliser le site.
L'autorisation est un sujet populaire et il existe toute une liste de gemmes qui peuvent vous aider:
http://ruby-toolbox.com/categories/rails_authorization.html
Faites votre choix.
On dirait que vous pourriez être intéressé par cancan