2013-03-04 7 views
6

Ich benutze Rails Admin und Devise für Admin-und Benutzermodell. Ich habe dem Benutzermodell eine Spalte "admin" hinzugefügt, um seine Identität anzuzeigen. In der config/routes.rb mounte ich/admin für RailsAdmin: EngineAuthentifizierung mit Devise und Rails Admin für bestimmte Routen

Ich möchte nur current_user.admin Benutzer Zugriff auf/admin, sonst Benutzer auf die Startseite umleiten.

Wie kann ich dies im saubersten Code implementieren?

Antwort

15

auf Ihrem Admin-Controller:

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

auf Ihrer Anwendungssteuerung:

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 

Sorry, hätte nicht bemerkt, es mit Schienen Admin war, können Sie tun:

# 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

Vielen Dank. Aber wie kann ich die Standard-Rails_admin-Engine überschreiben? Es gibt keinen Admincontroller, den ich unterklassen kann. – bobzsj87

+0

Ich aktualisierte die Antwort für Schienen Admin Engine – rorra

+0

Großartig! Ich danke dir sehr! – bobzsj87

Verwandte Themen