J'utilise Devise pour l'authentification dans mon application.
Comment interdire à certains utilisateurs de se connecter - sorte de désactiver un utilisateur?
ruby-on-rails
devise
Dimitar Vouldjeff
la source
la source
Réponses:
Fais-le comme ça:
Créez une colonne appelée
is_active
pour leUser
modèle.Ajoutez ensuite le code ci-dessous au
User
modèle:METTRE À JOUR
Comme le note Matt Huggins, la méthode s'appelle désormais
active_for_authentication?
( Documentation )la source
active_for_authentication?
lieu de justeactive?
.the method is now called active_for_authentication?
signifie que le nom de votre méthode doit êtreactive_for_authentication?
au lieu deactive?
.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
:Si vous souhaitez informer l'utilisateur avec un message personnalisé, vous pouvez également l'ajouter:
Je pense que c'est assez important car le message standard de Devise dit:
C'est déroutant pour les utilisateurs et la vraie raison est que vous leur avez "interdit" de se connecter.
la source
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.
la source
On dirait que vous pourriez être intéressé par cancan
la source