From f4b15139f562e5fddc5f146fe7744335fa01d84f Mon Sep 17 00:00:00 2001 From: Siwa12100 Date: Fri, 12 Jan 2024 15:20:20 +0100 Subject: [PATCH] reparation du repo... --- VeraxShield/VeraxShield.sln | 25 +++ VeraxShield/VeraxShield/App.razor | 12 ++ VeraxShield/VeraxShield/MainLayout.razor | 3 + VeraxShield/VeraxShield/Program.cs | 53 ++++++ .../Properties/launchSettings.json | 35 ++++ VeraxShield/VeraxShield/VeraxShield.csproj | 21 +++ VeraxShield/VeraxShield/_Imports.razor | 9 + .../VeraxShield/appsettings.Development.json | 9 + VeraxShield/VeraxShield/appsettings.json | 9 + .../formulaires/FormulaireAjout.razor | 58 ++++++ .../formulaires/FormulaireAjout.razor.cs | 43 +++++ .../formulaires/FormulaireModification.razor | 58 ++++++ .../FormulaireModification.razor.cs | 54 ++++++ .../composants/formulaires/_Imports.razor | 1 + .../modeles/FormulaireAjoutModele.cs | 51 +++++ .../modals/ModalSuppressionUtilisateur.razor | 24 +++ .../ModalSuppressionUtilisateur.razor.cs | 43 +++++ .../composants/modals/_Imports.razor | 1 + .../factories/UtilisateursFactory.cs | 36 ++++ .../modele/utilisateurs/Utilisateur.cs | 24 +++ VeraxShield/VeraxShield/pages/Index.razor | 5 + VeraxShield/VeraxShield/pages/_Host.cshtml | 44 +++++ VeraxShield/VeraxShield/pages/_Imports.razor | 3 + .../utilisateurs/AjouterUtilisateur.razor | 11 ++ .../utilisateurs/AjouterUtilisateur.razor.cs | 10 + .../utilisateurs/ListeUtilisateurs.razor | 85 +++++++++ .../utilisateurs/ListeUtilisateurs.razor.cs | 68 +++++++ .../utilisateurs/ModifierUtilisateur.razor | 6 + .../utilisateurs/ModifierUtilisateur.razor.cs | 38 ++++ .../IUtilisateursDataService.cs | 20 ++ .../UtilisateursDataServiceFactice.cs | 175 ++++++++++++++++++ VeraxShield/VeraxShield/wwwroot/css/site.css | 28 +++ .../wwwroot/data/fakeUtilisateurs.json | 92 +++++++++ 33 files changed, 1154 insertions(+) create mode 100644 VeraxShield/VeraxShield.sln create mode 100644 VeraxShield/VeraxShield/App.razor create mode 100644 VeraxShield/VeraxShield/MainLayout.razor create mode 100644 VeraxShield/VeraxShield/Program.cs create mode 100644 VeraxShield/VeraxShield/Properties/launchSettings.json create mode 100644 VeraxShield/VeraxShield/VeraxShield.csproj create mode 100644 VeraxShield/VeraxShield/_Imports.razor create mode 100644 VeraxShield/VeraxShield/appsettings.Development.json create mode 100644 VeraxShield/VeraxShield/appsettings.json create mode 100644 VeraxShield/VeraxShield/composants/formulaires/FormulaireAjout.razor create mode 100644 VeraxShield/VeraxShield/composants/formulaires/FormulaireAjout.razor.cs create mode 100644 VeraxShield/VeraxShield/composants/formulaires/FormulaireModification.razor create mode 100644 VeraxShield/VeraxShield/composants/formulaires/FormulaireModification.razor.cs create mode 100644 VeraxShield/VeraxShield/composants/formulaires/_Imports.razor create mode 100644 VeraxShield/VeraxShield/composants/formulaires/modeles/FormulaireAjoutModele.cs create mode 100644 VeraxShield/VeraxShield/composants/modals/ModalSuppressionUtilisateur.razor create mode 100644 VeraxShield/VeraxShield/composants/modals/ModalSuppressionUtilisateur.razor.cs create mode 100644 VeraxShield/VeraxShield/composants/modals/_Imports.razor create mode 100644 VeraxShield/VeraxShield/factories/UtilisateursFactory.cs create mode 100644 VeraxShield/VeraxShield/modele/utilisateurs/Utilisateur.cs create mode 100644 VeraxShield/VeraxShield/pages/Index.razor create mode 100644 VeraxShield/VeraxShield/pages/_Host.cshtml create mode 100644 VeraxShield/VeraxShield/pages/_Imports.razor create mode 100644 VeraxShield/VeraxShield/pages/utilisateurs/AjouterUtilisateur.razor create mode 100644 VeraxShield/VeraxShield/pages/utilisateurs/AjouterUtilisateur.razor.cs create mode 100644 VeraxShield/VeraxShield/pages/utilisateurs/ListeUtilisateurs.razor create mode 100644 VeraxShield/VeraxShield/pages/utilisateurs/ListeUtilisateurs.razor.cs create mode 100644 VeraxShield/VeraxShield/pages/utilisateurs/ModifierUtilisateur.razor create mode 100644 VeraxShield/VeraxShield/pages/utilisateurs/ModifierUtilisateur.razor.cs create mode 100644 VeraxShield/VeraxShield/services/UtilisateursDataService/IUtilisateursDataService.cs create mode 100644 VeraxShield/VeraxShield/services/UtilisateursDataService/UtilisateursDataServiceFactice.cs create mode 100644 VeraxShield/VeraxShield/wwwroot/css/site.css create mode 100644 VeraxShield/VeraxShield/wwwroot/data/fakeUtilisateurs.json diff --git a/VeraxShield/VeraxShield.sln b/VeraxShield/VeraxShield.sln new file mode 100644 index 0000000..a6e072d --- /dev/null +++ b/VeraxShield/VeraxShield.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.8.34322.80 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VeraxShield", "VeraxShield\VeraxShield.csproj", "{40D16910-ADA7-496E-BA48-AA9D6FF1E502}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {40D16910-ADA7-496E-BA48-AA9D6FF1E502}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {40D16910-ADA7-496E-BA48-AA9D6FF1E502}.Debug|Any CPU.Build.0 = Debug|Any CPU + {40D16910-ADA7-496E-BA48-AA9D6FF1E502}.Release|Any CPU.ActiveCfg = Release|Any CPU + {40D16910-ADA7-496E-BA48-AA9D6FF1E502}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {547A4495-6E49-40A8-9BEC-23B2D43E92B8} + EndGlobalSection +EndGlobal diff --git a/VeraxShield/VeraxShield/App.razor b/VeraxShield/VeraxShield/App.razor new file mode 100644 index 0000000..623580d --- /dev/null +++ b/VeraxShield/VeraxShield/App.razor @@ -0,0 +1,12 @@ + + + + + + + Not found + +

