reparation du repo...

testMotDePasse
Siwa12100 1 year ago
parent 0de1a63ab9
commit f4b15139f5

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

@ -0,0 +1,12 @@
<Router AppAssembly="@typeof(App).Assembly">
<Found Context="routeData">
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
<FocusOnNavigate RouteData="@routeData" Selector="h1" />
</Found>
<NotFound>
<PageTitle>Not found</PageTitle>
<LayoutView Layout="@typeof(MainLayout)">
<p role="alert">Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
</Router>

@ -0,0 +1,3 @@
@inherits LayoutComponentBase
<main> @Body </main>

@ -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<IUtilisateursDataService, UtilisateursDataServiceFactice>();
// 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();

@ -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"
}
}
}
}

@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<_ContentIncludedByDefault Remove="wwwroot\data\fakeUtilisateurs.json" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Blazored.LocalStorage" Version="4.4.0" />
<PackageReference Include="Blazorise.Bootstrap" Version="1.4.0" />
<PackageReference Include="Blazorise.Components" Version="1.4.0" />
<PackageReference Include="Blazorise.DataGrid" Version="1.4.0" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.4.0" />
</ItemGroup>
</Project>

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

@ -0,0 +1,9 @@
{
"DetailedErrors": true,
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}

@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}

@ -0,0 +1,58 @@

<EditForm Model="@Modele" OnValidSubmit="@ajouterUtilisateur">
<DataAnnotationsValidator />
<Microsoft.AspNetCore.Components.Forms.ValidationSummary />
<p>
<label for="pseudo">
Pseudo :
<InputText id="pseudo" @bind-Value="Modele.Pseudo" />
</label>
</p>
<p>
<label for="prenom">
Prénom :
<InputText id="prenom" @bind-Value="Modele.Prenom" />
</label>
</p>
<p>
<label for="nom">
Nom :
<InputText id="nom" @bind-Value="Modele.Nom" />
</label>
</p>
<p>
<label for="role">
Role :
<InputText id="role" @bind-Value="Modele.Role" />
</label>
</p>
<p>
<label for="mail">
Email :
<InputText id="mail" @bind-Value="Modele.Mail" />
</label>
</p>
<p>
<label for="mdp">
Mot de passe :
<InputText id="mdp" @bind-Value="Modele.Mdp" />
</label>
</p>
<p>
<label>
Utilisateur banni :
<InputCheckbox @bind-Value="Modele.IsBan" />
</label>
</p>
<button Type="Submit">Valider la création</button>
</EditForm>

@ -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");
}
}
}

@ -0,0 +1,58 @@
<EditForm Model="@Modele" OnValidSubmit="@modifierUtilisateur">
<DataAnnotationsValidator />
<Microsoft.AspNetCore.Components.Forms.ValidationSummary />
<p>
<label for="pseudo">
Pseudo :
<InputText id="pseudo" @bind-Value="Modele.Pseudo" />
</label>
</p>
<p>
<label for="prenom">
Prénom :
<InputText id="prenom" @bind-Value="Modele.Prenom" />
</label>
</p>
<p>
<label for="nom">
Nom :
<InputText id="nom" @bind-Value="Modele.Nom" />
</label>
</p>
<p>
<label for="role">
Role :
<InputText id="role" @bind-Value="Modele.Role" />
</label>
</p>
<p>
<label for="mail">
Email :
<InputText id="mail" @bind-Value="Modele.Mail" />
</label>
</p>
<p>
<label for="mdp">
Mot de passe :
<InputText id="mdp" @bind-Value="Modele.Mdp" />
</label>
</p>
<p>
<label>
Utilisateur banni :
<InputCheckbox @bind-Value="Modele.IsBan" />
</label>
</p>
<button Type="Submit">Valider la modification </button>
</EditForm>

@ -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");
}
}
}

@ -0,0 +1 @@
@using Microsoft.AspNetCore.Components.Forms

@ -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;
}
}
}

@ -0,0 +1,24 @@
<Modal @ref="modalRef">
<ModalContent Centered>
<ModalHeader>
<ModalTitle>Etes-vous sûr de vouloir supprimer ?</ModalTitle>
</ModalHeader>
<ModalBody>
Souhaitez-vous supprimer l'Utilisateur
@if (utilisateur != null)
{
@utilisateur.Pseudo
}
?
</ModalBody>
<ModalFooter>
<Button Color="Color.Secondary" Clicked="@suppressionAnnulee">Annuler</Button>
<Button Color="Color.Primary" Clicked="@suppressionConfirmee">Supprimer</Button>
</ModalFooter>
</ModalContent>
</Modal>

