Merge : Oui

pull/38/head
Jade VAN BRABANDT 1 year ago
commit 90327265b9

@ -6,6 +6,13 @@
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Pages\Player\**" />
<Content Remove="Pages\Player\**" />
<EmbeddedResource Remove="Pages\Player\**" />
<None Remove="Pages\Player\**" />
</ItemGroup>
<ItemGroup>
<Content Remove="Pages\_Layout.cshtml" />
</ItemGroup>
@ -18,6 +25,7 @@
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.4.0" />
<PackageReference Include="ChoETL.JSON.NETStandard" Version="1.2.1.64" />
<PackageReference Include="ChoETL.NETStandard" Version="1.2.1.64" />
<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="8.0.0" />
<PackageReference Include="System.Net.Http" Version="4.3.4" />
<PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
</ItemGroup>

@ -1,13 +1,30 @@
using Microsoft.AspNetCore.Cryptography.KeyDerivation;
using Microsoft.AspNetCore.Identity;
using System.Security.Cryptography;
using System.Text;
namespace Blazor.Models;
public class AdministratorModel : PasswordHasher<string>
public class AdministratorModel
{
public int Id { get; set; }
public string Username { get; set; }
public string HashedPassword { get; set; }
public void HashPassword(string password)
{
using (MD5 md5 = MD5.Create())
{
byte[] inputBytes = Encoding.UTF8.GetBytes(password);
byte[] hashBytes = md5.ComputeHash(inputBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
sb.Append(hashBytes[i].ToString("x2"));
}
HashedPassword = sb.ToString();
}
}
}

@ -1,7 +1,7 @@
@page "/addAdministrators"
@page "/addAdministrator"
@using Blazor.Models
<h3>AddAdministrators</h3>
<h3>AddAdministrator</h3>
<EditForm Model="@administratorModel" OnValidSubmit="@HandleValidSubmit">
<DataAnnotationsValidator />

@ -16,11 +16,40 @@ namespace Blazor.Pages.Admins
[Inject]
public NavigationManager NavigationManager { get; set; }
[Inject]
public ILogger<AddAdministrator> Logger { get; set; }
private async void HandleValidSubmit()
{
administratorModel.HashPassword(administratorModel.HashedPassword);
await DataService.Add(administratorModel);
var formData = new List<KeyValuePair<string, string>>();
formData.Add(new KeyValuePair<string, string>("username", administratorModel.Username));
formData.Add(new KeyValuePair<string, string>("password", administratorModel.HashedPassword));
var formContent = new FormUrlEncodedContent(formData);
string apiUri = "https://trusting-panini.87-106-126-109.plesk.page/api/add/administrators";
using (var httpClient = new HttpClient())
{
var response = await httpClient.PostAsync(apiUri, formContent);
if (response.IsSuccessStatusCode)
{
var responseBody = await response.Content.ReadAsStringAsync();
}
else
{
var errorResponse = await response.Content.ReadAsStringAsync();
}
}
Logger.LogInformation("Admin '{administratorsModelName}' added", administratorModel.Username);
NavigationManager.NavigateTo("administrators");
}
}

@ -9,6 +9,7 @@ using Blazor.Modals;
using Blazor.Services;
using Blazored.Modal;
using Blazored.Modal;
using Blazor.Pages.Chapters;
namespace Blazor.Pages.Admins;
@ -43,13 +44,13 @@ public partial class Administrators
}
// When you use a real API, we use this follow code
//var response = await Http.GetJsonAsync<Item[]>( $"http://my-api/api/data?page={e.Page}&pageSize={e.PageSize}" );
var response = (await Http.GetFromJsonAsync<Administrator[]>($"{NavigationManager.BaseUri}fake-administrator.json")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList();
//var response = await Http.GetFromJsonAsync<ChaptersModel[]>( $"https://trusting-panini.87-106-126-109.plesk.page/api/administrators?page={e.Page}&pageSize={e.PageSize}" );
var response = Http.GetFromJsonAsync<Administrator[]>($"https://trusting-panini.87-106-126-109.plesk.page/api/administrators").Result;
if (!e.CancellationToken.IsCancellationRequested)
{
totalItem = (await Http.GetFromJsonAsync<List<Administrator>>($"{NavigationManager.BaseUri}fake-administrator.json")).Count;
administrators = new List<Administrator>(response); // an actual data for the current page
totalItem = administrators.Count;
}
}
@ -67,7 +68,7 @@ public partial class Administrators
if (currentData == null)
{
// this code add in the local storage the fake data (we load the data sync for initialize the data before load the OnReadData method)
var originalData = Http.GetFromJsonAsync<AdministratorModel[]>($"trusting-panini.87-106-126-109.plesk.page/api/chapters").Result;
var originalData = Http.GetFromJsonAsync<AdministratorModel[]>($"https://trusting-panini.87-106-126-109.plesk.page/api/administrators").Result;
await LocalStorage.SetItemAsync("data", originalData);
}
}

