added basic functionalities (login, create/del/rename pages)

This commit is contained in:
taywon18
2024-09-22 11:48:59 +02:00
parent d531454166
commit 5707f5a2d4
12 changed files with 374 additions and 31 deletions

View File

@@ -1,12 +1,8 @@
@page "/"
<PageTitle>Index</PageTitle>
<PageTitle>Tagger App</PageTitle>
<h1>Hello, world!</h1>
Welcome to your new appss.
<SurveyPrompt Title="How is Blazor working for you?" />
<h1>Tagger App</h1>
@code{

60
Tagger/Pages/Login.razor Normal file
View File

@@ -0,0 +1,60 @@
@page "/login"
@inject UserManager Users;
@inject IHttpContextAccessor httpContextAccessor;
@inject NavigationManager NavManager;
@inject IHostEnvironmentAuthenticationStateProvider HostAuthentication;
@inject AuthenticationStateProvider AuthenticationStateProvider;
<h3>login</h3>
@if(LoggedIn)
{
<Button @onclick=Logout>Déconnexion</Button>
}
else
{
<InputText @bind-Value=Username placeholder="Identifiant" />
<InputText @bind-Value=Password type="password" placeholder="Mot de passe"/>
<Button @onclick=TryLogin>Connexion</Button>
}
@code {
public string Username { get; set; } = "";
public string Password { get; set; } = "";
public bool LoggedIn { get; set; } = false;
protected async override Task OnInitializedAsync()
{
LoggedIn = await Users.IsLogged();
await base.OnInitializedAsync();
}
protected async override Task OnAfterRenderAsync(bool firstRender)
{
//if(firstRender)
await base.OnAfterRenderAsync(firstRender);
}
public async Task TryLogin()
{
if (await Users.TryLogin(Username, Password))
{
LoggedIn = await Users.IsLogged();
StateHasChanged();
return;
}
}
public async Task Logout()
{
await Users.Logout();
LoggedIn = await Users.IsLogged();
StateHasChanged();
}
}

View File

@@ -1,6 +1,9 @@
@page "/page/{*Route}"
@inject PageProvider Pages;
@inject UserManager Users;
@inject NavigationManager NavManager;
@inject IJSRuntime JS
@if (CurrentPage is null)
{
@@ -11,28 +14,29 @@ else
@((MarkupString)markdownHtml)
<hr />
<div hidden=@(!Editing)>
<div hidden=@(!LoggedIn || !Editing)>
<MarkdownEditor @bind-Value="@markdownValue" ValueHTMLChanged="@OnMarkdownValueHTMLChanged" />
<button @onclick="Save">Sauvegarder</button>
<button @onclick="Delete">Supprimer</button>
</div>
<div hidden=@Editing>
<div hidden=@(!LoggedIn ||Editing)>
<button @onclick="() => {Editing = true;}">Editer</button>
<button>Renommer</button>
<button @onclick=Rename>Renommer</button>
</div>
}
@code {
[Parameter]
public string? Route { get; set; }
public bool LoggedIn { get; set; }
string markdownValue = "";
string markdownHtml ="";
bool Editing = false;
ElementReference Editor;
public MarkdownPage? CurrentPage { get; set; }
@@ -49,6 +53,7 @@ else
return;
markdownValue = CurrentPage.Content;
LoggedIn = await Users.IsLogged();
StateHasChanged();
}
@@ -67,6 +72,21 @@ else
Pages.Save(CurrentPage);
}
async Task Rename()
{
if (CurrentPage is null)
return;
var val = await JS.InvokeAsync<string>("prompt", new[] { "Veuillez indiquer le nouveau chemin de la page" });
if (val is null)
return;
Pages.Delete(CurrentPage.Title);
CurrentPage.Title = val;
Pages.Save(CurrentPage);
NavManager.NavigateTo("/page");
}
void Delete()
{
if (CurrentPage is null)

View File

@@ -1,31 +1,63 @@
@page "/page"
@inject PageProvider Pages;
@inject UserManager Users;
@inject IJSRuntime JS
@if (Paths is null)
@if(!IsLogged)
{
<p>Identification requise</p>
}
else if (Paths is null)
{
<p>Chargement...</p>
}
else
{
@foreach(var p in Paths)
@if(IsLogged)
{
<a href="/page/@p">@p</a>
}
<button @onclick=CreatePage >Ajouter une page</button>
}
<button>Ajouter une page</button>
<ul>
@foreach (var p in Paths)
{
<li><a href="/page/@p">@p</a></li>
}
</ul>
}
@code {
public string[]? Paths { get; set; } = null;
public bool IsLogged = false;
protected override void OnInitialized()
protected override async void OnInitialized()
{
Paths = Pages.List().ToArray();
base.OnInitialized();
await Flush();
}
public async Task Flush()
{
Paths = Pages.List().ToArray();
IsLogged = await Users.IsLogged();
StateHasChanged();
}
public async Task CreatePage()
{
var val = await JS.InvokeAsync<string>("prompt", new[] { "Veuillez indiquer chemin de la page" });
if (val is null)
return;
Pages.Save(new MarkdownPage
{
Title = val,
Content = ""
});
await Flush();
}
}