Merge branch 'master' into vueNavBar

vueNavBar
Shana CASCARRA 1 year ago
commit b740616b5a

@ -12,7 +12,7 @@
<DataGrid TItem="Utilisateur" <DataGrid TItem="Utilisateur"
Data="@Utilisateurs" Data="@Utilisateurs"
@bind-SelectedRow="@utilisateurSelectionne" @bind-SelectedRow="@UtilisateurSelectionne"
Responsive Responsive
ShowPager ShowPager
ShowPageSizes ShowPageSizes
@ -95,7 +95,7 @@
<div> <div>
<ModalSuppressionUtilisateur <ModalSuppressionUtilisateur
utilisateur="@utilisateurSelectionne" utilisateur="@UtilisateurSelectionne"
@ref="Modal" @ref="Modal"
modalFerme="fermetureModal" /> modalFerme="fermetureModal" />
</div> </div>

@ -12,7 +12,7 @@ namespace VeraxShield.composants.affichages.utilisateurs
[Inject] [Inject]
private IUtilisateursDataService utilisateursDataService { get; set; } private IUtilisateursDataService utilisateursDataService { get; set; }
public List<Utilisateur> Utilisateurs { get; set; } public static List<Utilisateur> Utilisateurs { get; set; }
[Inject] [Inject]
private NavigationManager NavigationManager { get; set; } private NavigationManager NavigationManager { get; set; }
@ -20,7 +20,7 @@ namespace VeraxShield.composants.affichages.utilisateurs
[Inject] [Inject]
private DonneurEtat DonneurEtat {get; set;} private DonneurEtat DonneurEtat {get; set;}
private Utilisateur? utilisateurSelectionne; public static Utilisateur? UtilisateurSelectionne;
[Parameter] [Parameter]
public ModalSuppressionUtilisateur Modal {get; set;} public ModalSuppressionUtilisateur Modal {get; set;}
@ -29,28 +29,28 @@ namespace VeraxShield.composants.affichages.utilisateurs
{ {
//await this.utilisateursDataService.resetDataUtilisateurs(); //await this.utilisateursDataService.resetDataUtilisateurs();
this.utilisateurSelectionne = null; DatagridUtilisateurs.UtilisateurSelectionne = null;
this.Utilisateurs = await this.utilisateursDataService.getAllUtilisateurs(); DatagridUtilisateurs.Utilisateurs = await this.utilisateursDataService.getAllUtilisateurs();
await base.OnInitializedAsync(); await base.OnInitializedAsync();
} }
private async Task HandleUtilisateurSupprime() private async Task HandleUtilisateurSupprime()
{ {
this.Utilisateurs = await this.utilisateursDataService.getAllUtilisateurs(); DatagridUtilisateurs.Utilisateurs = await this.utilisateursDataService.getAllUtilisateurs();
StateHasChanged(); // Actualiser la vue StateHasChanged(); // Actualiser la vue
} }
public async Task fermetureModal(bool val) { public async Task fermetureModal(bool val) {
if (val) { if (val) {
await this.supprimerUtilisateur(this.utilisateurSelectionne); await this.supprimerUtilisateur(DatagridUtilisateurs.UtilisateurSelectionne);
} }
} }
public async Task supprimerUtilisateur(Utilisateur u) public async Task supprimerUtilisateur(Utilisateur u)
{ {
await this.utilisateursDataService.SupprimerUtilisateur(u); await this.utilisateursDataService.SupprimerUtilisateur(u);
this.Utilisateurs = await this.utilisateursDataService.getAllUtilisateurs(); DatagridUtilisateurs.Utilisateurs = await this.utilisateursDataService.getAllUtilisateurs();
this.NavigationManager.NavigateTo("/utilisateurs/liste"); this.NavigationManager.NavigateTo("/utilisateurs/liste");
} }
@ -64,16 +64,16 @@ namespace VeraxShield.composants.affichages.utilisateurs
public void modifierUtilisateur() public void modifierUtilisateur()
{ {
if (this.utilisateurSelectionne != null) if (DatagridUtilisateurs.UtilisateurSelectionne != null)
{ {
this.NavigationManager.NavigateTo("/utilisateurs/modifier/" + utilisateurSelectionne.Pseudo); this.NavigationManager.NavigateTo("/utilisateurs/modifier/" + DatagridUtilisateurs.UtilisateurSelectionne.Pseudo);
} }
} }
public async Task onClickBoutonSuppression(String Pseudo) public async Task onClickBoutonSuppression(String Pseudo)
{ {
this.utilisateurSelectionne = await this.utilisateursDataService.getUtilisateurFromPseudo(Pseudo); DatagridUtilisateurs.UtilisateurSelectionne= await this.utilisateursDataService.getUtilisateurFromPseudo(Pseudo);
if (this.DonneurEtat._utilisateurCourant.Pseudo != this.utilisateurSelectionne.Pseudo) if (this.DonneurEtat._utilisateurCourant.Pseudo != DatagridUtilisateurs.UtilisateurSelectionne.Pseudo)
{ {
await this.afficherModal(); await this.afficherModal();
} }
@ -81,7 +81,7 @@ namespace VeraxShield.composants.affichages.utilisateurs
public async Task onClickBoutonModification(String Pseudo) public async Task onClickBoutonModification(String Pseudo)
{ {
this.utilisateurSelectionne = await this.utilisateursDataService.getUtilisateurFromPseudo(Pseudo); DatagridUtilisateurs.UtilisateurSelectionne = await this.utilisateursDataService.getUtilisateurFromPseudo(Pseudo);
this.modifierUtilisateur(); this.modifierUtilisateur();
} }

@ -1,10 +1,12 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using VeraxShield.composants.formulaires.modeles.attributsValidationCustoms;
namespace VeraxShield.composants.formulaires.modeles namespace VeraxShield.composants.formulaires.modeles
{ {
public class RequeteInscription public class RequeteInscription
{ {
[Required] [Required]
[RegularExpression("^[a-zA-Z0-9]+$", ErrorMessage = "Le mot de passe doit contenir uniquement des caractères alphanumériques.")]
public string MotDePasse { get; set; } public string MotDePasse { get; set; }
[Required] [Required]
@ -12,15 +14,23 @@ namespace VeraxShield.composants.formulaires.modeles
public string MotDePasseConfirmation { get; set; } public string MotDePasseConfirmation { get; set; }
[Required] [Required]
[RegularExpression("^[a-zA-Z]+$", ErrorMessage = "Le nom doit contenir uniquement des lettres.")]
[StringLength(20, ErrorMessage = "Le nom ne doit pas dépasser 20 caractères !")]
public string Nom { get; set; } public string Nom { get; set; }
[Required] [Required]
[StringLength(20, ErrorMessage = "Le prénom ne doit pas dépasser 20 caractères !")]
[RegularExpression("^[a-zA-Z]+$", ErrorMessage = "Le prénom doit contenir uniquement des lettres.")]
public string Prenom {get; set;} public string Prenom {get; set;}
[Required] [Required]
[StringLength(20, ErrorMessage = "Le pseudo ne doit pas dépasser 20 caractères !")]
[RegularExpression("^[a-zA-Z0-9_]+$", ErrorMessage = "Le pseudo contient des caractères interdits.")]
[PseudoCorrect]
public string Pseudo { get; set; } public string Pseudo { get; set; }
[Required] [Required]
[EmailAddress(ErrorMessage = "Veuillez entrer une adresse email valide.")]
public string Mail { get; set;} public string Mail { get; set;}
} }
} }

@ -1,58 +1,115 @@
 @using Blazorise.Components
<EditForm Model="@Modele" OnValidSubmit="@ajouterUtilisateur"> @using System.ComponentModel.DataAnnotations;
<DataAnnotationsValidator /> <head>
<Microsoft.AspNetCore.Components.Forms.ValidationSummary /> <link rel="stylesheet" href="css/composants/formulaires/FormulaireAjout.css" />
</head>
<p>
<label for="pseudo"> <div class="formulaire-conteneur">
Pseudo :
<InputText id="pseudo" @bind-Value="Modele.Pseudo" /> <h1 class="title-spacing"> Ajouter un utilisateur </h1>
</label>
</p> <Validations @ref="Validations" Mode="ValidationMode.Manual" Model="Modele">
<p> <div class="field-container">
<label for="prenom"> <Validation>
Prénom : <Field Horizontal>
<InputText id="prenom" @bind-Value="Modele.Prenom" /> <FieldLabel ColumnSize="ColumnSize.Is2" Class="field-label">Pseudo</FieldLabel>
</label> <FieldBody ColumnSize="ColumnSize.Is10">
</p> <TextEdit Placeholder="Entrez son pseudo" @bind-Text="@Modele.Pseudo">
<Feedback>
<p> <ValidationError />
<label for="nom"> </Feedback>
Nom : </TextEdit>
<InputText id="nom" @bind-Value="Modele.Nom" /> </FieldBody>
</label> </Field>
</p> </Validation>
</div>
<p>
<label for="role"> <div class="field-container">
Role : <Validation>
<InputText id="role" @bind-Value="Modele.Role" /> <Field Horizontal>
</label> <FieldLabel ColumnSize="ColumnSize.Is2" Class="field-label">Prenom</FieldLabel>
</p> <FieldBody ColumnSize="ColumnSize.Is10">
<TextEdit Placeholder="Entrez son prénom" @bind-Text="@Modele.Prenom">
<p> <Feedback>
<label for="mail"> <ValidationError />
Email : </Feedback>
<InputText id="mail" @bind-Value="Modele.Mail" /> </TextEdit>
</label> </FieldBody>
</p> </Field>
</Validation>
<p> </div>
<label for="mdp">
Mot de passe : <div class="field-container">
<InputText id="mdp" @bind-Value="Modele.Mdp" /> <Validation>
</label> <Field Horizontal>
</p> <FieldLabel ColumnSize="ColumnSize.Is2" Class="field-label">Nom</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is10">
<p> <TextEdit Placeholder="Entrez son nom" @bind-Text="@Modele.Nom">
<label> <Feedback>
Utilisateur banni : <ValidationError />
<InputCheckbox @bind-Value="Modele.IsBan" /> </Feedback>
</label> </TextEdit>
</p> </FieldBody>
</Field>
<button Type="Submit">Valider la création</button> </Validation>
</div>
</EditForm>
<div class="field-container">
<Validation>
<Field Horizontal>
<FieldLabel ColumnSize="ColumnSize.Is2" Class="field-label">Mail</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is10">
<TextEdit Placeholder="Entrez son mail" @bind-Text="@Modele.Mail">
<Feedback>
<ValidationError />
</Feedback>
</TextEdit>
</FieldBody>
</Field>
</Validation>
</div>
<div class="field-container">
<Validation>
<Field Horizontal>
<FieldLabel ColumnSize="ColumnSize.Is2" Class="field-label">Role</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is10">
<TextEdit Placeholder="Entrez son role" @bind-Text="@Modele.Role">
<Feedback>
<ValidationError />
</Feedback>
</TextEdit>
</FieldBody>
</Field>
</Validation>
</div>
<div class="field-container">
<Validation>
<Field Horizontal>
<FieldLabel ColumnSize="ColumnSize.Is2" Class="field-label">Mot de passe</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is10">
<TextEdit Placeholder="Entrez son mot de passe" @bind-Text="@Modele.Mdp">
<Feedback>
<ValidationError />
</Feedback>
</TextEdit>
</FieldBody>
</Field>
</Validation>
</div>
<div class="btn-container">
<Button Class="btn-se-connecter" Clicked="@OnSubmit">
<Icon Name="Blazorise.Icons.FontAwesome.FontAwesomeIcons.CheckCircle" />
Ajouter</Button>
<Button Class="btn-s-inscrire" Clicked="@OnAnnulation">
<Icon Name="Blazorise.Icons.FontAwesome.FontAwesomeIcons.Reply" />
Annuler</Button>
</div>
</Validations>
</div>

@ -1,4 +1,4 @@
using System.Runtime.InteropServices; using Blazorise;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using VeraxShield.composants.formulaires.modeles; using VeraxShield.composants.formulaires.modeles;
using VeraxShield.factories; using VeraxShield.factories;
@ -9,35 +9,38 @@ namespace VeraxShield.composants.formulaires
{ {
public partial class FormulaireAjout public partial class FormulaireAjout
{ {
[Inject]
private NavigationManager NavigationManager { get; set; } [Parameter]
public Validations Validations {get; set;}
private FormulaireAjoutModele Modele { get; set; } public FormulaireAjoutModele Modele {get; set;}
[Inject] [Inject]
private IUtilisateursDataService utilisateursDataService { get; set; } private NavigationManager NavigationManager {get; set;}
public FormulaireAjout() [Inject]
{ private IUtilisateursDataService utilisateursDataService { get; set; }
}
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
this.Modele = new FormulaireAjoutModele(); this.Modele = new FormulaireAjoutModele();
this.Modele.IsBan = false;
await base.OnInitializedAsync(); await base.OnInitializedAsync();
} }
public async void ajouterUtilisateur() public async Task OnSubmit()
{ {
Utilisateur nouvelUtilisateur = UtilisateursFactory.toUtilisateur(this.Modele); if (await this.Validations.ValidateAll())
await this.utilisateursDataService.AjouterUtilisateur(nouvelUtilisateur); {
Utilisateur nouvelUtilisateur = UtilisateursFactory.toUtilisateur(this.Modele);
//Console.WriteLine("Utilisateur bien ajouté !"); await this.utilisateursDataService.AjouterUtilisateur(nouvelUtilisateur);
this.NavigationManager.NavigateTo("/utilisateurs/liste");
}
}
public async Task OnAnnulation()
{
this.NavigationManager.NavigateTo("/utilisateurs/liste"); this.NavigationManager.NavigateTo("/utilisateurs/liste");
} }
} }
} }

