Metode CRUD utilizatori
Model utilizator + Bcrypt + JWT
În cadrul folderului routes, creăm fișierul user.routes.js care va conține toate metodele CRUD pentru utilizatori.
Începem prin adăugarea importurilor necesare și prin instanțierea router-ului, si ulterior prin adăugarea rutelor:
1. Creare utilizator
Descrierea rutei de creare a unui utilizator:
Scop: Creează un nou utilizator în baza de date.
Endpoint:
POST /Partea de securitate: Nu folosește
verifyToken, deci este publică (oricine poate crea un cont).Verificări efectuate:
Verifică dacă există deja un utilizator cu același email.
Dacă există, returnează 400 Bad Request cu mesajul
User already exists.
Procesul de creare:
Generează un salt cu
bcryptși criptează parola (password) trimisă în request.Creează un obiect
Userîn baza de date cu datele din request, înlocuind parola cu versiunea criptată.
Răspuns:
Elimină parola din obiectul creat (
delete user.dataValues.password).Returnează 201 Created și datele utilizatorului creat, fără parolă.
Tratament erori:
Dacă apare o eroare în procesul de creare, returnează 500 Internal Server Error cu mesajul erorii.
2. Actualizare utilizator
Descrierea rutei de actualizare a unui utilizator:
Scop: Actualizează datele unui utilizator existent.
Endpoint:
PUT /:id(unde:ideste ID-ul utilizatorului).Securitate: Folosește
verifyToken, deci doar utilizatorii autentificați pot face modificări.Verificări efectuate:
Verifică dacă
ideste un număr valid; dacă nu, returnează 400 Bad Request.Verifică dacă utilizatorul există în baza de date; dacă nu, returnează 404 Not Found.
Procesul de actualizare:
Actualizează câmpurile din request (
req.body) pentru utilizatorul găsit.Elimină parola din obiectul returnat (
delete updatedUser.dataValues.password) pentru securitate.
Răspuns:
Returnează 200 OK și datele utilizatorului actualizat, fără parolă.
Tratament erori:
Dacă apare o eroare în procesul de update, returnează 500 Internal Server Error cu mesajul erorii.
3. Ștergere utilizator
Descrierea rutei de ștergere a unui utilizator:
Scop: Șterge un utilizator existent din baza de date.
Endpoint:
DELETE /:id(unde:ideste ID-ul utilizatorului).Securitate: Folosește
verifyToken, deci doar utilizatorii autentificați pot șterge conturi.Verificări efectuate:
Verifică dacă
ideste un număr valid; dacă nu, returnează 400 Bad Request.Verifică dacă utilizatorul există în baza de date; dacă nu, returnează 404 Not Found.
Procesul de ștergere:
Șterge utilizatorul găsit folosind metoda
destroy().
Răspuns:
Returnează 200 OK cu mesajul
User successfully deleted.
Tratament erori:
Dacă apare o eroare în procesul de ștergere, returnează 500 Internal Server Error cu mesajul erorii.
4. Preluare utilizatori/utilizator pe bază de ID
Descrierea rutelor de preluare a utilizatorilor:
GET /
Scop: Returnează toți utilizatorii din baza de date.
Endpoint:
GET /Securitate: Folosește
verifyToken→ doar utilizatorii autentificați pot accesa lista.Proces:
Preia toți utilizatorii din baza de date (
User.findAll()).Exclude câmpul
passworddin răspuns pentru securitate.
Răspuns:
200 OK cu lista de utilizatori dacă totul merge bine.
500 Internal Server Error dacă apare o eroare.
GET /:id
Scop: Returnează un singur utilizator după ID.
Endpoint:
GET /:id(unde:ideste ID-ul utilizatorului)Securitate: Folosește
verifyToken→ doar utilizatorii autentificați pot accesa datele.Verificări:
Verifică dacă
ideste un număr valid; altfel returnează 400 Bad Request.Verifică dacă utilizatorul există; dacă nu, returnează 404 Not Found.
Proces:
Preia utilizatorul din baza de date (
User.findByPk()), fără parola.
Răspuns:
200 OK cu datele utilizatorului.
500 Internal Server Error dacă apare o eroare.
5. Implementare metode CRUD utilizatori la nivel de server
Ca metodele CRUD pentru utilizatori să poată fi folosite, este nevoie să ne asigurăm că serverul are la cunoștință existența acestora.
Așadar, mergem în fisierul index.js din folderul server, unde adăugăm importul router-ului de user și middlware-ul de rutare către metodele CRUD pentru utilizatori.
Middleware-ul de rutare (route middleware):
Atașează router-ul
userRoutesla ruta de bază/user.
Practic, toate rutele definite în userRoutes vor fi accesibile cu prefixul /users.
Ruta în userRoutes
Ruta finală în aplicație
router.get('/', ...)
/users/
router.get('/:id', ...)
/users/:id
router.post('/', ...)
/users/
router.put('/:id', ...)
/users/:id
router.delete('/:id', ...)
/users/:id
Last updated