2012-02-12 12 views
9

के साथ ActiveAdmin उपयोगकर्ताओं को विलय करना मैंने अपनी परियोजना में सक्रिय एडमिन स्थापित किया है और प्रमाणीकरण के लिए डिफ़ॉल्ट admin_users मॉडल का उपयोग किया है। मैंने बाद में एक अलग उपयोगकर्ता मॉडल स्थापित करने के लिए डेविस का उपयोग किया है और महसूस किया है कि यह संभवतः दो तालिकाओं को मर्ज करने के लिए बहुत अधिक स्मार्ट होगा, जैसे कि व्यवस्थापक के पास Activeadmin और साइट के सामने के अंत में दोनों प्रशासनिक क्रियाएं हो सकती हैं। व्यवस्थापक व्यवस्थापक को ध्वजांकित करने के लिए शायद एक कॉलम के साथ उपयोगकर्ता मॉडल का उपयोग करने के लिए मैं ActiveAdmin को कैसे कॉन्फ़िगर कर सकता हूं (उदाहरण के लिए is_admin या व्यवस्थापक और मॉडरेटर बनाने के लिए अनुमति स्तर)?मौजूदा उपयोगकर्ता मॉडल

Rails 3.1 
ActiveAdmin 0.3.3 
Devise 1.4.9 

उत्तर

9

सक्रियडमिन के साथ मौजूदा "उपयोगकर्ता" मॉडल का उपयोग करके इसे कैसे करें, इसका उत्तर कोड वास्तव में वास्तव में आसान है। एप्लिकेशन कंट्रोलर में:

class ApplicationController < ActionController::Base 
    def authenticate_admin_user! #use predefined method name 
     redirect_to '/' and return if user_signed_in? && !current_user.is_admin? 
     authenticate_user! 
    end 
    def current_admin_user #use predefined method name 
     return nil if user_signed_in? && !current_user.is_admin? 
     current_user 
    end 
end 

और केवल डेविस पहले से प्रमाणीकरण के लिए सेट अप किया गया है इसका उपयोग करें। redirect_to वह जगह है जहां आप उन उपयोगकर्ताओं को भेजना चाहते हैं, जिन्होंने साइन इन किया है और व्यवस्थापकीय विशेषाधिकार नहीं हैं।

4

ActiveAdmin आपको define your own authentication methods देता है। आप अपने उपयोगकर्ता टेबल को एक अतिरिक्त व्यवस्थापक कॉलम के लिए माइग्रेट कर सकते हैं और मौजूदा व्यवस्थापक को इस तरह चिह्नित कर सकते हैं, फिर config/initializers/active_admin.rb में अपनी प्रमाणीकरण विधियां (निर्दिष्ट के रूप में) सेट करें।

+0

+1 क्योंकि मुझे विश्वास है कि आप मुझे सही जवाब दे रहे हैं। मुझे लगता है कि मैं 'application_controller' में नई विधि का निर्माण कर रहा हूं? लेकिन मौजूदा डेविस प्रमाणीकरण को एकीकृत करने के लिए मुझे वहां से मौजूदा कार्यों को ओवरराइड किए बिना वहां से क्या करना है? –

+0

यदि मौजूदा डेविस विधियां काम करती हैं, तो आप उन्हें ActiveAdmin के प्रतीक के रूप में पास कर सकते हैं। अन्यथा आप उन्हें ओवरराइड कर सकते हैं या नए तरीकों को परिभाषित कर सकते हैं कहीं भी यह आपके आवेदन के लिए समझ में आता है ('एप्लिकेशन कंट्रोलर' एक बहुत ही आम जगह है)। – coreyward

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