[inny][Laravel] Uprawnienia w RestAPI |
[inny][Laravel] Uprawnienia w RestAPI |
4.07.2019, 14:05:42
Post
#1
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 32 Dołączył: 10.03.2004 Ostrzeżenie: (10%) |
Mam dany model i moim celem jest by w zależności od uprawnień użytkownika zwracać określone pole lub pozwalać na modyfikacje tylko określonych pól.
Może ktoś wyjaśnić jak to zrobić dobrze nie chodzi mi o sam kod ale o idee. Gdzie i jak i co wykorzystać. Przykład: Użytkownik może zmienić dane adresowe (miasto itd) ale nie może zmienić np. statusu swojego konta. Przy pobieraniu danych, użytkownik i admin ma pełne dane konta, ale nie zalogowany użytkownik widzi tylko część danych. Korzystam z https://github.com/dingo/api Ten post edytował Lord 4.07.2019, 14:06:11 |
|
|
19.07.2019, 11:46:38
Post
#2
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 5 Dołączył: 20.05.2019 Ostrzeżenie: (0%) |
Zależy jak bardzo rozbudowany ma być ten system uprawnień, możesz skorzystać z paczki.
Jeżeli chodzi o idee to ja bym dodał typ użytkownika do migracji users'ów i w modelu w atrybutach (https://laravel.com/docs/5.8/eloquent-mutators) sprawdzał z kim mam do czynienia przed zwróceniem pól - wszystko zależy od tego co dokładnie musisz rozwiązać. Co do przykładu to można dodać middleware (https://laravel.com/docs/5.8/middleware) do grupy routsów i w zależności od typu usera kierować do odpowiedniego panelu - admina, użytkownika etc. Ten post edytował netir 19.07.2019, 11:47:41 |
|
|
20.07.2019, 11:40:56
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) |
i w modelu w atrybutach (https://laravel.com/docs/5.8/eloquent-mutators) sprawdzał z kim mam do czynienia przed zwróceniem pól - wszystko zależy od tego co dokładnie musisz rozwiązać. Autoryzacja w getterach i setterach? Mega słabe. Nie do tego służą. Do tego czy użytkownik może edytować służy po pierwsze fillable, jako tak pierwsza linia obrony dla najważniejszych atrybutów, potem dla tych mniej istotnych najnormalniej w świecie walidacja za pomocą klasy Request - do insert/update przekazujesz przefiltrowany request, albo jeżeli chcesz komunikować o braku dostępu do danej zmiennej to robisz to krok wcześniej czyli w rules (walidacja właściwa). Ten post edytował markonix 20.07.2019, 11:43:51 -------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 20:42 |