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

circle-info

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

circle-info

Descrierea rutei de actualizare a unui utilizator:

  • Scop: Actualizează datele unui utilizator existent.

  • Endpoint: PUT /:id (unde :id este ID-ul utilizatorului).

  • Securitate: Folosește verifyToken, deci doar utilizatorii autentificați pot face modificări.

  • Verificări efectuate:

    • Verifică dacă id este 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

circle-info

Descrierea rutei de ștergere a unui utilizator:

  • Scop: Șterge un utilizator existent din baza de date.

  • Endpoint: DELETE /:id (unde :id este ID-ul utilizatorului).

  • Securitate: Folosește verifyToken, deci doar utilizatorii autentificați pot șterge conturi.

  • Verificări efectuate:

    • Verifică dacă id este 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

circle-info

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 password din 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 :id este ID-ul utilizatorului)

  • Securitate: Folosește verifyToken → doar utilizatorii autentificați pot accesa datele.

  • Verificări:

    • Verifică dacă id este 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 userRoutes la 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