@ -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<bool> 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();
}
}
}

@ -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;
}
}
}

@ -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;
}
}
}

@ -0,0 +1,5 @@
@page "/"
<h1>VeraxShield</h1>
<NavLink href="/utilisateurs/liste"> --> Liste des utilisateurs</NavLink>

@ -0,0 +1,44 @@
@page "/"
@using Microsoft.AspNetCore.Components.Web
@namespace VeraxShield.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<base href="~/" />
<link href="css/site.css" rel="stylesheet" />
<component type="typeof(HeadOutlet)" render-mode="ServerPrerendered" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css">
<link href="_content/Blazorise/blazorise.css" rel="stylesheet" />
<link href="_content/Blazorise.Bootstrap/blazorise.bootstrap.css" rel="stylesheet" />
</head>
<body>
<component type="typeof(App)" render-mode="ServerPrerendered" />
<div id="blazor-error-ui">
<environment include="Staging,Production">
An error has occurred. This application may no longer respond until reloaded.
</environment>
<environment include="Development">
An unhandled exception has occurred. See browser dev tools for details.
</environment>
<a href="" class="reload">Reload</a>
<a class="dismiss">🗙</a>
</div>
<script src="_framework/blazor.server.js"></script>
<!-- Nécessaire pour Blazorise : -->
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js" integrity="sha384-VHvPCCyXqtD5DqJeNxl2dtTyhF78xXNXdkwX1CZeRusQfRKp+tA7hAShOK/B/fQ2" crossorigin="anonymous"></script>
</body>
</html>

@ -0,0 +1,3 @@
@using VeraxShield.composants
@using VeraxShield.composants.modals
@using VeraxShield.composants.formulaires

@ -0,0 +1,11 @@
@using VeraxShield.composants.formulaires
@page "/utilisateurs/ajouter"
<h1>Ajouter un utilisateur</h1>
<FormulaireAjout/>

@ -0,0 +1,10 @@
using Microsoft.AspNetCore.Components;
using VeraxShield.services.UtilisateursDataService;
namespace VeraxShield.Pages.utilisateurs
{
public partial class AjouterUtilisateur
{
}
}

@ -0,0 +1,85 @@
@using VeraxShield.modele.utilisateurs;
@page "/utilisateurs/liste"
<h1>Utilisateurs de Verax</h1>
<DataGrid TItem="Utilisateur"
Data="@Utilisateurs"
@bind-SelectedRow="@utilisateurSelectionne"
Responsive
ShowPager
ShowPageSizes
PagerPosition="DataGridPagerPosition.TopAndBottom"
PagerOptions="new(){ ButtonSize=Size.Small }"
OnUtilisateurSupprime="HandleUtilisateurSupprime">
<DataGridColumns>
<DataGridCommandColumn />
<DataGridColumn Field="@nameof(Utilisateur.Pseudo)" Caption="Pseudo" Sortable="false" />
<DataGridColumn Field="@nameof(Utilisateur.Prenom)" Caption="Prenom" Editable />
<DataGridColumn Field="@nameof(Utilisateur.Nom)" Caption="Nom" Editable />
<DataGridColumn Field="@nameof(Utilisateur.IsBan)" Caption="Banissement" Editable />
</DataGridColumns>
<PageButtonTemplate>
<Span TextColor="TextColor.Success">
@context.PageNumber
</Span>
</PageButtonTemplate>
<NextPageButtonTemplate><Icon Name="IconName.StepForward" TextColor="TextColor.Success" /></NextPageButtonTemplate>
<PreviousPageButtonTemplate><Icon Name="IconName.StepBackward" TextColor="TextColor.Success" /></PreviousPageButtonTemplate>
<LastPageButtonTemplate><Icon Name="IconName.Forward" TextColor="TextColor.Success" /></LastPageButtonTemplate>
<FirstPageButtonTemplate><Icon Name="IconName.Backward" TextColor="TextColor.Success" /></FirstPageButtonTemplate>
<TotalItemsTemplate><Badge Color="Color.Success">@context.TotalItems total items</Badge></TotalItemsTemplate>
<TotalItemsShortTemplate><Badge Color="Color.Success">@context.TotalItems</Badge></TotalItemsShortTemplate>
<ItemsPerPageTemplate></ItemsPerPageTemplate>
<PageSelectorTemplate>
<Select TextColor="TextColor.Success" @bind-SelectedValue="@context.CurrentPage" Size="Size.Small">
@for (int i = context.FirstVisiblePage; i <= context.LastVisiblePage; ++i)
{
var pageNumber = i;
<SelectItem Value="@pageNumber">@pageNumber</SelectItem>
}
</Select>
</PageSelectorTemplate>
<PageSizesTemplate>
<Select TextColor="TextColor.Success" @bind-SelectedValue="@context.CurrentPageSize" Size="Size.Small">
@foreach (var curPageSize in context.PageSizes)
{
<SelectItem Value="@curPageSize">@curPageSize</SelectItem>
}
</Select>
</PageSizesTemplate>
</DataGrid>
<div>
<NavLink class="btn btn-primary" href="/utilisateurs/ajouter" Match="NavLinkMatch.All">
<i class="fa fa-plus"></i> Ajouter
</NavLink>
</div>
<div>
<Button Color="Color.Primary" Clicked="@modifierUtilisateur">Modifier</Button>
</div>
<div>
<Button Color="Color.Primary" Clicked="@afficherModal">Supprimer</Button>
</div>
<div>
<ModalSuppressionUtilisateur
@ref ="Modal"
utilisateur="@utilisateurSelectionne"
modalFerme="fermetureModal"/>
</div>

