Formulare înregistrare și autentificare utilizatori
1. Configurarea fișierului index.html pentru formularele TailwindCSS
index.html pentru formularele TailwindCSSPentru a utiliza componentele TailwindCSS, cum ar fi formularele de sign in, este recomandat să aplicăm câteva ajustări în fișierul index.html:
Clasa
h-fullpe<html>și<body>Asigură ca înălțimea paginii să ocupe întreg viewport-ul, necesar pentru centrare verticală a componentelor de tip formular.
Fundal global (
bg-gray-900) pe<html>Setează o culoare de fundal uniformă pentru întreaga pagină, conform design-ului Tailwind.
Div-ul root (
<div id="root"></div>)Punctul de montare al aplicației React; toate componentele React vor fi redate în acest element.
Scriptul principal (
main.jsx)Încarcă aplicația React în div-ul root, permițând utilizarea TailwindCSS și a componentelor sale în aplicație.
2. Crearea API-uri pentru înregistrare și autentificare
2.1. Înregistrarea utilizatorilor
Fișierul user.routes.js definește funcțiile pentru interacțiunea cu endpoint-urile publice legate de utilizatori.
Explicație tehnică:
Folosește instanța axiosNoAuth deoarece înregistrarea nu necesită token.
Trimite un
POSTcătre/userscu datele din formular (name,email,password).Returnează datele răspunsului sau eroarea primită de la API.
Este compatibilă cu componentele
Register.jsxpentru fluxul de înregistrare.
2.2. Autentificarea utilizatorilor
Fișierul auth.routes.js definește funcția pentru login:
Explicație tehnică:
Folosește tot axiosNoAuth deoarece autentificarea inițială nu necesită token.
Trimite un
POSTcătre/auth/logincu obiectulcredentials(email,password).Returnează datele răspunsului sau eroarea API-ului.
Funcția poate fi integrată în componenta
Login.jsxpentru autentificarea utilizatorului.
3. Formularul de înregistrare utilizator cu TailwindCSS
Componenta Register reprezintă formularul de înregistrare al utilizatorilor, implementat cu React, stilizat cu TailwindCSS, și integrat cu API-ul backend.
Principalele caracteristici:
Gestionarea stării formularului
useStatepentru câmpurileemailșipassword.Input-uri controlate prin
value+onChange.
Tratarea evenimentului submit
handleSubmitprevine comportamentul default al browser-ului.Apelează funcția
loginUserdinauth.routespentru a trimite datele către API.
Stocarea token-ului
La succes, token-ul JWT primit de la API este salvat:
În Redux store (
setToken).În localStorage, pentru persistenta între sesiuni.
Feedback vizual cu notificări
toast.successpentru login reușit.toast.errorpentru erori sau date incorecte.
Navigare automată după login
După succes, utilizatorul este redirecționat către pagina principală (
/) cu un mic delay (setTimeout).Navigarea este realizată cu
useNavigatedin React Router.
Design responsive și accesibil
Layout centrat vertical și orizontal (
flex,min-h-full,justify-center).Input-uri și butoane cu hover și focus states consistente.
Legătura către pagina de înregistrare cu
<Link>din React Router pentru SPA navigation.
Aspecte tehnice importante
Integrare API:
registerUser(formData)trebuie să returneze un obiect{ success: boolean, message?: string, data: objcet }.Navigare:
useNavigatepermite SPA navigation fără reload.Notificări:
sonnerfurnizează feedback instant, îmbunătățind UX-ul.TailwindCSS: simplifică stilizarea și păstrează consistența UI-ului.

4. Formularul de autentificare utilizator cu TailwindCSS
Componenta Login reprezintă un formular de autentificare, implementat cu React și stilizat cu TailwindCSS.
Aceasta gestionează valorile câmpurilor cu useState și permite navigarea internă între pagini folosind React Router (<Link>).
Caracteristici principale:
Gestionarea stării formularului cu
useStatepentru câmpurileemailșipassword.Tratarea evenimentului submit prin
handleSubmitpentru prevenirea reload-ului și procesarea datelor (ex.: apel API pentru login).Navigare internă:
<Link to="/register">permite trecerea la pagina de înregistrare fără reîncărcarea întregii aplicații (SPA).Design modern și responsive folosind TailwindCSS:
Input-uri cu focus vizibil și fundal semi-transparent (
bg-white/5)Buton de submit cu hover și focus states vizibile (
bg-indigo-500,hover:bg-indigo-400,focus-visible:outline-indigo-500)Layout centrat vertical și orizontal cu Flexbox (
flex,justify-center,min-h-full)
Aspecte tehnice cheie în Login.jsx
Integrare API:
loginUser(formData)trebuie să returneze un obiect{ success: boolean, data?: string, message?: string, data: object }.Redux:
setTokenactualizează starea globală, astfel încât token-ul poate fi folosit ulterior pentru cereri autentificate.Toast notifications: oferă feedback instant și îmbunătățește UX-ul.
TailwindCSS: simplifică stilizarea și păstrează consistența UI-ului.
SPA navigation:
useNavigatepermite redirecționarea fără refresh al paginii.

5. Actualizare router
După ce am creat pagina de înregistrare și autentificare, este nevoie să le facem vizibile către restul aplicației.
Așadar, mergem în fișierul router.jsx și adăugăm rutele pentru înregistrare și autentificare:
Last updated