Aquí está el proceso si ya ha instalado ActiveAdmin con la configuración predeterminada, y que desea autenticar a los usuarios con User.is_admin
campo en el modelo existente, y quitar admin_user tabla:
migraciones admin_user rollback (si no se ha utilizado --skip-users
al instalar administración activa):
rake db:migrate:down VERSION=20141205110842 # create_active_admin_comments.rb
rake db:migrate:down VERSION=20141205110831 # add_devise_to_admin_users.rb
rake db:migrate:down VERSION=20141205110820 # devise_create_admin_users.rb
Luego quitar esos 3 archivos.
En el enrutamiento, quitar la línea devise_for :admin_users, ActiveAdmin::Devise.config
En application_controller.rb, añadir:
def authenticate_admin!
if current_user && current_user.is_admin
# fine
else
redirect_to new_user_session_path
end
end
En active_admin.rb:
config.authentication_method = :authenticate_admin!
config.current_user_method = :current_user
config.logout_link_path = :destroy_user_session_path
config.allow_comments = false
config.logout_link_method = :get # couldn't get active_admin to sign out via :delete. So I configure devise to sign out via :get.
Para configurar legado para cerrar la sesión a través de :get
, agregar en devise.rb:
config.sign_out_via = :get
# And for every occurrence of destroy_user_session_path, remove the option method: delete.
Crear is_admin la migración:
rails g migration add_is_admin_to_user is_admin:boolean
Editar la migración de esta manera:
class AddIsAdminToUser < ActiveRecord::Migration
def change
add_column :users, :is_admin, :boolean, default: false
end
end
y migrar:
rake db:migrate
Si en los carriles 4, no se olvide de añadir en is_admin permit_params. En aplicación/admin/user.rb:
permit_params ....., :is_admin
Añadir derechos a los usuarios admin, en una consola:
u = User.find(42); u.is_admin = true; u.save
Disfrute
donde es exactamente lo que coloca el authenticate_admin! ¿método? He intentado con el controlador de la aplicación pero obtengo: método indefinido 'authenticate_admin_user! ' para # –
Lo ubicaría en el archivo config/initializers/active_admin.rb. – jackyalcine
O en el controlador de la aplicación. – domachine