feat : fonction ajout admins
continuous-integration/drone/push Build is passing Details

pull/38/head
Maxence GUITARD 1 year ago
parent f7189fc321
commit 441987fe09

@ -1,19 +0,0 @@
using System.ComponentModel.DataAnnotations;
namespace Blazor.Models
{
public class AdministratorModel
{
public int Id { get; private set; }
[Required(ErrorMessage = "Username is required")]
[StringLength(50, ErrorMessage = "Username is too long.")]
public string Username { get; private set; }
[Required(ErrorMessage = "Password is required")]
public string hashedPassword { get; set; }
}
}

@ -6,23 +6,8 @@ namespace Blazor.Models;
public class AdministratorsModel : PasswordHasher<string>
{
public int Id { get; private set; }
public string Username { get; private set; }
public string HashedPassword { get; set; }
public int Id { get; set; }
public string Username { get; set; }
public string hashedPassword { get; set; }
private byte[] salt = RandomNumberGenerator.GetBytes(128 / 8); // for password hash
AdministratorsModel(int id, string username, string password)
{
this.Id = id;
this.Username = username;
//hash password
this.HashedPassword = Convert.ToBase64String(KeyDerivation.Pbkdf2(
password: password!,
salt: salt,
prf: KeyDerivationPrf.HMACSHA256,
iterationCount: 100000,
numBytesRequested: 256 / 8)
);
}
}

@ -3,18 +3,18 @@
<h3>AddAdministrators</h3>
<EditForm Model="@administratorModel" OnValidSubmit="@HandleValidSubmit">
<EditForm Model="@administratorsModel" OnValidSubmit="@HandleValidSubmit">
<DataAnnotationsValidator />
<ValidationSummary />
<p>
<label for="username">
Username:
<InputText id="username" @bind-Value="administratorModel.Username" />
<InputText id="username" @bind-Value="administratorsModel.Username" />
</label>
<label>
Password:
<InputText id="hashedpassword" @bind-Value="administratorModel.hashedPassword" />
<InputText id="hashedpassword" @bind-Value="administratorsModel.hashedPassword" />
</label>
</p>

@ -8,7 +8,7 @@ namespace Blazor.Pages
{
public partial class AddAdministrators
{
private AdministratorModel administratorModel = new();
private AdministratorsModel administratorsModel = new();
[Inject]
public IDataService DataService { get; set; }
@ -19,7 +19,7 @@ namespace Blazor.Pages
private async void HandleValidSubmit()
{
await DataService.Add(administratorModel);
await DataService.Add(administratorsModel);
NavigationManager.NavigateTo("administrators");
}

@ -1,6 +1,7 @@
@page "/administrators"
@using Blazorise.DataGrid
@using Blazor.ViewClasses
<h3>Administrators</h3>
<DataGrid TItem="Administrator"

@ -133,46 +133,80 @@ namespace Blazor.Services
return admin;
}
public async Task Update(int id, AdministratorModel model)
public async Task Update(int id, AdministratorsModel model)
{
// Get the current data
var currentData = await _localStorage.GetItemAsync<List<Administrator>>("data");
// Get the chapter int the list
// Get the admin int the list
var admin = currentData.FirstOrDefault(w => w.Id == id);
// Check if chapter exist
// Check if admin exist
if (admin == null)
{
throw new Exception($"Unable to found the item with ID: {id}");
}
// Modify the content of the chapter
// Modify the content of the adminnistrator
admin.Username = model.Username;
admin.hashedPassword = model.hashedPassword;
// Save the data
await _localStorage.SetItemAsync("data", currentData);
}
public async Task Add(AdministratorModel model)
public async Task Add(AdministratorsModel model)
{
// Get the current data
var currentData = await _localStorage.GetItemAsync<List<Chapter>>("data");
var currentData = await _localStorage.GetItemAsync<List<Administrator>>("data");
// Simulate the Id
model.Id = currentData.Max(s => s.Id) + 1;
// Add the chapter to the current data
currentData.Add(new Chapter
currentData.Add(new Administrator
{
Id = model.Id,
Name = model.Name
Username = model.Username,
hashedPassword = model.hashedPassword
});
// Save the data
await _localStorage.SetItemAsync("data", currentData);
}
public async Task<int> CountAdmin()
{
// Load data from the local storage
var currentData = await _localStorage.GetItemAsync<Administrator[]>("data");
// Check if data exist in the local storage
if (currentData == null)
{
// this code add in the local storage the fake data
var originalData = await _http.GetFromJsonAsync<Administrator[]>($"{_navigationManager.BaseUri}fake-administrator.json");
await _localStorage.SetItemAsync("data", originalData);
}
return (await _localStorage.GetItemAsync<Administrator[]>("data")).Length;
}
public async Task<List<Administrator>> ListAdmin(int currentPage, int pageSize)
{
// Load data from the local storage
var currentData = await _localStorage.GetItemAsync<Administrator[]>("data");
// Check if data exist in the local storage
if (currentData == null)
{
// this code add in the local storage the fake data
var originalData = await _http.GetFromJsonAsync<Administrator[]>($"{_navigationManager.BaseUri}fake-administrator.json");
await _localStorage.SetItemAsync("data", originalData);
}
return (await _localStorage.GetItemAsync<Administrator[]>("data")).Skip((currentPage - 1) * pageSize).Take(pageSize).ToList();
}
}
}

@ -15,9 +15,9 @@ namespace Blazor.Services
Task Update(int id, ChapterModel model);
Task Add(AdministratorModel model);
Task Add(AdministratorsModel model);
Task Update(int id, AdministratorModel model);
Task Update(int id, AdministratorsModel model);
Task<Administrator> GetAdminById(int id);

@ -2,14 +2,8 @@
public class Administrator
{
public int Id { get; private set; }
public string Username { get; private set; }
public int Id { get; set; }
public string Username { get; set; }
public string hashedPassword { get; set; }
public Administrator(int id, string username, string hashedPassword)
{
Id = id;
Username = username;
this.hashedPassword = hashedPassword;
}
}

Loading…
Cancel
Save