Sari la conținut

Postări Recomandate

  • LCS PREMIUM
Postat

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"

Untitled.png

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 !!!

Vizitator
Acest topic este acum închis pentru alte răspunsuri.
  • Navigare recentă   0 membri

    • Nici un utilizator înregistrat nu vede această pagină.
×
×
  • Creează nouă...

Informații Importante

Termeni de Utilizare & Politică Intimitate