You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Blazor_SAE/VeraxShield/VeraxShield/services/authentificationService/AuthentificationService.cs

63 lines
2.2 KiB

using System.Linq;
using System.Security.Claims;
using VeraxShield.composants.formulaires.modeles;
using VeraxShield.modele.utilisateurs;
using VeraxShield.services.UtilisateursDataService;
public class AuthentificationService : IAuthentificationService
{
private List<Utilisateur> UtilisateursApplication {get; set;}
private IUtilisateursDataService _utilisateursDataService;
public AuthentificationService(IUtilisateursDataService utilisateursDataService)
{
Console.WriteLine("Passage dans le constructeur !");
this._utilisateursDataService = utilisateursDataService;
this.UtilisateursApplication = new List<Utilisateur>();
}
public async Task Connexion(RequeteConnexion requete)
{
await this.MajUtilisateurs();
var utilisateur = this.UtilisateursApplication.FirstOrDefault(w => w.Pseudo == requete.Pseudo && w.Mdp == requete.MotDePasse);
if (utilisateur == null)
{
throw new Exception("Pseudo ou mot de passe invalide ! ");
}
}
public async Task<UtilisateurCourant> GetUtilisateur(string pseudo)
{
await this.MajUtilisateurs();
var utilisateur = this.UtilisateursApplication.FirstOrDefault(w => w.Pseudo == pseudo);
if (utilisateur == null)
{
throw new Exception("Pseudo ou mot de passe invalide !");
}
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Role, utilisateur.Role));
return new UtilisateurCourant
{
EstAuthentifie = true,
Pseudo = utilisateur.Pseudo,
Claims = claims.ToDictionary(c => c.Type, c => c.Value)
};
}
public async Task Inscription(RequeteInscription requete)
{
await this._utilisateursDataService.AjouterUtilisateur(new Utilisateur(requete.Pseudo, requete.Nom, requete.Prenom, "invite",
requete.MotDePasse, requete.Mail, false));
await this.MajUtilisateurs();
}
public async Task MajUtilisateurs()
{
this.UtilisateursApplication = await this._utilisateursDataService.getAllUtilisateurs();
}
}