Załózmy, że mam taką metodę w kontrolerze
// GET Mapping
public function edit($documentId)
{
$document = $this->documentRepository->getOrFail($documentId);
$details = $document->details;
$locations = $this->locationRepository
->getBy('customer_id', $document->customer_id)
->pluck('location_name', 'id');
$customers = $this->customerRepository
->getBy('id', Auth::user()->customer_id)
->pluck('name', 'id');
$animals = $this->animalRepository->getAll()->pluck('name', 'id');
$races = collect();
return view('document.document', compact('document', 'locations', 'customers', 'animals', 'races', 'details'));
}
i teraz mam dwa pytania:
-
Ważniejsze :) jak ograniczyć wejście do tej metody w taki sposób aby Admin mógł zawsze to zrobić a user mógł wejśc tylko do dokumentu należącego do jego firmy ( model Document ma pole customer_id, z kolei User ma customer_id )
Laravelowo CHYBA trzeba by użyć Policy ale nie rozumiem jak tego użyć. Czy ktoś z Was mógłby zarzucić kawałkiem kodu.
Aha moja struktura wygląda tak. User, Roles, User_Roles. Nie mam żadnych permissions i na razie tak ma zostać. -
Mniej ważne - czy mogłbym tą metodę jakoś ładniej zapisać? Uzyć serwisu, który by mi zwrócił $locations, $customers, $animals, $races? Czy zostawić tak jak jest? Całe "bebechy wpakować w serwis....