parent
0de1a63ab9
commit
f4b15139f5
@ -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="@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,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 @@
|
||||
@using Blazorise.Components
|
@ -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,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,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,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…
Reference in new issue