@ -1,58 +1,119 @@
<head>
<link rel="stylesheet" href="css/composants/formulaires/FormulaireModification.css">
</head>
<EditForm Model="@Modele" OnValidSubmit="@modifierUtilisateur"> <div class="formulaire-conteneur">
<DataAnnotationsValidator /> <h1 class="title-spacing"> Modifier l'utilisateur</h1>
<Microsoft.AspNetCore.Components.Forms.ValidationSummary />
<Validations @ref="Validations" Mode="ValidationMode.Manual" Model="Modele">
<p>
<label for="pseudo"> <div class="field-container">
Pseudo : <Validation>
<InputText id="pseudo" @bind-Value="Modele.Pseudo" /> <Field Horizontal>
</label> <FieldLabel ColumnSize="ColumnSize.Is2">Pseudo</FieldLabel>
</p> <FieldBody ColumnSize="ColumnSize.Is10">
<TextEdit Placeholder="Entrez votre pseudo" @bind-Text="@Modele.Pseudo">
<p> <Feedback>
<label for="prenom"> <ValidationError />
Prénom : </Feedback>
<InputText id="prenom" @bind-Value="Modele.Prenom" /> </TextEdit>
</label> </FieldBody>
</p> </Field>
</Validation>
<p> </div>
<label for="nom">
Nom : <div class="field-container">
<InputText id="nom" @bind-Value="Modele.Nom" /> <Validation>
</label> <Field Horizontal>
</p> <FieldLabel ColumnSize="ColumnSize.Is2">Prenom</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is10">
<p> <TextEdit Placeholder="Entrez votre prenom" @bind-Text="@Modele.Prenom">
<label for="role"> <Feedback>
Role : <ValidationError />
<InputText id="role" @bind-Value="Modele.Role" /> </Feedback>
</label> </TextEdit>
</p> </FieldBody>
</Field>
<p> </Validation>
<label for="mail"> </div>
Email :
<InputText id="mail" @bind-Value="Modele.Mail" /> <div class="field-container">
</label> <Validation>
</p> <Field Horizontal>
<FieldLabel ColumnSize="ColumnSize.Is2">Nom</FieldLabel>
<p> <FieldBody ColumnSize="ColumnSize.Is10">
<label for="mdp"> <TextEdit Placeholder="Entrez votre nom" @bind-Text="@Modele.Nom">
Mot de passe : <Feedback>
<InputText id="mdp" @bind-Value="Modele.Mdp" /> <ValidationError />
</label> </Feedback>
</p> </TextEdit>
</FieldBody>
<p> </Field>
<label> </Validation>
Utilisateur banni : </div>
<InputCheckbox @bind-Value="Modele.IsBan" />
</label> <div class="field-container">
</p> <Validation>
<Field Horizontal>
<button Type="Submit">Valider la modification </button> <FieldLabel ColumnSize="ColumnSize.Is2">Mail</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is10">
</EditForm> <TextEdit Placeholder="Entrez votre mail" @bind-Text="@Modele.Mail">
<Feedback>
<ValidationError />
</Feedback>
</TextEdit>
</FieldBody>
</Field>
</Validation>
</div>
<div class="field-container">
<Validation>
<Field Horizontal>
<FieldLabel ColumnSize="ColumnSize.Is2">Role</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is10">
<TextEdit Placeholder="Entrez le role" @bind-Text="@Modele.Role">
<Feedback>
<ValidationError />
</Feedback>
</TextEdit>
</FieldBody>
</Field>
</Validation>
</div>
<div class="field-container">
<Validation>
<Field Horizontal>
<FieldLabel ColumnSize="ColumnSize.Is2">Mot de passe</FieldLabel>
<FieldBody ColumnSize="ColumnSize.Is10">
<TextEdit Placeholder="Entrez votre mot de passe" @bind-Text="@Modele.Mdp">
<Feedback>
<ValidationError />
</Feedback>
</TextEdit>
</FieldBody>
</Field>
</Validation>
</div>
<div>
<Validation>
<Switch TValue="bool" @bind-Checked="@Modele.IsBan" Color="Color.Primary">Utilisateur banni</Switch>
</Validation>
</div>
<div class="btn-container">
<Button Class="btn-se-connecter" Clicked="@modifierUtilisateur">
<Icon Name="Blazorise.Icons.FontAwesome.FontAwesomeIcons.CheckCircle" />
Modifier</Button>
<Button Class="btn-s-inscrire" Clicked="@OnAnnulation">
<Icon Name="Blazorise.Icons.FontAwesome.FontAwesomeIcons.Reply" />
Annuler</Button>
</div>
</Validations>
</div>