@ -1,4 +1,5 @@
using Blazor.Models;
using Blazor.Pages.Chapters;
using Blazor.Services;
using Microsoft.AspNetCore.Components;
@ -21,9 +22,15 @@ namespace Blazor.Pages.Admins
[Inject]
public IWebHostEnvironment WebHostEnvironment { get; set; }
[Inject]
public ILogger<EditAdministrator> Logger { get; set; }
private string OldAdminName { get; set; }
protected override async Task OnInitializedAsync()
{
var administrator = await DataService.GetAdminById(Id);
OldAdminName = administrator.Username;
// Set the model with the admin
administratorModel = new AdministratorModel
@ -37,6 +44,9 @@ namespace Blazor.Pages.Admins
{
await DataService.Update(Id, administratorModel);
Logger.LogInformation("Admin '{OldAdminModelName}' edited in '{NewAdminModelName}'",OldAdminName,administratorsModel.Username);
NavigationManager.NavigateTo("administrators");
}
}

@ -14,6 +14,10 @@ public partial class AddChapter
[Inject]
public NavigationManager NavigationManager { get; set; }
[Inject]
public ILogger<AddChapter> Logger { get; set; }
private async void HandleValidSubmit()
{
@ -40,6 +44,9 @@ public partial class AddChapter
var errorResponse = await response.Content.ReadAsStringAsync();
}
}
Logger.LogInformation("Chapter '{chapterModelName}' added",chapterModel.Name);
NavigationManager.NavigateTo("chapters");
}

@ -20,9 +20,15 @@ public partial class EditChapter
[Inject]
public IWebHostEnvironment WebHostEnvironment { get; set; }
[Inject]
public ILogger<EditChapter> Logger { get; set; }
private string OldChapterName { get; set; }
protected override async Task OnInitializedAsync()
{
var chapter = await DataService.GetById(Id);
OldChapterName = chapter.Name;
// Set the model with the chapter
chapterModel = new ChapterModel
@ -35,6 +41,7 @@ public partial class EditChapter
private async void HandleValidSubmit()
{
await DataService.Update(Id, chapterModel);
var formData = new List<KeyValuePair<string, string>>();
formData.Add(new KeyValuePair<string, string>("name", chapterModel.Name));
@ -47,6 +54,7 @@ public partial class EditChapter
{
var response = await httpClient.PostAsync(apiUri, formContent);
if (response.IsSuccessStatusCode)
{
var responseBody = await response.Content.ReadAsStringAsync();
@ -56,6 +64,8 @@ public partial class EditChapter
var errorResponse = await response.Content.ReadAsStringAsync();
}
}
Logger.LogInformation("Chapter '{OldChapterModelName}' edited in '{NewChapterModelName}'", OldChapterName, chapterModel.Name);
NavigationManager.NavigateTo("chapters");
}
}

@ -5,7 +5,7 @@
<h3>Chapters</h3>
<div>
<NavLink class="btn btn-primary" href="addChapter" Match="NavLinkMatch.All">
<NavLink class="btn btn-primary" href="addQuestion" Match="NavLinkMatch.All">
<i class="fa fa-plus"></i> Ajouter
</NavLink>
</div>

@ -7,6 +7,7 @@ using Blazorise.Icons.FontAwesome;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using Blazored.Modal;
using Microsoft.Extensions.Logging;
var builder = WebApplication.CreateBuilder(args);
@ -36,6 +37,8 @@ builder.Services.AddBlazoredModal();
builder.Services.AddScoped<IDataService, DataLocalService>();
builder.Logging.AddConfiguration(builder.Configuration.GetSection("Logging"));
var app = builder.Build();
// Configure the HTTP request pipeline.

@ -2,8 +2,8 @@
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
},
"AllowedHosts": "*"
}
Loading…
Cancel
Save