Sorry, there's nothing at this address.

+
+
+
diff --git a/VeraxShield/VeraxShield/MainLayout.razor b/VeraxShield/VeraxShield/MainLayout.razor new file mode 100644 index 0000000..8754bf8 --- /dev/null +++ b/VeraxShield/VeraxShield/MainLayout.razor @@ -0,0 +1,3 @@ +@inherits LayoutComponentBase + +
@Body
diff --git a/VeraxShield/VeraxShield/Program.cs b/VeraxShield/VeraxShield/Program.cs new file mode 100644 index 0000000..9726563 --- /dev/null +++ b/VeraxShield/VeraxShield/Program.cs @@ -0,0 +1,53 @@ +using Blazored.LocalStorage; + +using Blazorise; +using Blazorise.Bootstrap; +using Blazorise.Icons.FontAwesome; + +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Web; +using VeraxShield.services.UtilisateursDataService; + +var builder = WebApplication.CreateBuilder(args); +builder.Services.AddRazorPages(); +builder.Services.AddServerSideBlazor(); + +// Ajout du client http par défaut : +builder.Services.AddHttpClient(); + +// Ajout du service de gestion des utilisateurs : +// On le met scoped, car c'est comme ça qu'est le service du localStorage alors sinon ça marche pas... +builder.Services.AddScoped(); + +// Ajout du service pour le Blazored LocalStorage : +builder.Services.AddBlazoredLocalStorage(); + +// Ajout de Blazorise : +builder.Services + .AddBlazorise(options => + { + options.Immediate = true; + }) + .AddBootstrapProviders() + .AddFontAwesomeIcons(); + + +var app = builder.Build(); + +if (!app.Environment.IsDevelopment()) +{ + // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + app.UseHsts(); +} + + +app.UseHttpsRedirection(); + +app.UseStaticFiles(); + +app.UseRouting(); + +app.MapBlazorHub(); +app.MapFallbackToPage("/_Host"); + +app.Run(); diff --git a/VeraxShield/VeraxShield/Properties/launchSettings.json b/VeraxShield/VeraxShield/Properties/launchSettings.json new file mode 100644 index 0000000..f8d53ec --- /dev/null +++ b/VeraxShield/VeraxShield/Properties/launchSettings.json @@ -0,0 +1,35 @@ +{ + "iisSettings": { + "iisExpress": { + "applicationUrl": "http://localhost:38362", + "sslPort": 44368 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5272", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:7112;http://localhost:5272", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/VeraxShield/VeraxShield/VeraxShield.csproj b/VeraxShield/VeraxShield/VeraxShield.csproj new file mode 100644 index 0000000..cc1d6a1 --- /dev/null +++ b/VeraxShield/VeraxShield/VeraxShield.csproj @@ -0,0 +1,21 @@ + + + + net7.0 + enable + enable + + + + <_ContentIncludedByDefault Remove="wwwroot\data\fakeUtilisateurs.json" /> + + + + + + + + + + + diff --git a/VeraxShield/VeraxShield/_Imports.razor b/VeraxShield/VeraxShield/_Imports.razor new file mode 100644 index 0000000..b4cb8e5 --- /dev/null +++ b/VeraxShield/VeraxShield/_Imports.razor @@ -0,0 +1,9 @@ +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.JSInterop +@using VeraxShield + +@using Blazored.LocalStorage + +@using Blazorise +@using Blazorise.DataGrid \ No newline at end of file diff --git a/VeraxShield/VeraxShield/appsettings.Development.json b/VeraxShield/VeraxShield/appsettings.Development.json new file mode 100644 index 0000000..f042c67 --- /dev/null +++ b/VeraxShield/VeraxShield/appsettings.Development.json @@ -0,0 +1,9 @@ +{ + "DetailedErrors": true, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/VeraxShield/VeraxShield/appsettings.json b/VeraxShield/VeraxShield/appsettings.json new file mode 100644 index 0000000..4d56694 --- /dev/null +++ b/VeraxShield/VeraxShield/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/VeraxShield/VeraxShield/composants/formulaires/FormulaireAjout.razor b/VeraxShield/VeraxShield/composants/formulaires/FormulaireAjout.razor new file mode 100644 index 0000000..a2b4552 --- /dev/null +++ b/VeraxShield/VeraxShield/composants/formulaires/FormulaireAjout.razor @@ -0,0 +1,58 @@ + + + + + + +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ + + +
\ No newline at end of file diff --git a/VeraxShield/VeraxShield/composants/formulaires/FormulaireAjout.razor.cs b/VeraxShield/VeraxShield/composants/formulaires/FormulaireAjout.razor.cs new file mode 100644 index 0000000..0a9e0dc --- /dev/null +++ b/VeraxShield/VeraxShield/composants/formulaires/FormulaireAjout.razor.cs @@ -0,0 +1,43 @@ +using System.Runtime.InteropServices; +using Microsoft.AspNetCore.Components; +using VeraxShield.composants.formulaires.modeles; +using VeraxShield.factories; +using VeraxShield.modele.utilisateurs; +using VeraxShield.services.UtilisateursDataService; + +namespace VeraxShield.composants.formulaires +{ + public partial class FormulaireAjout + { + [Inject] + private NavigationManager NavigationManager { get; set; } + + private FormulaireAjoutModele Modele { get; set; } + + [Inject] + private IUtilisateursDataService utilisateursDataService { get; set; } + + public FormulaireAjout() + { + + } + + protected override async Task OnInitializedAsync() + { + this.Modele = new FormulaireAjoutModele(); + this.Modele.IsBan = false; + + await base.OnInitializedAsync(); + } + + public async void ajouterUtilisateur() + { + Utilisateur nouvelUtilisateur = UtilisateursFactory.toUtilisateur(this.Modele); + await this.utilisateursDataService.AjouterUtilisateur(nouvelUtilisateur); + + //Console.WriteLine("Utilisateur bien ajouté !"); + + this.NavigationManager.NavigateTo("/utilisateurs/liste"); + } + } +} diff --git a/VeraxShield/VeraxShield/composants/formulaires/FormulaireModification.razor b/VeraxShield/VeraxShield/composants/formulaires/FormulaireModification.razor new file mode 100644 index 0000000..ebca44a --- /dev/null +++ b/VeraxShield/VeraxShield/composants/formulaires/FormulaireModification.razor @@ -0,0 +1,58 @@ + + + + + + +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ + + +
\ No newline at end of file diff --git a/VeraxShield/VeraxShield/composants/formulaires/FormulaireModification.razor.cs b/VeraxShield/VeraxShield/composants/formulaires/FormulaireModification.razor.cs new file mode 100644 index 0000000..5b1c929 --- /dev/null +++ b/VeraxShield/VeraxShield/composants/formulaires/FormulaireModification.razor.cs @@ -0,0 +1,54 @@ +using Microsoft.AspNetCore.Components; +using VeraxShield.composants.formulaires.modeles; +using VeraxShield.factories; +using VeraxShield.modele.utilisateurs; +using VeraxShield.services.UtilisateursDataService; + +namespace VeraxShield.composants.formulaires +{ + public partial class FormulaireModification + { + [Parameter] + public Utilisateur Utilisateur {get; set;} + + public FormulaireAjoutModele Modele {get; set;} + + [Inject] + private IUtilisateursDataService utilisateursDataService { get; set; } + + [Inject] + private NavigationManager NavigationManager { get; set;} + + protected override async Task OnParametersSetAsync() + { + + if (this.Utilisateur != null) + { + Console.WriteLine("Le mec encore trouvé : " + this.Utilisateur.Pseudo); + Utilisateur temp = new Utilisateur(" ", " ", " ", " ", " ", " ", true); + this.Modele = UtilisateursFactory.toModele(this.Utilisateur); + } else + { + Console.WriteLine("Le mec nul cette fois..."); + Utilisateur temp = new Utilisateur(" ", " ", " ", " ", " ", " ", true); + this.Modele = UtilisateursFactory.toModele(temp); + } + + + + + + Console.WriteLine("Fin du onParameterEnfant"); + await base.OnParametersSetAsync(); + } + + + protected async Task modifierUtilisateur() + { + Utilisateur temp = UtilisateursFactory.toUtilisateur(this.Modele); + await this.utilisateursDataService.MettreAJourUtilisateur(temp); + + this.NavigationManager.NavigateTo("/utilisateurs/liste"); + } + } +} \ No newline at end of file diff --git a/VeraxShield/VeraxShield/composants/formulaires/_Imports.razor b/VeraxShield/VeraxShield/composants/formulaires/_Imports.razor new file mode 100644 index 0000000..61a6a93 --- /dev/null +++ b/VeraxShield/VeraxShield/composants/formulaires/_Imports.razor @@ -0,0 +1 @@ +@using Microsoft.AspNetCore.Components.Forms diff --git a/VeraxShield/VeraxShield/composants/formulaires/modeles/FormulaireAjoutModele.cs b/VeraxShield/VeraxShield/composants/formulaires/modeles/FormulaireAjoutModele.cs new file mode 100644 index 0000000..60c6462 --- /dev/null +++ b/VeraxShield/VeraxShield/composants/formulaires/modeles/FormulaireAjoutModele.cs @@ -0,0 +1,51 @@ +using System.ComponentModel.DataAnnotations; + +namespace VeraxShield.composants.formulaires.modeles +{ + public class FormulaireAjoutModele + { + [Required] + [StringLength(20, ErrorMessage = "Le pseudo ne doit pas dépasser 20 caractères !")] + public String Pseudo { get; set; } + + [Required] + [StringLength(20, ErrorMessage = "Le nom ne doit pas dépasser 20 caractères !")] + public String Nom { get; set; } + + [Required] + [StringLength(20, ErrorMessage = "Le prénom ne doit pas dépasser 20 caractères !")] + public String Prenom { get; set; } + + [Required] + public String Mail { get; set; } + + [Required] + public String Mdp { get; set; } + + [Required] + public String Role { get; set; } + + [Required] + public Boolean IsBan { get; set; } + + public FormulaireAjoutModele(string pseudo, string nom, string prenom, string mail, string mdp, string role, bool isBan) + { + Pseudo = pseudo; + Nom = nom; + Prenom = prenom; + Mail = mail; + Mdp = mdp; + IsBan = isBan; + } + + public FormulaireAjoutModele() + { + //Pseudo = "temporairementVide"; + //Nom = "temporairementVide"; + //Prenom = "temporairementVide"; + //Mail = "temporairementVide"; + //Mdp = "temporairementVide"; + //IsBan = true; + } + } +} diff --git a/VeraxShield/VeraxShield/composants/modals/ModalSuppressionUtilisateur.razor b/VeraxShield/VeraxShield/composants/modals/ModalSuppressionUtilisateur.razor new file mode 100644 index 0000000..5c63090 --- /dev/null +++ b/VeraxShield/VeraxShield/composants/modals/ModalSuppressionUtilisateur.razor @@ -0,0 +1,24 @@ + + + + + + Etes-vous sûr de vouloir supprimer ? + + + + Souhaitez-vous supprimer l'Utilisateur + @if (utilisateur != null) + { + @utilisateur.Pseudo + } + + ? + + + + + + + + diff --git a/VeraxShield/VeraxShield/composants/modals/ModalSuppressionUtilisateur.razor.cs b/VeraxShield/VeraxShield/composants/modals/ModalSuppressionUtilisateur.razor.cs new file mode 100644 index 0000000..bf06477 --- /dev/null +++ b/VeraxShield/VeraxShield/composants/modals/ModalSuppressionUtilisateur.razor.cs @@ -0,0 +1,43 @@ +using Blazorise; +using Microsoft.AspNetCore.Components; +using VeraxShield.modele.utilisateurs; +using VeraxShield.services.UtilisateursDataService; + +namespace VeraxShield.composants.modals +{ + public partial class ModalSuppressionUtilisateur + { + private Modal modalRef; + + [Parameter] + public Utilisateur? utilisateur { get; set; } + + [Parameter] + public EventCallback modalFerme {get; set;} + + protected async Task suppressionAnnulee() + { + await this.fermer(); + await this.modalFerme.InvokeAsync(false); + } + + protected async Task suppressionConfirmee() + { + await this.fermer(); + await this.modalFerme.InvokeAsync(true); + } + + public async Task afficher() + { + if (this.utilisateur != null) + { + await modalRef.Show(); + } + } + + private Task fermer() + { + return modalRef.Hide(); + } + } +} diff --git a/VeraxShield/VeraxShield/composants/modals/_Imports.razor b/VeraxShield/VeraxShield/composants/modals/_Imports.razor new file mode 100644 index 0000000..d894404 --- /dev/null +++ b/VeraxShield/VeraxShield/composants/modals/_Imports.razor @@ -0,0 +1 @@ +@using Blazorise.Components \ No newline at end of file diff --git a/VeraxShield/VeraxShield/factories/UtilisateursFactory.cs b/VeraxShield/VeraxShield/factories/UtilisateursFactory.cs new file mode 100644 index 0000000..dc5b781 --- /dev/null +++ b/VeraxShield/VeraxShield/factories/UtilisateursFactory.cs @@ -0,0 +1,36 @@ +using VeraxShield.composants.formulaires.modeles; +using VeraxShield.modele.utilisateurs; + +namespace VeraxShield.factories +{ + public static class UtilisateursFactory + { + public static Utilisateur toUtilisateur(FormulaireAjoutModele modele) + { + Utilisateur temp = new Utilisateur( + modele.Pseudo, + modele.Nom, + modele.Prenom, + modele.Role, + modele.Mdp, + modele.Mail, + modele.IsBan); + + return temp; + } + + public static FormulaireAjoutModele toModele(Utilisateur u) + { + FormulaireAjoutModele temp = new FormulaireAjoutModele(); + temp.Pseudo = u.Pseudo; + temp.Nom = u.Nom; + temp.Prenom = u.Prenom; + temp.Mdp = u.Mdp; + temp.Role = u.Role; + temp.Mail = u.Mail; + temp.IsBan = u.IsBan; + + return temp; + } + } +} diff --git a/VeraxShield/VeraxShield/modele/utilisateurs/Utilisateur.cs b/VeraxShield/VeraxShield/modele/utilisateurs/Utilisateur.cs new file mode 100644 index 0000000..b948c5a --- /dev/null +++ b/VeraxShield/VeraxShield/modele/utilisateurs/Utilisateur.cs @@ -0,0 +1,24 @@ +namespace VeraxShield.modele.utilisateurs +{ + public class Utilisateur + { + public String Pseudo { get; set; } + public String Mail { get; set; } + public String Nom { get; set; } + public String Prenom { get; set; } + public String Role { get; set; } + public String Mdp { get; set; } + public Boolean IsBan { get; set; } + + public Utilisateur (String Pseudo, String Nom, String Prenom, String Role, String Mdp, String Mail, Boolean IsBan) + { + this.Pseudo = Pseudo; + this.Nom = Nom; + this.Prenom = Prenom; + this.Role = Role; + this.Mdp = Mdp; + this.Mail = Mail; + this.IsBan = IsBan; + } + } +} diff --git a/VeraxShield/VeraxShield/pages/Index.razor b/VeraxShield/VeraxShield/pages/Index.razor new file mode 100644 index 0000000..80ca94c --- /dev/null +++ b/VeraxShield/VeraxShield/pages/Index.razor @@ -0,0 +1,5 @@ +@page "/" + +

VeraxShield

+ + --> Liste des utilisateurs diff --git a/VeraxShield/VeraxShield/pages/_Host.cshtml b/VeraxShield/VeraxShield/pages/_Host.cshtml new file mode 100644 index 0000000..8db3ab3 --- /dev/null +++ b/VeraxShield/VeraxShield/pages/_Host.cshtml @@ -0,0 +1,44 @@ +@page "/" +@using Microsoft.AspNetCore.Components.Web +@namespace VeraxShield.Pages +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers + + + + + + + + + + + + + + + + + + + +
+ + An error has occurred. This application may no longer respond until reloaded. + + + An unhandled exception has occurred. See browser dev tools for details. + + Reload + 🗙 + +
+ + + + + + + + + + diff --git a/VeraxShield/VeraxShield/pages/_Imports.razor b/VeraxShield/VeraxShield/pages/_Imports.razor new file mode 100644 index 0000000..03978f5 --- /dev/null +++ b/VeraxShield/VeraxShield/pages/_Imports.razor @@ -0,0 +1,3 @@ +@using VeraxShield.composants +@using VeraxShield.composants.modals +@using VeraxShield.composants.formulaires \ No newline at end of file diff --git a/VeraxShield/VeraxShield/pages/utilisateurs/AjouterUtilisateur.razor b/VeraxShield/VeraxShield/pages/utilisateurs/AjouterUtilisateur.razor new file mode 100644 index 0000000..30e0fef --- /dev/null +++ b/VeraxShield/VeraxShield/pages/utilisateurs/AjouterUtilisateur.razor @@ -0,0 +1,11 @@ +@using VeraxShield.composants.formulaires + +@page "/utilisateurs/ajouter" +

Ajouter un utilisateur

+ + + + + + + diff --git a/VeraxShield/VeraxShield/pages/utilisateurs/AjouterUtilisateur.razor.cs b/VeraxShield/VeraxShield/pages/utilisateurs/AjouterUtilisateur.razor.cs new file mode 100644 index 0000000..81a48d7 --- /dev/null +++ b/VeraxShield/VeraxShield/pages/utilisateurs/AjouterUtilisateur.razor.cs @@ -0,0 +1,10 @@ +using Microsoft.AspNetCore.Components; +using VeraxShield.services.UtilisateursDataService; + +namespace VeraxShield.Pages.utilisateurs +{ + public partial class AjouterUtilisateur + { + + } +} diff --git a/VeraxShield/VeraxShield/pages/utilisateurs/ListeUtilisateurs.razor b/VeraxShield/VeraxShield/pages/utilisateurs/ListeUtilisateurs.razor new file mode 100644 index 0000000..57c6276 --- /dev/null +++ b/VeraxShield/VeraxShield/pages/utilisateurs/ListeUtilisateurs.razor @@ -0,0 +1,85 @@ +@using VeraxShield.modele.utilisateurs; + +@page "/utilisateurs/liste" +

Utilisateurs de Verax

+ + + + + + + + + + + + + + + + + @context.PageNumber + + + + + + + + @context.TotalItems total items + @context.TotalItems + + + + + + + + + + + + + +
+ + Ajouter + +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + diff --git a/VeraxShield/VeraxShield/pages/utilisateurs/ListeUtilisateurs.razor.cs b/VeraxShield/VeraxShield/pages/utilisateurs/ListeUtilisateurs.razor.cs new file mode 100644 index 0000000..2016851 --- /dev/null +++ b/VeraxShield/VeraxShield/pages/utilisateurs/ListeUtilisateurs.razor.cs @@ -0,0 +1,68 @@ +using Microsoft.AspNetCore.Components; +using VeraxShield.composants.modals; +using VeraxShield.modele.utilisateurs; +using VeraxShield.services.UtilisateursDataService; + +namespace VeraxShield.pages.utilisateurs +{ + public partial class ListeUtilisateurs + { + [Inject] + private IUtilisateursDataService utilisateursDataService { get; set; } + + public List Utilisateurs { get; set; } + + [Inject] + private NavigationManager NavigationManager { get; set; } + + private Utilisateur? utilisateurSelectionne; + + [Parameter] + public ModalSuppressionUtilisateur Modal {get; set;} + + protected override async Task OnInitializedAsync() + { + //await this.utilisateursDataService.resetDataUtilisateurs(); + + this.utilisateurSelectionne = null; + this.Utilisateurs = await this.utilisateursDataService.getAllUtilisateurs(); + await base.OnInitializedAsync(); + } + + private async Task HandleUtilisateurSupprime() + { + this.Utilisateurs = await this.utilisateursDataService.getAllUtilisateurs(); + StateHasChanged(); // Actualiser la vue + } + + public async Task fermetureModal(bool val) { + + if (val) { + await this.supprimerUtilisateur(this.utilisateurSelectionne); + } + } + + public async Task supprimerUtilisateur(Utilisateur u) + { + await this.utilisateursDataService.SupprimerUtilisateur(u); + this.Utilisateurs = await this.utilisateursDataService.getAllUtilisateurs(); + + this.NavigationManager.NavigateTo("/utilisateurs/liste"); + } + + public async Task afficherModal() + { + if (this.Modal != null) { + await this.Modal.afficher(); + } + } + + public void modifierUtilisateur() + { + if (this.utilisateurSelectionne != null) + { + this.NavigationManager.NavigateTo("/utilisateurs/modifier/" + utilisateurSelectionne.Pseudo); + } + } + } +} diff --git a/VeraxShield/VeraxShield/pages/utilisateurs/ModifierUtilisateur.razor b/VeraxShield/VeraxShield/pages/utilisateurs/ModifierUtilisateur.razor new file mode 100644 index 0000000..3f03520 --- /dev/null +++ b/VeraxShield/VeraxShield/pages/utilisateurs/ModifierUtilisateur.razor @@ -0,0 +1,6 @@ +@page "/utilisateurs/modifier/{pseudo}" + +

Modifier l'utilisateur

+ + + diff --git a/VeraxShield/VeraxShield/pages/utilisateurs/ModifierUtilisateur.razor.cs b/VeraxShield/VeraxShield/pages/utilisateurs/ModifierUtilisateur.razor.cs new file mode 100644 index 0000000..ff01048 --- /dev/null +++ b/VeraxShield/VeraxShield/pages/utilisateurs/ModifierUtilisateur.razor.cs @@ -0,0 +1,38 @@ +using Microsoft.AspNetCore.Components; +using VeraxShield.modele.utilisateurs; +using VeraxShield.services.UtilisateursDataService; + +namespace VeraxShield.pages.utilisateurs +{ + public partial class ModifierUtilisateur + { + [Parameter] + public String Pseudo {get; set;} + + public Utilisateur Utilisateur { get; set;} + + [Inject] + private IUtilisateursDataService utilisateursDataService {get; set;} + + private Utilisateur utilisateur {get; set;} + + protected override async Task OnInitializedAsync() + { + Console.WriteLine("Passage dans le OnInitializedAsync..."); + + this.Utilisateur = await this.utilisateursDataService.getUtilisateurFromPseudo(this.Pseudo); + + if (Utilisateur != null) + { + Console.WriteLine("Pseudo du mec : " + this.Utilisateur.Pseudo); + } + else + { + Console.WriteLine("L'utilisateur est null..."); + } + + Console.WriteLine("Fin du OnInitializedParent"); + await base.OnInitializedAsync(); + } + } +} \ No newline at end of file diff --git a/VeraxShield/VeraxShield/services/UtilisateursDataService/IUtilisateursDataService.cs b/VeraxShield/VeraxShield/services/UtilisateursDataService/IUtilisateursDataService.cs new file mode 100644 index 0000000..0b3fd06 --- /dev/null +++ b/VeraxShield/VeraxShield/services/UtilisateursDataService/IUtilisateursDataService.cs @@ -0,0 +1,20 @@ +using VeraxShield.modele.utilisateurs; + +namespace VeraxShield.services.UtilisateursDataService +{ + public interface IUtilisateursDataService + { + public Task> getAllUtilisateurs(); + + public Task SaveAllUtilisateurs(List list); + + public Task resetDataUtilisateurs(); + public Task AjouterUtilisateur(Utilisateur u); + + public Task SupprimerUtilisateur(Utilisateur u); + + public Task MettreAJourUtilisateur(Utilisateur u); + + public Task getUtilisateurFromPseudo(String pseudo); + } +} diff --git a/VeraxShield/VeraxShield/services/UtilisateursDataService/UtilisateursDataServiceFactice.cs b/VeraxShield/VeraxShield/services/UtilisateursDataService/UtilisateursDataServiceFactice.cs new file mode 100644 index 0000000..102c849 --- /dev/null +++ b/VeraxShield/VeraxShield/services/UtilisateursDataService/UtilisateursDataServiceFactice.cs @@ -0,0 +1,175 @@ +using Blazored.LocalStorage; +using Microsoft.AspNetCore.Components; +using VeraxShield.modele.utilisateurs; + +namespace VeraxShield.services.UtilisateursDataService +{ + public class UtilisateursDataServiceFactice : IUtilisateursDataService + { + [Inject] + private HttpClient _clientHttp { get; set; } + + [Inject] + public ILocalStorageService _localStorage { get; set; } + + [Inject] + public NavigationManager _navigationManager { get; set; } + + private String EmplacementLocalStorage { get; set; } + private String EmplacementJson {get; set;} + + + public UtilisateursDataServiceFactice(HttpClient clientHttp, ILocalStorageService localStorage, NavigationManager navigationManager) + { + this._clientHttp = clientHttp; + this._localStorage = localStorage; + this._navigationManager = navigationManager; + + this.EmplacementLocalStorage = "utilisateursData"; + this.EmplacementJson = $"{_navigationManager.BaseUri}data/fakeUtilisateurs.json"; + } + + public async Task> getAllUtilisateurs() + + { + List lUtilisateurs = new List(); + + lUtilisateurs = await this.getUtilisateursFromLocalStorage(); + if (lUtilisateurs.Count == 0) + { + lUtilisateurs = await this.getUtilisateursFromJson(this.EmplacementJson); + await this.saveUtilisateursLocalStorage(lUtilisateurs); + + Console.WriteLine("--> Le contenu du local storage a été écrasé !"); + } + + return lUtilisateurs; + } + + public async Task resetDataUtilisateurs() + { + List lUtilisateurs = new List(); + lUtilisateurs = await this.getUtilisateursFromJson(this.EmplacementJson); + await this.saveUtilisateursLocalStorage(lUtilisateurs); + + Console.WriteLine("Local storage reset !"); + } + + public async Task SaveAllUtilisateurs(List list) + { + await this.saveUtilisateursLocalStorage(list); + } + + public async Task AjouterUtilisateur(Utilisateur u) + { + List data = await this.getAllUtilisateurs(); + data.Add(u); + await this.SaveAllUtilisateurs(data); + } + + public async Task SupprimerUtilisateur(Utilisateur u) + { + List data = await this.getAllUtilisateurs(); + + foreach (Utilisateur temp in data) + { + Console.WriteLine(" - d : " + temp.Pseudo); + } + + int index = -1; + + foreach(Utilisateur temp in data) + { + if (temp.Pseudo == u.Pseudo) + { + index = data.IndexOf(temp); + } + } + + Console.WriteLine("Index : " + index); + + if (index != -1) + { + data.RemoveAt(index); + } + + await this.SaveAllUtilisateurs(data); + + Console.WriteLine("L'utilisateur " + u.Pseudo + "supprimé !"); + + data = await this.getAllUtilisateurs(); + + foreach (Utilisateur temp in data) + { + Console.WriteLine(temp.Pseudo); + } + } + + public async Task MettreAJourUtilisateur(Utilisateur u) + { + await this.SupprimerUtilisateur(u); + await this.AjouterUtilisateur(u); + } + + private async Task> getUtilisateursFromJson(String cheminVersJson) + { + List utilisateursDeserialise = new List (); + + var data = await _clientHttp.GetFromJsonAsync(cheminVersJson); + utilisateursDeserialise = data.ToList(); + + return utilisateursDeserialise; + } + + private async Task> getUtilisateursFromLocalStorage() + { + List utilisateursFromLocalStorage = null; + + var data = await _localStorage.GetItemAsync(EmplacementLocalStorage); + //utilisateursFromLocalStorage = data.ToList(); + + if (data == null) + { + utilisateursFromLocalStorage = new List(); + } + else + { + utilisateursFromLocalStorage = data.ToList(); + } + + return utilisateursFromLocalStorage; + } + + public async Task getUtilisateurFromPseudo(String pseudo) + { + Console.WriteLine("Passage dans le getFromPseudo..."); + List utilisateurs = await this.getAllUtilisateurs(); + Utilisateur temp = null; + + foreach (Utilisateur u in utilisateurs) + { + if (u.Pseudo == pseudo) + { + temp = u; + } + } + + if (temp == null) + { + Console.WriteLine("Aucun u. par pseudo trouve..."); + } else + { + Console.WriteLine("Utilisateur trouvé : " + temp.Pseudo); + } + + return temp; + } + + + private async Task saveUtilisateursLocalStorage(List lUtilisateurs) + { + await _localStorage.SetItemAsync(this.EmplacementLocalStorage, lUtilisateurs); + } + + } +} diff --git a/VeraxShield/VeraxShield/wwwroot/css/site.css b/VeraxShield/VeraxShield/wwwroot/css/site.css new file mode 100644 index 0000000..641a62b --- /dev/null +++ b/VeraxShield/VeraxShield/wwwroot/css/site.css @@ -0,0 +1,28 @@ +#blazor-error-ui { + background: lightyellow; + bottom: 0; + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); + display: none; + left: 0; + padding: 0.6rem 1.25rem 0.7rem 1.25rem; + position: fixed; + width: 100%; + z-index: 1000; +} + + #blazor-error-ui .dismiss { + cursor: pointer; + position: absolute; + right: 3.5rem; + top: 0.5rem; + } + +.blazor-error-boundary { + background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; + padding: 1rem 1rem 1rem 3.7rem; + color: white; +} + + .blazor-error-boundary::after { + content: "An error has occurred." + } diff --git a/VeraxShield/VeraxShield/wwwroot/data/fakeUtilisateurs.json b/VeraxShield/VeraxShield/wwwroot/data/fakeUtilisateurs.json new file mode 100644 index 0000000..60a0225 --- /dev/null +++ b/VeraxShield/VeraxShield/wwwroot/data/fakeUtilisateurs.json @@ -0,0 +1,92 @@ +[ + { + "Pseudo": "john_doe", + "Mail": "john.doe@example.com", + "Nom": "Doe", + "Prenom": "John", + "Role": "Utilisateur standard", + "Mdp": "MotDePasse123", + "IsBan": false + }, + { + "Pseudo": "jane_smith", + "Mail": "jane.smith@example.com", + "Nom": "Smith", + "Prenom": "Jane", + "Role": "Administrateur", + "Mdp": "SecretPassword456", + "IsBan": true + }, + { + "Pseudo": "alice_jones", + "Mail": "alice.jones@example.com", + "Nom": "Jones", + "Prenom": "Alice", + "Role": "Utilisateur standard", + "Mdp": "SecurePass789", + "IsBan": false + }, + { + "Pseudo": "bob_williams", + "Mail": "bob.williams@example.com", + "Nom": "Williams", + "Prenom": "Bob", + "Role": "Utilisateur standard", + "Mdp": "StrongPassword1", + "IsBan": true + }, + { + "Pseudo": "emily_davis", + "Mail": "emily.davis@example.com", + "Nom": "Davis", + "Prenom": "Emily", + "Role": "Utilisateur standard", + "Mdp": "SecurePassword789", + "IsBan": false + }, + { + "Pseudo": "alex_miller", + "Mail": "alex.miller@example.com", + "Nom": "Miller", + "Prenom": "Alex", + "Role": "Modérateur", + "Mdp": "StrongPass123", + "IsBan": true + }, + { + "Pseudo": "sophie_brown", + "Mail": "sophie.brown@example.com", + "Nom": "Brown", + "Prenom": "Sophie", + "Role": "Utilisateur standard", + "Mdp": "Password123", + "IsBan": false + }, + { + "Pseudo": "william_taylor", + "Mail": "william.taylor@example.com", + "Nom": "Taylor", + "Prenom": "William", + "Role": "Administrateur", + "Mdp": "AdminPass456", + "IsBan": true + }, + { + "Pseudo": "olivia_clark", + "Mail": "olivia.clark@example.com", + "Nom": "Clark", + "Prenom": "Olivia", + "Role": "Utilisateur standard", + "Mdp": "OliviaPass789", + "IsBan": false + }, + { + "Pseudo": "jacob_morgan", + "Mail": "jacob.morgan@example.com", + "Nom": "Morgan", + "Prenom": "Jacob", + "Role": "Modérateur", + "Mdp": "JacobPass1", + "IsBan": true + } +]