Voici la procédure à suivre si vous avez déjà installé ActiveAdmin avec les paramètres par défaut, et que vous voulez authentifier les utilisateurs avec User.is_admin
sur votre modèle existant, et supprimez la table admin_user :
Annulez les migrations des utilisateurs admins (si vous n'avez pas utilisé la fonction --skip-users
lors de l'installation d'Active Admin) :
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
Ensuite, supprimez ces 3 fichiers.
Dans le routage, supprimez la ligne devise_for :admin_users, ActiveAdmin::Devise.config
Dans application_controller.rb, ajoutez :
def authenticate_admin!
if current_user && current_user.is_admin
# fine
else
redirect_to new_user_session_path
end
end
Dans 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.
Pour configurer l'appareil afin qu'il se déconnecte via :get
, ajouter dans devise.rb :
config.sign_out_via = :get
# And for every occurrence of destroy_user_session_path, remove the option method: delete.
Créer la migration is_admin :
rails g migration add_is_admin_to_user is_admin:boolean
Modifiez la migration comme suit :
class AddIsAdminToUser < ActiveRecord::Migration
def change
add_column :users, :is_admin, :boolean, default: false
end
end
Et migrer :
rake db:migrate
Si vous êtes dans rails 4, n'oubliez pas d'ajouter is_admin dans permit_params. Dans app/admin/user.rb :
permit_params ....., :is_admin
Ajouter des droits aux utilisateurs admins, dans une console :
u = User.find(42); u.is_admin = true; u.save
Profitez de