From 410c7cd4c24c0537eddd6dd4ce9858d4b525144c Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Sat, 31 Dec 2022 01:14:12 +0100 Subject: [PATCH 1/6] Creating UserController --- src/CraftSharp/Controllers/UserController.cs | 45 +++++++++++++++++++ src/CraftSharp/Pages/Connexion.razor.cs | 11 ++++- src/CraftSharp/Pages/Opening.razor.cs | 2 - src/CraftSharp/Program.cs | 3 +- .../Services/CustomStateProvider.cs | 7 +++ 5 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 src/CraftSharp/Controllers/UserController.cs diff --git a/src/CraftSharp/Controllers/UserController.cs b/src/CraftSharp/Controllers/UserController.cs new file mode 100644 index 0000000..78a9d8a --- /dev/null +++ b/src/CraftSharp/Controllers/UserController.cs @@ -0,0 +1,45 @@ +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 + ); + } + Console.WriteLine("USER : " + user); + + return Ok(new { result = "userCookieSet" }); + } + + public IActionResult DeleteUser() + { + + this.HttpContext.Response.Cookies.Delete( + "CurrentUser" + ); + return Ok(new { result = "userCookieDeleted" }); + + } + + public IActionResult GetUser() + { + var jsonUser = HttpContext.Request.Cookies["CurrentUser"]; + return Ok(new { result = JsonConvert.DeserializeObject(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..d1383b7 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,7 +20,9 @@ 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(); @@ -28,7 +33,11 @@ namespace CraftSharp.Pages try { await AuthStateProvider.Login(loginRequest); + + var stringified = JsonConvert.SerializeObject(AuthStateProvider.GetCurrentUser()); + var response = await httpClient.PostAsJsonAsync($"{NavigationManager.BaseUri}User/SetUser", stringified); NavigationManager.NavigateTo("index"); + } catch (Exception ex) { diff --git a/src/CraftSharp/Pages/Opening.razor.cs b/src/CraftSharp/Pages/Opening.razor.cs index 5347b86..6ef5dce 100644 --- a/src/CraftSharp/Pages/Opening.razor.cs +++ b/src/CraftSharp/Pages/Opening.razor.cs @@ -26,8 +26,6 @@ namespace CraftSharp.Pages 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; diff --git a/src/CraftSharp/Program.cs b/src/CraftSharp/Program.cs index 31efd19..21857d6 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); @@ -36,7 +37,7 @@ 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/CustomStateProvider.cs b/src/CraftSharp/Services/CustomStateProvider.cs index 059cab0..74adb2f 100644 --- a/src/CraftSharp/Services/CustomStateProvider.cs +++ b/src/CraftSharp/Services/CustomStateProvider.cs @@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Components; using Blazorise; using Microsoft.JSInterop; using Microsoft.Extensions.Caching.Memory; +using System; namespace CraftSharp.Services { @@ -14,6 +15,9 @@ namespace CraftSharp.Services { private readonly IAuthService _authService; + [Inject] + public NavigationManager NavigationManager { get; set; } + private CurrentUser _currentUser { get; set; } public CustomStateProvider(IAuthService authService) @@ -48,6 +52,7 @@ namespace CraftSharp.Services CurrentUser user; user = _authService.GetUser(loginParameters.UserName); _currentUser = user; + NotifyAuthenticationStateChanged(GetAuthenticationStateAsync()); } @@ -55,6 +60,7 @@ namespace CraftSharp.Services { _currentUser = new CurrentUser(); + NotifyAuthenticationStateChanged(GetAuthenticationStateAsync()); } @@ -65,6 +71,7 @@ namespace CraftSharp.Services // No error - Login the user var user = _authService.GetUser(registerParameters.UserName); _currentUser = user; + NotifyAuthenticationStateChanged(GetAuthenticationStateAsync()); } From 4b31e3ff780f8674aa39971a9ce57cb4e96f5ee4 Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Sat, 31 Dec 2022 03:22:13 +0100 Subject: [PATCH 2/6] Adding cookie authentication --- src/CraftSharp/App.razor | 9 ++++----- src/CraftSharp/Controllers/UserController.cs | 8 +++++--- src/CraftSharp/Pages/Connexion.razor.cs | 4 +--- src/CraftSharp/Pages/Opening.razor | 2 +- src/CraftSharp/Pages/Opening.razor.cs | 5 +---- src/CraftSharp/Pages/_Host.cshtml | 16 ++++++++++++++++ src/CraftSharp/Program.cs | 6 +++--- src/CraftSharp/Services/AuthService.cs | 3 +++ src/CraftSharp/Services/CustomStateProvider.cs | 11 +++-------- 9 files changed, 37 insertions(+), 27 deletions(-) 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/UserController.cs b/src/CraftSharp/Controllers/UserController.cs index 78a9d8a..ef09391 100644 --- a/src/CraftSharp/Controllers/UserController.cs +++ b/src/CraftSharp/Controllers/UserController.cs @@ -21,11 +21,10 @@ namespace CraftSharp.Controllers "CurrentUser", user ); } - Console.WriteLine("USER : " + user); - return Ok(new { result = "userCookieSet" }); } + [HttpDelete] public IActionResult DeleteUser() { @@ -36,10 +35,13 @@ namespace CraftSharp.Controllers } + [HttpGet] public IActionResult GetUser() { var jsonUser = HttpContext.Request.Cookies["CurrentUser"]; - return Ok(new { result = JsonConvert.DeserializeObject(jsonUser) }); + 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 d1383b7..7602a1f 100644 --- a/src/CraftSharp/Pages/Connexion.razor.cs +++ b/src/CraftSharp/Pages/Connexion.razor.cs @@ -26,15 +26,13 @@ namespace CraftSharp.Pages private string error { get; set; } private ConnexionModel loginRequest { get; set; } = new ConnexionModel(); - private async Task OnSubmit() { error = null; try { await AuthStateProvider.Login(loginRequest); - - var stringified = JsonConvert.SerializeObject(AuthStateProvider.GetCurrentUser()); + var stringified = JsonConvert.SerializeObject(loginRequest); var response = await httpClient.PostAsJsonAsync($"{NavigationManager.BaseUri}User/SetUser", stringified); NavigationManager.NavigateTo("index"); diff --git a/src/CraftSharp/Pages/Opening.razor b/src/CraftSharp/Pages/Opening.razor index be844b6..6487a7d 100644 --- a/src/CraftSharp/Pages/Opening.razor +++ b/src/CraftSharp/Pages/Opening.razor @@ -11,7 +11,7 @@ - +@AuthStateProvider.GetCurrentUser().UserName;
diff --git a/src/CraftSharp/Pages/Opening.razor.cs b/src/CraftSharp/Pages/Opening.razor.cs index 6ef5dce..ef5158f 100644 --- a/src/CraftSharp/Pages/Opening.razor.cs +++ b/src/CraftSharp/Pages/Opening.razor.cs @@ -23,10 +23,7 @@ namespace CraftSharp.Pages [Inject] public IDataService DataService { get; set; } [Inject] - public CustomStateProvider AuthService { get; set; } - [Inject] public CustomStateProvider AuthStateProvider { get; set; } - int NumberOfKeys { get; set; } = 0; int CostInKeys { get; set; } = 1; @@ -42,7 +39,7 @@ namespace CraftSharp.Pages items = await DataService.List(0, totalItem); - NumberOfKeys = AuthService.GetCurrentUser().NumberOfKeys; + NumberOfKeys = AuthStateProvider.GetCurrentUser().NumberOfKeys; } bool canOpen() 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 21857d6..9405507 100644 --- a/src/CraftSharp/Program.cs +++ b/src/CraftSharp/Program.cs @@ -28,9 +28,9 @@ 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(); 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 74adb2f..f1bbc58 100644 --- a/src/CraftSharp/Services/CustomStateProvider.cs +++ b/src/CraftSharp/Services/CustomStateProvider.cs @@ -7,7 +7,6 @@ using Microsoft.AspNetCore.Components; using Blazorise; using Microsoft.JSInterop; using Microsoft.Extensions.Caching.Memory; -using System; namespace CraftSharp.Services { @@ -15,9 +14,6 @@ namespace CraftSharp.Services { private readonly IAuthService _authService; - [Inject] - public NavigationManager NavigationManager { get; set; } - private CurrentUser _currentUser { get; set; } public CustomStateProvider(IAuthService authService) @@ -52,7 +48,6 @@ namespace CraftSharp.Services CurrentUser user; user = _authService.GetUser(loginParameters.UserName); _currentUser = user; - NotifyAuthenticationStateChanged(GetAuthenticationStateAsync()); } @@ -60,7 +55,6 @@ namespace CraftSharp.Services { _currentUser = new CurrentUser(); - NotifyAuthenticationStateChanged(GetAuthenticationStateAsync()); } @@ -71,18 +65,19 @@ namespace CraftSharp.Services // No error - Login the user var user = _authService.GetUser(registerParameters.UserName); _currentUser = user; - NotifyAuthenticationStateChanged(GetAuthenticationStateAsync()); } public CurrentUser GetCurrentUser() { - CurrentUser cacheUser; if (_currentUser != null && _currentUser.IsAuthenticated) { + Console.WriteLine("GETUSER: " + _currentUser.UserName); return _currentUser; } + Console.WriteLine("GETUSER: FAIL"); + return new CurrentUser(); } } From 7a0a4e4204242db5166bd561dc71a4d0afca113d Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Sat, 31 Dec 2022 03:28:35 +0100 Subject: [PATCH 3/6] updating auth --- src/CraftSharp/Pages/Inscription.razor.cs | 14 ++++++++++++-- src/CraftSharp/Shared/HeaderLayout.razor.cs | 6 ++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/CraftSharp/Pages/Inscription.razor.cs b/src/CraftSharp/Pages/Inscription.razor.cs index a22075e..716bb91 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,22 @@ 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(); 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/Shared/HeaderLayout.razor.cs b/src/CraftSharp/Shared/HeaderLayout.razor.cs index f3b9136..c8051e4 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; } @@ -46,6 +50,8 @@ namespace CraftSharp.Shared private async Task LogoutClick() { await AuthStateProvider.Logout(); + await httpClient.DeleteAsync($"{NavigationManager.BaseUri}User/DeleteUser"); + NavigationManager.NavigateTo("/inscription"); } } From 249df5cfe05a26b66f89347694057dc4bde205eb Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Sat, 31 Dec 2022 03:41:29 +0100 Subject: [PATCH 4/6] Protection routes --- src/CraftSharp/Pages/List.razor | 101 +++++++++++--------- src/CraftSharp/Pages/List.razor.cs | 3 + src/CraftSharp/Pages/Opening.razor | 1 - src/CraftSharp/Shared/HeaderLayout.razor.cs | 4 + 4 files changed, 61 insertions(+), 48 deletions(-) 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)) - { - @context.DisplayName - } - else - { - @context.DisplayName - } - - - - - - - - @(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)) + { + @context.DisplayName + } + else + { + @context.DisplayName + } + + + + + + + + @(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 6487a7d..8fdf45e 100644 --- a/src/CraftSharp/Pages/Opening.razor +++ b/src/CraftSharp/Pages/Opening.razor @@ -11,7 +11,6 @@
-@AuthStateProvider.GetCurrentUser().UserName;
diff --git a/src/CraftSharp/Shared/HeaderLayout.razor.cs b/src/CraftSharp/Shared/HeaderLayout.razor.cs index c8051e4..280476b 100644 --- a/src/CraftSharp/Shared/HeaderLayout.razor.cs +++ b/src/CraftSharp/Shared/HeaderLayout.razor.cs @@ -29,6 +29,10 @@ namespace CraftSharp.Shared protected override async Task OnInitializedAsync() { + if (AuthStateProvider.GetCurrentUser() == null || !AuthStateProvider.GetCurrentUser().IsAuthenticated) + { + NavigationManager.NavigateTo("/"); + } isAdmin(); } From 1af61f0c5d41b782d7ebb3cc7f1095f88720febf Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Sat, 31 Dec 2022 03:48:42 +0100 Subject: [PATCH 5/6] Automatic connexion --- src/CraftSharp/Controllers/CultureController.cs | 3 ++- src/CraftSharp/Controllers/UserController.cs | 2 +- src/CraftSharp/Pages/Connexion.razor.cs | 9 +++++++++ src/CraftSharp/Pages/Inscription.razor.cs | 8 ++++++++ 4 files changed, 20 insertions(+), 2 deletions(-) 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 index ef09391..ac31e2d 100644 --- a/src/CraftSharp/Controllers/UserController.cs +++ b/src/CraftSharp/Controllers/UserController.cs @@ -19,7 +19,7 @@ namespace CraftSharp.Controllers { HttpContext.Response.Cookies.Append( "CurrentUser", user - ); + ); } return Ok(new { result = "userCookieSet" }); } diff --git a/src/CraftSharp/Pages/Connexion.razor.cs b/src/CraftSharp/Pages/Connexion.razor.cs index 7602a1f..428c642 100644 --- a/src/CraftSharp/Pages/Connexion.razor.cs +++ b/src/CraftSharp/Pages/Connexion.razor.cs @@ -26,6 +26,15 @@ namespace CraftSharp.Pages 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; diff --git a/src/CraftSharp/Pages/Inscription.razor.cs b/src/CraftSharp/Pages/Inscription.razor.cs index 716bb91..a3c523f 100644 --- a/src/CraftSharp/Pages/Inscription.razor.cs +++ b/src/CraftSharp/Pages/Inscription.razor.cs @@ -24,6 +24,14 @@ namespace CraftSharp.Pages 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() { From db3d01df6f6b65398571185d9774aa5dc6aad1e6 Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Sat, 31 Dec 2022 03:55:24 +0100 Subject: [PATCH 6/6] Correcting bug in shop and in opening --- src/CraftSharp/Pages/Opening.razor | 2 +- src/CraftSharp/Pages/Opening.razor.cs | 7 ++----- src/CraftSharp/Pages/Shop.razor | 2 +- src/CraftSharp/Pages/Shop.razor.cs | 9 ++------- 4 files changed, 6 insertions(+), 14 deletions(-) diff --git a/src/CraftSharp/Pages/Opening.razor b/src/CraftSharp/Pages/Opening.razor index 8fdf45e..65d2a4c 100644 --- a/src/CraftSharp/Pages/Opening.razor +++ b/src/CraftSharp/Pages/Opening.razor @@ -6,7 +6,7 @@
+ Value="@AuthStateProvider.GetCurrentUser().NumberOfKeys">
diff --git a/src/CraftSharp/Pages/Opening.razor.cs b/src/CraftSharp/Pages/Opening.razor.cs index ef5158f..8140806 100644 --- a/src/CraftSharp/Pages/Opening.razor.cs +++ b/src/CraftSharp/Pages/Opening.razor.cs @@ -24,7 +24,6 @@ namespace CraftSharp.Pages public IDataService DataService { get; set; } [Inject] public CustomStateProvider AuthStateProvider { get; set; } - int NumberOfKeys { get; set; } = 0; int CostInKeys { get; set; } = 1; [Inject] @@ -38,13 +37,11 @@ namespace CraftSharp.Pages totalItem = await DataService.Count(); items = await DataService.List(0, totalItem); - - NumberOfKeys = AuthStateProvider.GetCurrentUser().NumberOfKeys; } bool canOpen() { - return isChestClosed && NumberOfKeys >= CostInKeys; + return isChestClosed && AuthStateProvider.GetCurrentUser().NumberOfKeys >= CostInKeys; } async void selectRandom() @@ -52,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