config/initializers/active_admin.rb
में आप इस तरह के config है:
config.authentication_method = :authenticate_admin_user!
इसलिए यदि आप एक विधि नामित authenticate_admin_user बनाने! ApplicationController में, ActiveAdmin जांच करेगा कि क्या उपयोगकर्ता व्यवस्थापक पृष्ठों पर जा सकता है या नहीं। इस तरह:
# restrict access to admin module for non-admin users
def authenticate_admin_user!
raise SecurityError unless current_user.try(:admin?)
end
और ApplicationController में है कि अपवाद से बचाव (या आप वास्तव में authenticate_admin_user!
विधि के अंदर अनुप्रेषित कर सकते हैं)
rescue_from SecurityError do |exception|
redirect_to root_url
end
और एक और छोटी बात, अगर आप admin_users की जरूरत नहीं है, तो यह config/initializers/active_admin.rb
में इस लाइन को बदलने के लिए अच्छा होगा:
config.current_user_method = :current_user
और वसीयत के साथ डिफ़ॉल्ट पथ व्यवस्थापक के लिए अलग-अलग बनाने के लिए चाहते हो सकता है/गैर-व्यवस्थापक उपयोगकर्ताओं, आप नियंत्रक में after_sign_in_path_for
विधि परिभाषित कर सकते हैं तो
# path for redirection after user sign_in, depending on user role
def after_sign_in_path_for(user)
user.admin? ? admin_dashboard_path : root_path
end
यह एक अच्छा समाधान की तरह लगता है, bu current_user एप्लिकेशन नियंत्रक के भीतर अनुपलब्ध प्रतीत होता है ... क्या मैं इसे कहीं और नहीं रख सकता? –
मिमी नियंत्रक वास्तव में वह स्थान है जहां इसका सबसे अधिक उपयोग किया जाता है। तो आपके पास क्या समस्या है, यह शून्य या NoMethodError देता है? – alony
यह शून्य लौटाता है; 'अपरिभाषित विधि 'व्यवस्थापक?' शून्य के लिए: नील क्लास '। मैंने .admin को परिभाषित किया है? विधि, तो यह नहीं है। मुझे UserControlller में उपलब्ध नहीं होने वाले current_user के कई मामले मिलते हैं, ऐसा लगता है कि आपको इसे वहां से प्राप्त नहीं करना चाहिए। –