@ -1,5 +1,7 @@
using Blazorise;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using VeraxShield.composants.formulaires.modeles; using VeraxShield.composants.formulaires.modeles;
using VeraxShield.composants.formulaires.modeles.attributsValidationCustoms;
using VeraxShield.factories; using VeraxShield.factories;
using VeraxShield.modele.utilisateurs; using VeraxShield.modele.utilisateurs;
using VeraxShield.services.UtilisateursDataService; using VeraxShield.services.UtilisateursDataService;
@ -11,6 +13,9 @@ namespace VeraxShield.composants.formulaires
[Parameter] [Parameter]
public Utilisateur Utilisateur {get; set;} public Utilisateur Utilisateur {get; set;}
[Parameter]
public Validations Validations {get; set;}
public FormulaireAjoutModele Modele {get; set;} public FormulaireAjoutModele Modele {get; set;}
[Inject] [Inject]
@ -21,33 +26,43 @@ namespace VeraxShield.composants.formulaires
protected override async Task OnParametersSetAsync() protected override async Task OnParametersSetAsync()
{ {
//PseudoCorrectAttribute.Initialiser(await this.utilisateursDataService.getAllUtilisateurs());
if (this.Utilisateur != null) if (this.Utilisateur != null)
{ {
Console.WriteLine("Le mec encore trouvé : " + this.Utilisateur.Pseudo);
Utilisateur temp = new Utilisateur(" ", " ", " ", " ", " ", " ", true); Utilisateur temp = new Utilisateur(" ", " ", " ", " ", " ", " ", true);
this.Modele = UtilisateursFactory.toModele(this.Utilisateur); this.Modele = UtilisateursFactory.toModele(this.Utilisateur);
} else } else
{ {
Console.WriteLine("Le mec nul cette fois...");
Utilisateur temp = new Utilisateur(" ", " ", " ", " ", " ", " ", true); Utilisateur temp = new Utilisateur(" ", " ", " ", " ", " ", " ", true);
this.Modele = UtilisateursFactory.toModele(temp); this.Modele = UtilisateursFactory.toModele(temp);
} }
Console.WriteLine("Fin du onParameterEnfant");
await base.OnParametersSetAsync(); await base.OnParametersSetAsync();
} }
protected async Task modifierUtilisateur() protected async Task modifierUtilisateur()
{ {
Utilisateur temp = UtilisateursFactory.toUtilisateur(this.Modele); if (await this.Validations.ValidateAll())
await this.utilisateursDataService.MettreAJourUtilisateur(temp); {
Utilisateur temp = UtilisateursFactory.toUtilisateur(this.Modele);
if (this.Utilisateur.Pseudo != this.Modele.Pseudo)
{
await this.utilisateursDataService.MettreAJourUtilisateur(this.Utilisateur, temp);
}
else
{
await this.utilisateursDataService.MettreAJourUtilisateur(temp);
}
this.NavigationManager.NavigateTo("/utilisateurs/liste");
}
}
protected async Task OnAnnulation()
{
this.NavigationManager.NavigateTo("/utilisateurs/liste"); this.NavigationManager.NavigateTo("/utilisateurs/liste");
} }
} }

