ruby-on-rails - sesiones - gema devise
Cómo limitar el acceso al administrador activo a los usuarios administradores (2)
En config/initializers/active_admin.rb
tiene dicha configuración:
config.authentication_method = :authenticate_admin_user!
así que si creas un método llamado authenticate_admin_user! en el ApplicationController, entonces ActiveAdmin verificará si el usuario puede ir a las páginas de administración o no. Me gusta esto:
# restrict access to admin module for non-admin users
def authenticate_admin_user!
raise SecurityError unless current_user.try(:admin?)
end
y rescate de esa excepción en ApplicationController (o puede redirigir dentro del método authenticate_admin_user!
)
rescue_from SecurityError do |exception|
redirect_to root_url
end
Y una cosa más pequeña, si no tiene admin_users, sería bueno cambiar esta línea en config/initializers/active_admin.rb
:
config.current_user_method = :current_user
Y con el dispositivo, es posible que desee que la ruta predeterminada sea diferente para los usuarios admin / non-admin, de modo que pueda definir el método after_sign_in_path_for
en el controlador
# 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
Quiero que solo mis usuarios que tienen su atributo is_admin
establecido en true para poder acceder a mi administrador activo.
¿Cómo debería hacer esto?
Los usuarios "normales" solo deben poder iniciar sesión en el sitio, no al administrador activo.