Wpis z mikrobloga

Głowię się nad rozwiązaniem systemu uprawnień, załóżmy, że w aplikacji mamy model Project i Task, które są w relacji jeden do wielu. Nasz użytkownik ma nadane uprawnienie "read" dla Project ale nie ma uprawnienia do Task, endpoint odpowiedzialny za zwracanie modelu Project domyślnie zwraca relację Task.

Jaki waszym zdaniem jest najlepszy sposób na sprawdzenie czy user ma dostęp do relacji Task i jeżeli ma to wtedy ją zwróci? Zwracać tylko model Project z endpointu i przygotować osobny endpoint do Task?

Korzystam z paczki spatie/permissions.

#laravel #php #programowanie
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Cybe: jeżeli dobrze pamiętam to możesz pisać własne policies i w nich zawierać tą logikę, a do samych relacji używać po prostu scopes
  • Odpowiedz
@Cybe: można na etapie query buldera wrzucić with('tasks') w when który wpierw sprawdzi czy user ma uprawnienie task read. Alternatywnie można to sprawdzać na etapie API Resource/DTO i jeśli nie ma to nie zwracać relacji.
  • Odpowiedz