diff --git a/src/CraftSharp/App.razor b/src/CraftSharp/App.razor
index 79d057a..4a40c50 100644
--- a/src/CraftSharp/App.razor
+++ b/src/CraftSharp/App.razor
@@ -2,17 +2,16 @@
-
-
+
+
-
+
Sorry, there's nothing at this address.
-
+
-
diff --git a/src/CraftSharp/Controllers/CultureController.cs b/src/CraftSharp/Controllers/CultureController.cs
index 7db1cda..09f4472 100644
--- a/src/CraftSharp/Controllers/CultureController.cs
+++ b/src/CraftSharp/Controllers/CultureController.cs
@@ -22,7 +22,8 @@ namespace CraftSharp.Controllers
this.HttpContext.Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(
- new RequestCulture(culture)));
+ new RequestCulture(culture))
+ );
}
return this.LocalRedirect(redirectUri);
diff --git a/src/CraftSharp/Controllers/UserController.cs b/src/CraftSharp/Controllers/UserController.cs
new file mode 100644
index 0000000..ac31e2d
--- /dev/null
+++ b/src/CraftSharp/Controllers/UserController.cs
@@ -0,0 +1,47 @@
+using CraftSharp.Models;
+using CraftSharp.Services;
+using Microsoft.AspNetCore.Components;
+using Microsoft.AspNetCore.Localization;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+using System.Globalization;
+using System.Net;
+
+namespace CraftSharp.Controllers
+{
+ [Microsoft.AspNetCore.Mvc.Route("[controller]/[action]")]
+ public class UserController : Controller
+ {
+ [HttpPost]
+ public IActionResult SetUser([FromBody] String user)
+ {
+ if (user != null)
+ {
+ HttpContext.Response.Cookies.Append(
+ "CurrentUser", user
+ );
+ }
+ return Ok(new { result = "userCookieSet" });
+ }
+
+ [HttpDelete]
+ public IActionResult DeleteUser()
+ {
+
+ this.HttpContext.Response.Cookies.Delete(
+ "CurrentUser"
+ );
+ return Ok(new { result = "userCookieDeleted" });
+
+ }
+
+ [HttpGet]
+ public IActionResult GetUser()
+ {
+ var jsonUser = HttpContext.Request.Cookies["CurrentUser"];
+ return Ok(jsonUser);
+
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/src/CraftSharp/Pages/Connexion.razor.cs b/src/CraftSharp/Pages/Connexion.razor.cs
index 0d6c7e1..428c642 100644
--- a/src/CraftSharp/Pages/Connexion.razor.cs
+++ b/src/CraftSharp/Pages/Connexion.razor.cs
@@ -7,6 +7,9 @@ using CraftSharp.Models;
using CraftSharp.Services;
using Blazorise;
using Newtonsoft.Json;
+using System.Text.RegularExpressions;
+using Newtonsoft.Json.Linq;
+using System.Text;
namespace CraftSharp.Pages
{
@@ -17,18 +20,31 @@ namespace CraftSharp.Pages
[Inject]
public NavigationManager NavigationManager { get; set; }
-
+
+ [Inject]
+ public HttpClient httpClient { get; set; }
private string error { get; set; }
private ConnexionModel loginRequest { get; set; } = new ConnexionModel();
+ protected override async Task OnInitializedAsync()
+ {
+ if (AuthStateProvider.GetCurrentUser() != null && AuthStateProvider.GetCurrentUser().IsAuthenticated)
+ {
+ NavigationManager.NavigateTo("index");
+ }
+ }
+
private async Task OnSubmit()
{
error = null;
try
{
await AuthStateProvider.Login(loginRequest);
+ var stringified = JsonConvert.SerializeObject(loginRequest);
+ var response = await httpClient.PostAsJsonAsync($"{NavigationManager.BaseUri}User/SetUser", stringified);
NavigationManager.NavigateTo("index");
+
}
catch (Exception ex)
{
diff --git a/src/CraftSharp/Pages/Inscription.razor.cs b/src/CraftSharp/Pages/Inscription.razor.cs
index a22075e..a3c523f 100644
--- a/src/CraftSharp/Pages/Inscription.razor.cs
+++ b/src/CraftSharp/Pages/Inscription.razor.cs
@@ -5,6 +5,8 @@ using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Components;
using CraftSharp.Models;
using CraftSharp.Services;
+using Newtonsoft.Json;
+using System.Net.Http;
namespace CraftSharp.Pages
{
@@ -16,14 +18,30 @@ namespace CraftSharp.Pages
[Inject]
public NavigationManager NavigationManager { get; set; }
+ [Inject]
+ public HttpClient httpClient { get; set; }
+
private string error { get; set; }
private InscriptionModel registerRequest { get; set; } = new InscriptionModel();
+ protected override async Task OnInitializedAsync()
+ {
+ if (AuthStateProvider.GetCurrentUser() != null && AuthStateProvider.GetCurrentUser().IsAuthenticated)
+ {
+ NavigationManager.NavigateTo("index");
+ }
+ }
+
private async Task OnSubmit()
{
- await AuthStateProvider.Register(registerRequest);
- NavigationManager.NavigateTo("index");
+ await AuthStateProvider.Register(registerRequest);
+ var stringified = JsonConvert.SerializeObject(new ConnexionModel() {
+ Password=registerRequest.Password,
+ UserName=registerRequest.UserName}
+ );
+ var response = await httpClient.PostAsJsonAsync($"{NavigationManager.BaseUri}User/SetUser", stringified);
+ NavigationManager.NavigateTo("index");
}
}
diff --git a/src/CraftSharp/Pages/List.razor b/src/CraftSharp/Pages/List.razor
index 47f0062..396694b 100644
--- a/src/CraftSharp/Pages/List.razor
+++ b/src/CraftSharp/Pages/List.razor
@@ -1,52 +1,59 @@
@page "/list"
@using CraftSharp.Models
-
@Localizer["Title"]
+@if (AuthStateProvider.GetCurrentUser().Roles.Contains(UserRoles.Admin))
+{
-
-
- @Localizer["Add"]
-
-
+ @Localizer["Title"]
-
-
-
-
- @if (!string.IsNullOrWhiteSpace(context.ImageBase64))
- {
-
- }
- else
- {
-
- }
-
-
-
-
-
-
-
- @(string.Join(", ", ((Item)context).EnchantCategories))
-
-
-
-
- @(string.Join(", ", ((Item)context).RepairWith))
-
-
-
-
-
- @Localizer["Edit"]
-
-
-
-
\ No newline at end of file
+
+
+ @Localizer["Add"]
+
+
+
+
+
+
+
+ @if (!string.IsNullOrWhiteSpace(context.ImageBase64))
+ {
+
+ }
+ else
+ {
+
+ }
+
+
+
+
+
+
+
+ @(string.Join(", ", ((Item)context).EnchantCategories))
+
+
+
+
+ @(string.Join(", ", ((Item)context).RepairWith))
+
+
+
+
+
+ @Localizer["Edit"]
+
+
+
+
+
+}else{
+ FORBIDDEN !!
+}
\ No newline at end of file
diff --git a/src/CraftSharp/Pages/List.razor.cs b/src/CraftSharp/Pages/List.razor.cs
index ca109a2..39aa62c 100644
--- a/src/CraftSharp/Pages/List.razor.cs
+++ b/src/CraftSharp/Pages/List.razor.cs
@@ -16,6 +16,9 @@ namespace CraftSharp.Pages
private int totalItem;
+ [Inject]
+ public CustomStateProvider AuthStateProvider { get; set; }
+
[Inject]
public IStringLocalizer Localizer { get; set; }
diff --git a/src/CraftSharp/Pages/Opening.razor b/src/CraftSharp/Pages/Opening.razor
index be844b6..65d2a4c 100644
--- a/src/CraftSharp/Pages/Opening.razor
+++ b/src/CraftSharp/Pages/Opening.razor
@@ -6,12 +6,11 @@
+ Value="@AuthStateProvider.GetCurrentUser().NumberOfKeys">
-

diff --git a/src/CraftSharp/Pages/Opening.razor.cs b/src/CraftSharp/Pages/Opening.razor.cs
index 5347b86..8140806 100644
--- a/src/CraftSharp/Pages/Opening.razor.cs
+++ b/src/CraftSharp/Pages/Opening.razor.cs
@@ -23,13 +23,7 @@ namespace CraftSharp.Pages
[Inject]
public IDataService DataService { get; set; }
[Inject]
- public CustomStateProvider AuthService { get; set; }
- [Inject]
public CustomStateProvider AuthStateProvider { get; set; }
- [CascadingParameter]
- public Task
Context { get; set; }
-
- int NumberOfKeys { get; set; } = 0;
int CostInKeys { get; set; } = 1;
[Inject]
@@ -43,13 +37,11 @@ namespace CraftSharp.Pages
totalItem = await DataService.Count();
items = await DataService.List(0, totalItem);
-
- NumberOfKeys = AuthService.GetCurrentUser().NumberOfKeys;
}
bool canOpen()
{
- return isChestClosed && NumberOfKeys >= CostInKeys;
+ return isChestClosed && AuthStateProvider.GetCurrentUser().NumberOfKeys >= CostInKeys;
}
async void selectRandom()
@@ -57,7 +49,7 @@ namespace CraftSharp.Pages
if (canOpen())
{
- NumberOfKeys=NumberOfKeys-CostInKeys;
+ AuthStateProvider.GetCurrentUser().NumberOfKeys -= CostInKeys;
randomItem = ItemFactory.GetRandomItem(items);
if (AuthStateProvider.GetCurrentUser().getSizeInventory() <= 64)
{
diff --git a/src/CraftSharp/Pages/Shop.razor b/src/CraftSharp/Pages/Shop.razor
index d8cd0f7..6d060bc 100644
--- a/src/CraftSharp/Pages/Shop.razor
+++ b/src/CraftSharp/Pages/Shop.razor
@@ -6,7 +6,7 @@
+ Value="@AuthService.GetCurrentUser().numberOfEmeralds">
diff --git a/src/CraftSharp/Pages/Shop.razor.cs b/src/CraftSharp/Pages/Shop.razor.cs
index 0986aa6..11c7cf6 100644
--- a/src/CraftSharp/Pages/Shop.razor.cs
+++ b/src/CraftSharp/Pages/Shop.razor.cs
@@ -15,10 +15,6 @@ namespace CraftSharp.Pages
[Inject]
public IStringLocalizer Localizer { get; set; }
- [Inject]
- public IJSRuntime JsRuntime { get; set; }
- int NumberOfEmeralds { get; set; } = 0;
-
List offers = new List()
{
new ShopOfferModel()
@@ -48,7 +44,6 @@ namespace CraftSharp.Pages
protected override async Task OnInitializedAsync()
{
- NumberOfEmeralds = AuthService.GetCurrentUser().numberOfEmeralds;
foreach(ShopOfferModel offer in offers)
{
animation[offer] = "";
@@ -57,9 +52,9 @@ namespace CraftSharp.Pages
private async void buyKeys(ShopOfferModel offer)
{
- if (offer.InputAmount <= NumberOfEmeralds)
+ if (offer.InputAmount <= AuthService.GetCurrentUser().numberOfEmeralds)
{
- NumberOfEmeralds -= offer.InputAmount;
+ AuthService.GetCurrentUser().numberOfEmeralds -= offer.InputAmount;
AuthService.GetCurrentUser().NumberOfKeys += offer.OutputAmount;
}
else
diff --git a/src/CraftSharp/Pages/_Host.cshtml b/src/CraftSharp/Pages/_Host.cshtml
index 30a855b..3451d14 100644
--- a/src/CraftSharp/Pages/_Host.cshtml
+++ b/src/CraftSharp/Pages/_Host.cshtml
@@ -1,8 +1,24 @@
@page "/"
@namespace CraftSharp.Pages
+@using CraftSharp.Models;
+@using CraftSharp.Services;
+@using Microsoft.AspNetCore.Components;
+@using Newtonsoft.Json;
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
+@inject CustomStateProvider authService;
+@inject HttpClient httpClient;
+
@{
Layout = "_Layout";
+ Console.WriteLine("==============START==============");
+ var response = await httpClient.GetAsync($"https://localhost:7139/User/GetUser");
+ string jsonUser = await response.Content.ReadAsStringAsync();
+ var user = new ConnexionModel();
+ if (jsonUser != null && jsonUser.Length != 0)
+ {
+ user = JsonConvert.DeserializeObject(jsonUser);
+ await authService.Login(user);
+ }
}
diff --git a/src/CraftSharp/Program.cs b/src/CraftSharp/Program.cs
index 31efd19..9405507 100644
--- a/src/CraftSharp/Program.cs
+++ b/src/CraftSharp/Program.cs
@@ -18,6 +18,7 @@ using CraftSharp;
using Microsoft.AspNetCore.Mvc.Infrastructure;
using System;
using Microsoft.JSInterop;
+using CraftSharp.Controllers;
var builder = WebApplication.CreateBuilder(args);
@@ -27,16 +28,16 @@ builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton();
builder.Services.AddOptions();
builder.Services.AddAuthorizationCore();
-builder.Services.AddScoped();
-builder.Services.AddScoped(s => s.GetRequiredService());
-builder.Services.AddScoped();
+builder.Services.AddSingleton();
+builder.Services.AddSingleton(s => s.GetRequiredService());
+builder.Services.AddSingleton();
// Add the controller of the app
builder.Services.AddControllers();
// Add the localization to the app and specify the resources path
builder.Services.AddLocalization(opts => { opts.ResourcesPath = "Resources"; });
-
+builder.Services.AddScoped();
builder.Services.AddHttpClient();
builder.Services.AddBlazoredModal();
diff --git a/src/CraftSharp/Services/AuthService.cs b/src/CraftSharp/Services/AuthService.cs
index 5652c56..347854f 100644
--- a/src/CraftSharp/Services/AuthService.cs
+++ b/src/CraftSharp/Services/AuthService.cs
@@ -41,10 +41,13 @@ namespace CraftSharp.Services
public void Login(ConnexionModel loginRequest)
{
+ Console.WriteLine("LOGIN : " + loginRequest.UserName);
var user = CurrentUser.FirstOrDefault(w => w.UserName == loginRequest.UserName && w.Password == loginRequest.Password);
if (user == null)
{
+ Console.WriteLine("LOGINFAILED");
+
throw new Exception("User name or password invalid !");
}
}
diff --git a/src/CraftSharp/Services/CustomStateProvider.cs b/src/CraftSharp/Services/CustomStateProvider.cs
index 059cab0..f1bbc58 100644
--- a/src/CraftSharp/Services/CustomStateProvider.cs
+++ b/src/CraftSharp/Services/CustomStateProvider.cs
@@ -70,12 +70,14 @@ namespace CraftSharp.Services
public CurrentUser GetCurrentUser()
{
- CurrentUser cacheUser;
if (_currentUser != null && _currentUser.IsAuthenticated)
{
+ Console.WriteLine("GETUSER: " + _currentUser.UserName);
return _currentUser;
}
+ Console.WriteLine("GETUSER: FAIL");
+
return new CurrentUser();
}
}
diff --git a/src/CraftSharp/Shared/HeaderLayout.razor.cs b/src/CraftSharp/Shared/HeaderLayout.razor.cs
index f3b9136..280476b 100644
--- a/src/CraftSharp/Shared/HeaderLayout.razor.cs
+++ b/src/CraftSharp/Shared/HeaderLayout.razor.cs
@@ -3,6 +3,7 @@ using CraftSharp.Services;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Authorization;
using Microsoft.Extensions.Localization;
+using System.Net.Http;
namespace CraftSharp.Shared
@@ -18,6 +19,9 @@ namespace CraftSharp.Shared
[Inject]
public NavigationManager NavigationManager { get; set; }
+ [Inject]
+ public HttpClient httpClient { get; set; }
+
[CascadingParameter]
private Task AuthenticationState { get; set; }
@@ -25,6 +29,10 @@ namespace CraftSharp.Shared
protected override async Task OnInitializedAsync()
{
+ if (AuthStateProvider.GetCurrentUser() == null || !AuthStateProvider.GetCurrentUser().IsAuthenticated)
+ {
+ NavigationManager.NavigateTo("/");
+ }
isAdmin();
}
@@ -46,6 +54,8 @@ namespace CraftSharp.Shared
private async Task LogoutClick()
{
await AuthStateProvider.Logout();
+ await httpClient.DeleteAsync($"{NavigationManager.BaseUri}User/DeleteUser");
+
NavigationManager.NavigateTo("/inscription");
}
}