Tôi đang cố gắng triển khai switch_user đá quý trong ứng dụng đường ray hiện có của tôi 3.0.9. Có hai mô hình trên ứng dụng của tôi, họ làĐăng nhập vào tài khoản của người dùng khác bằng Devise + Active Admin + Người dùng chuyển đổi
- tài - cho các tài khoản khách hàng của tôi và nó has_oneTài khoản
- AdminUser - Điều này đã được tạo ra bởi ActiveAdmin
Tôi đã bật xác thực xác minh cho Users
và ActiveAdmin cũng hoạt động khá tốt với AdminUser
. Giờ đây, từ giao diện Quản trị viên hoạt động của tôi, tôi muốn chọn Tài khoản và đăng nhập vào các tài khoản đó giống như chủ sở hữu tài khoản. Chuyển đổi người dùng đang làm việc tốt nhưng vấn đề là bất cứ ai có thể chỉ cần đăng nhập vào tài khoản người dùng ngay bây giờ nếu họ biết các url.
http://localhost:3000/switch_user?scope_identifier=user_1
Tất cả tôi cần là chỉ cho phép một AdminUser (nghĩa là nếu có một phiên ActiveAdmin) để truy cập vào tài khoản của người dùng.
Đây là cách /config/initializers/switch_user.rb của tôi trông giống như
SwitchUser.setup do |config|
config.controller_guard = lambda { |current_user, request| current_admin_user.nil?}
config.redirect_path = lambda { |request, params| "/dashboard" }
end
Nhưng tôi nhận được lỗi này
NameError in SwitchUserController#set_current_user
undefined local variable or method `current_admin_user' for main:Object
Liệu có cách nào tôi có thể truy cập vào tài quản trị hoạt động?
Mã cho /config/initializers/active_admin.rb
ActiveAdmin.setup do |config|
config.site_title = "MyAppName"
config.authentication_method = :authenticate_admin_user!
config.current_user_method = :current_admin_user
end
btw trong điều khiển ứng dụng của tôi, tôi đã không được tạo ra bất kỳ phương pháp cho authenticate_admin_user
, current_admin_user
quản trị tích cực hoạt động tốt mà không có họ.
Tôi đã thử gần như tất cả mọi thứ tôi có thể nghĩ nhưng vẫn không có may mắn. bất cứ ai khác xin vui lòng? – randika