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.
63 lines
2.2 KiB
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();
|
|
}
|
|
} |