Cześć.
Przychodzę do Was z kolejnym pytaniem. Jestem junior react developerem i na potrzeby własnego projektu postanowiłem zacząć uczyć się back-endu. Tworzę API w nest.js oraz front-end w react oraz dla mobilki w react native.
Krótkie wprowadzenie:
- rejestracja / logowanie w nest.js przy pomocy biblioteki passport.js
- obiekt zalogowanego użytkownika trafia to storage reduxowego
- w obiekcie usera zadeklarowana jest właściwość: ROLE (USER / ADMIN)
Do rzeczy:
Mam funkcję back-endową, która edytuje danego usera. Przyjmuje jako parametr edytowanego usera wysłanego z frontu. W przypadku gdy zwykły użytkownik wchodzi w swój panel i edytuje swoje dane nie ma problemu, jednak ta sama funkcja służy administratorowi do edycji danych innych użytkowników. Zastanawia mnie, w którym miejscu dokonać sprawdzenia, czy dany użytkownik jest np. adminem (jeśli chce edytować innego usera). Czy wystarczy zablokować widok po stronie reacta na bazie danych dostępnych w storagu po zalogowaniu, czy też dokonać dodatkowego sprawdzenia w tej funkcji back-endowej, przesyłając zapytanie do bazy. Chodzi o to, że danymi po stronie frontu łatwo manipulować. Nie wiem w jakim stopniu przechowywanie danych w storagu po stronie frontu jest bezpieczne i czy użytkownik mógłby w jakiś sposób nimi manipulować, przez co sprawdzenie, czy użytkownik jest user / admin po stronie frontu byłoby niewystarczające, co też jest bezsensu bo w takiej sytuacji w każdym widoku, który dostępny jest tylko dla admina musiałbym wysyłać zapytanie do bazy i oczekiwać na zwrócenie informacji o tym, czy użytkownik posiada uprawnienia.
Nie wiem czy to przedstawiłem wystarczająco czytelnie :D Mam nadzieję, że uda Wam się rozszyfrować moje myśli i poradzicie coś na to :D
Pozdrawiam.