devise

2011-03-02 13 views
7

के साथ whitelisting मैं अपने रेल ऐप में उपयोगकर्ता प्रमाणीकरण को प्रबंधित करने के लिए उपयोग कर रहा हूँ। इसके लिए देवता वास्तव में महान है।devise

हालांकि मेरे पास मेरे आवेदन के लिए एक विशेष आवश्यकता है: उपयोगकर्ता को उपयोगकर्ता के रूप में पंजीकृत करने से पहले उपयोगकर्ता को श्वेतसूची में होना चाहिए।

तो एक व्यवस्थापक है जो अनुमत ईमेल की एक सूची बनाता है। उपयोगकर्ता एक ईमेल के साथ पंजीकृत होता है और यदि ईमेल श्वेतसूची तालिका में है तो वह पंजीकृत होगा। हालांकि, मेल श्वेतसूची में नहीं है, पंजीकरण को "आप अभी तक आमंत्रित नहीं हैं" जैसे संदेश से निरस्त किया जाना चाहिए।

क्या आपको पता है कि इसे कैसे तैयार किया जा सकता है?

अग्रिम धन्यवाद।

उत्तर

6

आप क्या कर सकते अपनी खुद की पंजीकरण नियंत्रक बना सकते हैं और जैसे डिवाइस एक विस्तार है:

class MyRegistrationController < Devise::RegistrationsController 
    def create 
    # do your checks 
    super 
    end 
end 

देखें: https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb और: https://github.com/plataformatec/devise/wiki/How-to:-Customize-routes-to-user-registration-pages

गुड लक!

15

मैं मॉडल सत्यापन का उपयोग करता हूं।

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 

मैं app/users/registrations_controller.rb में रखा: मैं अपने प्रयोक्ता वर्ग संभालने हूँ वसीयत विधि

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 
+0

आप त्रुटि संदेश में वास्तविक ईमेल दिखाने के लिए चाहते हैं, कैसे आप इस कोड को बदल देगा? – Magne

+0

@Magne 'error.add: ईमेल," हमारी निमंत्रण सूची पर नहीं है: # {ईमेल} "' –

2

मैं के रूप में सुझाव मेरे अपने नियंत्रक बनाने के लिए किया था है। तब मुझे app/views/users/registrations में तैयार पंजीकरण दृश्यों की प्रतिलिपि बनाना पड़ा क्योंकि डिफ़ॉल्ट दृश्यों का उपयोग नहीं किया गया था।

अब यह काम कर रहा है, धन्यवाद आपकी मदद के लिए

संबंधित मुद्दे