Hej,
napisałem aplikację w tym frameworku ( Laravel 5.x) i na koniec zostawiłem dorobienie autoryzacji.
W tym momencie skorzystałem z tego co daje framework: logowanie, zakładanie usera, dodałem role, przypisuję role do usera czyli taki CRUD user + role.
Zainteresowałem się politykami i mam pytanie:
przykładowy Policy
public function canUserAccessDocument(User $user, Document $document)
{
if($user->customer_id === $document->customer_id)
{
return true;
}
elseif ($user->hasAnyRole([User::ROLE_ADMINISTRATOR, User::ROLE_SALESMANAGER])) {
return true;
}
return false;
}
zarejestrowałem ją tak
protected $policies = [
Document::class => DocumentPolicy::class,
];
i np. w kontrolerze gdy chcę otworzyć dokument
$this->authorize('canUserAccessDocument', $document);
pytanie czy i jak mogę tego użyć w widoku aby np. pokazać ukrywać linki, przyciski. Jest @can ale moja polityka oczekuje $document. Jak to zrobić.
Dodatkowo dlaczego definiując Gate
public function boot()
{
$this->registerPolicies();
Gate::define('add-document', function ($user) {
return false;
});
}
i we widoku używając np.
@can('add-document')
Dodaj Pozycję
@endcan
nie ukrywa "dodaj pozycje"?
moje Laravelowe policy w głowie są nie poukładane. co robię źle? Generalnie chciałbym napisać kilka polityk ( odnoszących się do encji i po to one są ) ale też zapewne kilka Gate w których tylko coś chce sprawdzić i np. ukryć przycisk. Zapewne potrzebuję misz masz polityk i gejtów/