J'utilise le congé pour gérer l'authentification de l'utilisateur dans mon application Rails. Le congé est vraiment génial pour cela. P>
Cependant, j'ai une exigence particulière pour mon application: un utilisateur doit être blanchi avant de pouvoir s'inscrire en tant qu'utilisateur. P>
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é". P>
Avez-vous une idée de savoir comment cela pourrait être résolu avec le congé? p>
Merci d'avance. P>
3 Réponses :
Ce que vous pouvez faire est de créer votre propre contrôleur d'enregistrements et d'étendre le périphérique similaire à: 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 p> bonne chance! p> p>
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
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}" code>
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