2015-04-07 29 views
5

W aplikacji Rails 4 z gemiem activeadmin (bieżący oddział główny) używam Pundit do autoryzacji. Działa dobrze dla zasobów źródłowych, ale nie udaje mi się sprawić, by działał na stronach.Autoryzacja pundit na niestandardowej stronie activeadmin

Zważywszy na przykład:

ActiveAdmin.register_page "Home" do 
    content do 
     para "some text" 
    end 
end 

Jak bym upoważnia ją do konkretnego użytkownika?

Czytając readme pundit Próbowałem z następującego kodu, ale to nie działa

class HomePolicy < Struct.new(:user, :home) 
    def index? 
    true 
    end 

    def show? 
    true 
    end 
end 

jakiś pomysł?

Odpowiedz

6

Oto przykładowa zasada, której używam w panelu. Umieściłem go pod policies/active_admin/page_policy.rb. Może to może być pomocne

class ActiveAdmin::PagePolicy 
    attr_reader :user, :record 

    def initialize(user, record) 
    @user = user 
    @record = record 
    end 

    def show? 
    case record.name 
    when 'Dashboard' 
     true 
    else 
     user.admin? 
    end 
    end 
end 
+0

Dzięki, działa jak marzenie;) – Alex

+1

@Alex trzeba zanurzyć się Activeadmin kodzie, aby znaleźć rzeczy takie jak [te] (https://github.com/ activeadmin/activeadmin/blob/master/spec/support/templates/policies/active_admin/page_policy.rb) – bsvin33t