2013-03-04 18 views
6

Uso Rails Admin e Devise per admin e user model. Ho aggiunto una colonna "admin" al modello utente per indicare la sua identità. In config/routes.rb, monto/admin per RailsAdmin: EngineAutenticare utilizzando Devise e Rails Admin per route particolari

Voglio consentire solo agli utenti current_user.admin di accedere/admin, altrimenti, reindirizzare l'utente alla pagina iniziale.

Come posso implementarlo nel codice più pulito?

risposta

15

sui controller di admin:

class MyAdminController < ApplicationController 
    before_filter :authenticate_user! 
    before_filter :require_admin 
end 

sul controller dell'applicazione:

class ApplicationController < ActionController::Base 


    def require_admin 
    unless current_user && current_user.role == 'admin' 
     flash[:error] = "You are not an admin" 
     redirect_to root_path 
    end   
    end 
end 

Siamo spiacenti, non abbiamo notato è stato con le rotaie di amministrazione, si può fare:

# in config/initializer/rails_admin.rb 

RailsAdmin.config do |config| 
    config.authorize_with do |controller| 
    unless current_user.try(:admin?) 
     flash[:error] = "You are not an admin" 
     redirect_to root_path 
    end 
    end 
end 
+0

Grazie mille. Ma come posso sovrascrivere il motore Rails_admin predefinito? Non c'è un controllore che posso creare una sottoclasse. – bobzsj87

+0

Ho aggiornato la risposta per il motore di amministrazione dei binari – rorra

+0

Great! Grazie mille! – bobzsj87

Problemi correlati