5

Mam prawie takie same problemy, jak Victor Martin (możesz zobaczyć pytania tutaj).Declarative authorization and if_attribute not working

Mam deklaratywną autoryzację działającą prawie we wszystkim, co nie wymaga użycia warunków. Na przykład.

has_permission_on :users, :to => [:edit, :update, :destroy] do 
if_attribute :user => is { current_user } 
end 

Czy są jakieś typowe pułapki z Deklaracyjnym zezwoleniem? Używam authlogic i podejrzewam, że źródłem problemu może być metoda "current_user" w kontrolerze aplikacji.

+0

I skończył przy użyciu kankana dla authorizaiton - Gorąco polecam to – digitalWestie

Odpowiedz

4

Należy zauważyć, że jeśli używasz "filter_access_to" w kontrolerach, upewnij się, że masz ": atrybut_check => true". Bez tego warunkowe deklaracje "if_attribute" nic nie dają.

Więcej szczegółów na temat tego in the Declarative Authorization docs

1

trzeba dodać do swojej ApplicationController jeśli jeszcze go nie masz:

before_filter :set_current_user 
protected 
def set_current_user 
    Authorization.current_user = current_user 
end 

Zmodyfikowane zasady będzie wyglądać następująco:

has_permission_on :users, :to => [:edit, :update, :destroy] do 
    if_attribute :user => is { user } 
end 

O ile wiem, nie declarative_authorization wywołaj dowolne metody na crontroller i nie wiesz, co oznacza current_user w twoim przykładzie, ale daje ci instancję Authorization.current_user o nazwie user, której możesz użyć w swoim pliku authorization_rules.rb.

+0

OK, próbowałem za pomocą 'user' zamiast 'current_user'. Teraz zrobiłem, że mam prawie wszystkie powyższe, ale nadal nie działa. :/ – digitalWestie

+0

Czy pojawiają się błędy lub po prostu "odmowa zgody"? Co mówi twój dziennik? –