@ -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<Utilisateur> 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);
}
}
}
}

@ -0,0 +1,6 @@
@page "/utilisateurs/modifier/{pseudo}"
<h1> Modifier l'utilisateur </h1>
<FormulaireModification Utilisateur="@Utilisateur" />

@ -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();
}
}
}

@ -0,0 +1,20 @@
using VeraxShield.modele.utilisateurs;
namespace VeraxShield.services.UtilisateursDataService
{
public interface IUtilisateursDataService
{
public Task<List<Utilisateur>> getAllUtilisateurs();
public Task SaveAllUtilisateurs(List<Utilisateur> list);
public Task resetDataUtilisateurs();
public Task AjouterUtilisateur(Utilisateur u);
public Task SupprimerUtilisateur(Utilisateur u);
public Task MettreAJourUtilisateur(Utilisateur u);
public Task<Utilisateur> getUtilisateurFromPseudo(String pseudo);
}
}

@ -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<List<Utilisateur>> getAllUtilisateurs()
{
List<Utilisateur> lUtilisateurs = new List<Utilisateur>();
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<Utilisateur> lUtilisateurs = new List<Utilisateur>();
lUtilisateurs = await this.getUtilisateursFromJson(this.EmplacementJson);
await this.saveUtilisateursLocalStorage(lUtilisateurs);
Console.WriteLine("Local storage reset !");
}
public async Task SaveAllUtilisateurs(List<Utilisateur> list)
{
await this.saveUtilisateursLocalStorage(list);
}
public async Task AjouterUtilisateur(Utilisateur u)
{
List<Utilisateur> data = await this.getAllUtilisateurs();
data.Add(u);
await this.SaveAllUtilisateurs(data);
}
public async Task SupprimerUtilisateur(Utilisateur u)
{
List<Utilisateur> 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<List<Utilisateur>> getUtilisateursFromJson(String cheminVersJson)
{
List<Utilisateur> utilisateursDeserialise = new List<Utilisateur> ();
var data = await _clientHttp.GetFromJsonAsync<Utilisateur[]>(cheminVersJson);
utilisateursDeserialise = data.ToList();
return utilisateursDeserialise;
}
private async Task<List<Utilisateur>> getUtilisateursFromLocalStorage()
{
List<Utilisateur> utilisateursFromLocalStorage = null;
var data = await _localStorage.GetItemAsync<Utilisateur[]>(EmplacementLocalStorage);
//utilisateursFromLocalStorage = data.ToList();
if (data == null)
{
utilisateursFromLocalStorage = new List<Utilisateur>();
}
else
{
utilisateursFromLocalStorage = data.ToList();
}
return utilisateursFromLocalStorage;
}
public async Task<Utilisateur> getUtilisateurFromPseudo(String pseudo)
{
Console.WriteLine("Passage dans le getFromPseudo...");
List<Utilisateur> 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<Utilisateur> lUtilisateurs)
{
await _localStorage.SetItemAsync(this.EmplacementLocalStorage, lUtilisateurs);
}
}
}

@ -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."
}

@ -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
}
]
Loading…
Cancel
Save