LCS PREMIUM King Of Underground Postat Mai 29 LCS PREMIUM Postat Mai 29 Obiective tutorial : Validare Utilizator prin detectia campurilor nule sau goale (1) ; Validare Utilizator prin verificarea campului de "adresa mail" (2) ; Validare Utilizator prin verificarea unicitatii (3) . De ce se fac verificari la nivel de server , asta daca exista si pe partea de interfata ? Aceste verificari ne ofera garantia ca ORICE fel de cerere spre server , sa fie REVERIFICATA asigurandu ne o aplicatie web securizata si robusta . Pentru a valida , respectiva a salva un obiect la nivelul bazei de date , va trebui sa construim pachetul "Service Layer" , la radacina proiectului , unde vom construi o clasa numita "UserService" : Adaugam instanta necesara pentru a efectua operatiuni cu baza de date : package com.example.demo.ServiceLayer; import com.example.demo.Repositories.UserRepos; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service // Adnotam clasa de tip "Service" public class UserService { @Autowired // INSTANTELE ADNOTATE CU "AUTOWIRED" ne ofera posibilitatea de a utiliza instanta fara a fi INITIATA PRIN CONSTRUCTOR !! private UserRepos userRepos; /// Instanta pentru efectuarea operatiunilor la nivel cu baza de date } NOTA 1 * : Implementarea Interfetei "UserRepos" , o avem la tutorialul anterior !! NOTA 2 * : "@Autowired " functioneaza pe acelasi principiu cu "Lombok" , ne scuteste de a initializa instanta !!! Construim o functie "createUser()" care preia ca parametru campurile utilizatorului ..... public class UserService { .... public int createUser(User userData) // Functie User care preia ca parametru date despre utilizator { // } } Mergem in clasa "User" , vom adauga functia "hasEmptyOrNullFields" cu urmatoarea validare : ... public class User{ ..... /// Validare camp nul sau gol public boolean hasEmptyOrNullFields() { // SE VOR VERIFICA CAMPURILE CARE AU INITIALIZARE IN FUNCTIE DE "INPUT" (CELE CU @NonNull) /// Exceptie face "data de nastere" deoarece exista o modalitate aparte pentru validarea acestui camp . return nameUserLeagueCS.isBlank() || emailAddressLeagueCS.isBlank() || passwordLeagueCS.isBlank(); // Daca unu SAU mai multe campuri sunt nule sau goale atunci returnam "TRUE" } } Ne intoarcem in clasa "UserService " si vom valida obiectul in functie de existenta sau nu a campurilor nule sau goale : public int createUser(User userData) // Functie User care preia ca parametru date despre utilizator { // Validare Obiect UserData /// 1. Validare campuri nule sau goale ! if(userData.hasEmptyOrNullFields()) { /// DACA EXISTA VOM RETURNA UN COD DE EROARE -1 return -1; } // DACA NU , VOM MERGE LA URMATOAREA FORMA DE VALIDARE } Pentru validarea adresei de mail , vom construi o expresie "regex" (constituita din caractere) si care decide, pe baza conditiilor impuse de dezvoltator , daca aceea adresa este conforma . public class UserService { .... /* Validare Email bazat pe standardul RFC 5322 NOTA** : Expresiile REGEX se pot folosi la diverse validari (caractere permise , lungime etc.) si se pot personaliza in functie de preferinta dvs . */ final String regexEmail = "^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^.-]+@[a-zA-Z0-9.-]+$"; .... } Si vom vedea prin functia "matches" : /// 2. Validarea adresei de mail if(!Pattern.matches(userData.getEmailAddressLeagueCS(),regexEmail)) { // Daca NU EXISTA COMPATIBILITATE INTRE ADRESA NOASTRA DE MAIL INSERATA SI CONDITIILE IMPUSE DE CATRE REGEX , VOM RETURNA -2 return -2; } In continuare , vom verifica daca exista un utilizator in baza de date care are acelasi nume de utilizator sau adresa de mail (duplicat) : ... public class UserService{ .... /// Introducem o functie care sa ne caute in baza de date orice utilizator care este similar cu cel ce urmeaza sa fie inserat (ASTA DACA EXISTA) private Predicate<User> IsADuplicatedUser = (user) -> userRepos.findAll().stream().anyMatch(userIterator -> userIterator.equals(user)); ..... public int createUser(User userData) { ... if(IsADuplicatedUser.test(userData)) { // DACA EXISTA UN UTILIZATOR CU ACELASI NUME SAU ADRESA DE MAIL , VA TREBUI SA RETURNAM COD DE EROARE -3; return -3; } /// AICI VOM CONTINUA IN URMATORUL TUTORIAL !! } } NOTA 1*** : VOM CONTINUA DATA VIITOARE CU VALIDAREA DATEI DE NASTERE SI CU SALVAREA UTILIZATORULUI IN BAZA DE DATE !! NOTA 2** : PENTRU PROBLEME , RECLAMATII SAU SUGESTII , PM SAU COMENTARIU IN TOPIC !! NOTA 3 **: MULTUMESC PENTRU ATENTIE !! NOTA 4** : SURSA CONSTRUITA SI INSPIRATA DE CATRE MINE !!!
Postări Recomandate