@ -1,4 +1,8 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Microsoft.AspNetCore.Components;
using VeraxShield.composants.formulaires.modeles.attributsValidationCustoms;
using VeraxShield.modele.utilisateurs;
using VeraxShield.services.UtilisateursDataService;
namespace VeraxShield.composants.formulaires.modeles namespace VeraxShield.composants.formulaires.modeles
{ {
@ -6,23 +10,30 @@ namespace VeraxShield.composants.formulaires.modeles
{ {
[Required] [Required]
[StringLength(20, ErrorMessage = "Le pseudo ne doit pas dépasser 20 caractères !")] [StringLength(20, ErrorMessage = "Le pseudo ne doit pas dépasser 20 caractères !")]
public String Pseudo { get; set; } [RegularExpression("^[a-zA-Z0-9_]+$", ErrorMessage = "Le pseudo contient des caractères interdits.")]
[PseudoCorrect]
public string Pseudo { get; set; }
[Required] [Required]
[StringLength(20, ErrorMessage = "Le nom ne doit pas dépasser 20 caractères !")] [StringLength(20, ErrorMessage = "Le nom ne doit pas dépasser 20 caractères !")]
[RegularExpression("^[a-zA-Z]+$", ErrorMessage = "Le nom doit contenir uniquement des lettres.")]
public String Nom { get; set; } public String Nom { get; set; }
[Required] [Required]
[StringLength(20, ErrorMessage = "Le prénom ne doit pas dépasser 20 caractères !")] [StringLength(20, ErrorMessage = "Le prénom ne doit pas dépasser 20 caractères !")]
[RegularExpression("^[a-zA-Z]+$", ErrorMessage = "Le prénom doit contenir uniquement des lettres.")]
public String Prenom { get; set; } public String Prenom { get; set; }
[Required] [Required]
[EmailAddress(ErrorMessage = "Veuillez entrer une adresse email valide.")]
public String Mail { get; set; } public String Mail { get; set; }
[Required] [Required]
[RegularExpression("^[a-zA-Z0-9]+$", ErrorMessage = "Le mot de passe doit contenir uniquement des caractères alphanumériques.")]
public String Mdp { get; set; } public String Mdp { get; set; }
[Required] [Required]
[RoleExistant]
public String Role { get; set; } public String Role { get; set; }
[Required] [Required]

@ -0,0 +1,28 @@
using System.ComponentModel.DataAnnotations;
using Microsoft.AspNetCore.Components;
using VeraxShield.composants.affichages.utilisateurs;
using VeraxShield.modele.utilisateurs;
using VeraxShield.services.UtilisateursDataService;
namespace VeraxShield.composants.formulaires.modeles.attributsValidationCustoms
{
public class PseudoCorrectAttribute : ValidationAttribute
{
protected override ValidationResult? IsValid(object? value, ValidationContext validationContext)
{
bool pseudoExisteDeja = false;
var pseudo = (string)value;
foreach (Utilisateur u in DatagridUtilisateurs.Utilisateurs)
{
if (u.Pseudo == pseudo && pseudo != DatagridUtilisateurs.UtilisateurSelectionne.Pseudo)
{
return new ValidationResult("Le pseudo existe deja, choississez en un autre.");
}
}
return ValidationResult.Success;
}
}
}

@ -0,0 +1,33 @@
using System.ComponentModel.DataAnnotations;
namespace VeraxShield.composants.formulaires.modeles.attributsValidationCustoms
{
public class RoleExistantAttribute : ValidationAttribute
{
private List<string> RolesExistants {get; set;}
public RoleExistantAttribute()
{
this.RolesExistants = new List<string>();
this.RolesExistants.Add("admin");
this.RolesExistants.Add("modo");
this.RolesExistants.Add("invite");
this.RolesExistants.Add("redacteur");
}
protected override ValidationResult? IsValid(object? value, ValidationContext validationContext)
{
var role = (string)value;
foreach (string roleListe in this.RolesExistants)
{
if (roleListe == role)
{
return ValidationResult.Success;;
}
}
return new ValidationResult("Le role n'existe pas.");
}
}
}

@ -1,9 +1,18 @@
@using VeraxShield.composants.formulaires @using VeraxShield.composants.formulaires
@page "/utilisateurs/ajouter" @page "/utilisateurs/ajouter"
<h1>Ajouter un utilisateur</h1>
<FormulaireAjout/> <head>
<link rel="stylesheet" href="css/pages/utilisateurs/AjouterUtilisateur.css">
</head>
<div class="container">
<div class="formulaire-modification">
<FormulaireAjout/>
</div>
</div>

@ -9,7 +9,7 @@
</head> </head>
<body> <body>
<div class="center-box lightBlueBG"> <div class="center-box">
<h1> Utilisateurs de Verax</h1> <h1> Utilisateurs de Verax</h1>
<p class="margin10">Vous retrouverez ici les utilisateurs de Verax ainsi que les actions associées </p> <p class="margin10">Vous retrouverez ici les utilisateurs de Verax ainsi que les actions associées </p>
</div> </div>

@ -1,18 +1,12 @@
@page "/utilisateurs/modifier/{pseudo}" @page "/utilisateurs/modifier/{pseudo}"
<h1> Modifier l'utilisateur </h1>
<head> <head>
<link rel="stylesheet" href="css/pages/utilisateurs/ModifierUtilisateur.css"> <link rel="stylesheet" href="css/pages/utilisateurs/ModifierUtilisateur.css">
</head> </head>
<FormulaireModification Utilisateur="@Utilisateur" /> <div class="container">
<div class="formulaire-modification">
<div class="test"> <FormulaireModification Utilisateur="@Utilisateur"/>
<VeraxShield.composants.authentification.FormulaireInscription> </div>
</VeraxShield.composants.authentification.FormulaireInscription>
</div> </div>

@ -14,7 +14,7 @@ namespace VeraxShield.pages.utilisateurs
[Inject] [Inject]
private IUtilisateursDataService utilisateursDataService {get; set;} private IUtilisateursDataService utilisateursDataService {get; set;}
private Utilisateur utilisateur {get; set;} //private Utilisateur utilisateur {get; set;}
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {

@ -14,6 +14,7 @@ namespace VeraxShield.services.UtilisateursDataService
public Task SupprimerUtilisateur(Utilisateur u); public Task SupprimerUtilisateur(Utilisateur u);
public Task MettreAJourUtilisateur(Utilisateur u); public Task MettreAJourUtilisateur(Utilisateur u);
public Task MettreAJourUtilisateur(Utilisateur ancienneVersion, Utilisateur nouvelleVersion);
public Task<Utilisateur> getUtilisateurFromPseudo(String pseudo); public Task<Utilisateur> getUtilisateurFromPseudo(String pseudo);
} }

@ -111,6 +111,12 @@ namespace VeraxShield.services.UtilisateursDataService
await this.AjouterUtilisateur(u); await this.AjouterUtilisateur(u);
} }
public async Task MettreAJourUtilisateur(Utilisateur ancienneVersion, Utilisateur nouvelleVersion)
{
await this.SupprimerUtilisateur(ancienneVersion);
await this.AjouterUtilisateur(nouvelleVersion);
}
private async Task<List<Utilisateur>> getUtilisateursFromJson(String cheminVersJson) private async Task<List<Utilisateur>> getUtilisateursFromJson(String cheminVersJson)
{ {
List<Utilisateur> utilisateursDeserialise = new List<Utilisateur> (); List<Utilisateur> utilisateursDeserialise = new List<Utilisateur> ();

@ -0,0 +1,51 @@
.formulaire-conteneur {
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /* Ajoute une ombre au formulaire */
border-radius: 10px; /* Ajoute des bords arrondis au formulaire */
/* background-color: black; */
background-color: #8BC6EC;
background-image: linear-gradient(135deg, #8BC6EC 0%, #9599E2 100%);
color: white; /* Définit la couleur du texte à blanc */
padding: 20px; /* Ajoute une marge intérieure pour plus de lisibilité */
}
.title-spacing {
margin-bottom: 20px; /* Ajoute une séparation entre le titre et le reste du contenu */
}
.field-container {
margin-bottom: 15px; /* Ajoute une séparation entre chaque champ */
}
/* Rend les labels en gras et blancs */
.field-label {
font-weight: bold;
color: white;
}
.btn-container {
display: flex;
justify-content: center;
margin-top: 20px; /* Ajoute une séparation entre les champs et les boutons */
}
.btn-se-connecter {
/* background-color: darkblue; */
/*background: #F3904F; fallback for old browsers */
/*background: -webkit-linear-gradient(to right, #3B4371, #F3904F); Chrome 10-25, Safari 5.1-6 */
/*background: linear-gradient(to right, #3B4371, #F3904F); W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
background: white;
color: black;
margin-right: 10px; /* Ajoute un espace entre les deux boutons */
}
.btn-s-inscrire {
background-color: white;
/* color: white; */
color: black;
}

@ -0,0 +1,52 @@
/* Ajoutez ces styles à votre fichier CSS associé au composant (FormulaireModification.css) */
.formulaire-conteneur {
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /* Ajoute une ombre au formulaire */
border-radius: 10px; /* Ajoute des bords arrondis au formulaire */
/* background-color: black; */
background-color: #8BC6EC;
background-image: linear-gradient(135deg, #8BC6EC 0%, #9599E2 100%);
color: white; /* Définit la couleur du texte à blanc */
padding: 20px; /* Ajoute une marge intérieure pour plus de lisibilité */
}
.title-spacing {
margin-bottom: 20px; /* Ajoute une séparation entre le titre et le reste du contenu */
}
.field-container {
margin-bottom: 15px; /* Ajoute une séparation entre chaque champ */
}
/* Rend les labels en gras et blancs */
.field-label {
font-weight: bold;
color: white;
}
.btn-container {
display: flex;
justify-content: center;
margin-top: 20px; /* Ajoute une séparation entre les champs et les boutons */
}
.btn-se-connecter {
/* background-color: darkblue; */
/*background: #F3904F; fallback for old browsers */
/*background: -webkit-linear-gradient(to right, #3B4371, #F3904F); Chrome 10-25, Safari 5.1-6 */
/*background: linear-gradient(to right, #3B4371, #F3904F); W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
background: white;
color: black;
margin-right: 10px; /* Ajoute un espace entre les deux boutons */
}
.btn-s-inscrire {
background-color: white;
/* color: white; */
color: black;
}

@ -27,7 +27,12 @@ main {
} }
.center-box { .center-box {
background-color: #afc1db; /* background-color: #afc1db; */
background-color: #8BC6EC;
background-image: linear-gradient(135deg, #8BC6EC 0%, #9599E2 100%);
padding: 20px; padding: 20px;
text-align: center; text-align: center;
border-radius: 10px; border-radius: 10px;

@ -0,0 +1,14 @@
.container {
display: flex;
justify-content: center;
align-items: center;
height: 100vh; /* 100% de la hauteur de la vue */
}
.formulaire-modification {
width: 50%;
/* background-color: green;
padding: 20px; */
/*box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); Ajoute une ombre au formulaire */
/* border-radius: 10px; Ajoute des bords arrondis au formulaire */
}

@ -1,9 +1,14 @@
.test { .container {
/* background-color: white; */ display: flex;
background-color: #8EC5FC; justify-content: center;
background-image: linear-gradient(62deg, #8EC5FC 0%, #E0C3FC 100%); align-items: center;
height: 100vh; /* 100% de la hauteur de la vue */
}
padding: 20px; .formulaire-modification {
border-radius: 10px; width: 50%;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /* Ajoute une ombre légère */ /* background-color: green;
padding: 20px; */
/*box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); Ajoute une ombre au formulaire */
/* border-radius: 10px; Ajoute des bords arrondis au formulaire */
} }

@ -12,7 +12,12 @@
margin: 20px auto; margin: 20px auto;
text-align: center; text-align: center;
border-radius: 10px; border-radius: 10px;
background-color: #afc1db;
/* background-color: #afc1db; */
background-color: #8BC6EC;
background-image: linear-gradient(135deg, #8BC6EC 0%, #9599E2 100%);
width: 80%; width: 80%;
} }

Loading…
Cancel
Save