7
votes

Whitelisting avec le congé

J'utilise le congé pour gérer l'authentification de l'utilisateur dans mon application Rails. Le congé est vraiment génial pour cela.

Cependant, j'ai une exigence particulière pour mon application: un utilisateur doit être blanchi avant de pouvoir s'inscrire en tant qu'utilisateur.

Donc, il existe un administrateur qui crée une liste d'emails autorisés. Un utilisateur registre avec un courrier électronique et si le courrier électronique est dans la table blanche, il sera enregistré. Si toutefois, le courrier n'est pas dans la liste blanche, l'inscription doit être abandonnée avec un message comme "Vous n'êtes pas encore invité".

Avez-vous une idée de savoir comment cela pourrait être résolu avec le congé?

Merci d'avance.


0 commentaires

3 Réponses :


6
votes

Ce que vous pouvez faire est de créer votre propre contrôleur d'enregistrements et d'étendre le périphérique similaire à: xxx

voir: https://github.com/plataformatec/Devise/blob/Master/app/Controls/devise/registrations_controller.rb Et: https://github.com/plataformatec/devise / wiki / comment: -Customize-routes-to-utilisateur-inscription-pages

bonne chance!


0 commentaires

16
votes

J'utiliserais simplement la validation du modèle. Je suppose que votre classe d'utilisateurs a la méthode Devise

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable #etc

  before_validation :whitelisted

  def whitelisted
    unless celebrityemail.include? email
      errors.add :email, "#{email} is not on our invitation list"  
    end
  end 

end


2 commentaires

Si vous souhaitez afficher l'email actuel dans le message d'erreur, comment modifieriez-vous ce code?


@Magne errors.add: email, "ne figure pas sur notre liste d'invitation: # {email}"



2
votes

J'ai créé mon propre contrôleur comme suggéré:

class Users::RegistrationsController < Devise::RegistrationsController
    def create
        email = params[:user][:email]
        if Admin::Whitelist.find_by_email(email) != nil
            super
        else
            build_resource

            set_flash_message :error, "You are not permitted to sign up yet. If you have already payed your registration fee, try again later."
            render_with_scope :new
        end
    end
end


0 commentaires