using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.WebUtilities; using StockMan.CORE.Data; using StockMan.Data.DbModels; using System.Net; namespace StockMan.CORE.Shared { public partial class MainLayout { #region Protected Properties [Inject] protected StockDataService SDService { get; set; } = null!; protected List? navMenuLinks { get; set; } = null; public EventCallback UserNameCB { get; set; } public string userName { get { return MService.newUserName; } set { MService.newUserName = value; reportChange(); } } [Inject] protected AuthenticationStateProvider AuthenticationStateProvider { get; set; } = null!; [Inject] protected MessageService MService { get; set; } = null!; [Inject] protected NavigationManager NavManager { get; set; } = null!; #endregion Protected Properties #region Protected Methods protected override async Task OnInitializedAsync() { await forceReload(); var uri = NavManager.ToAbsoluteUri(NavManager.Uri); navMenuLinks = await SDService.PermessiGetAll(); MService.EA_UserName += OnNewUserName; } public async void OnNewUserName() { await InvokeAsync(() => { StateHasChanged(); }); } private void reportChange() { UserNameCB.InvokeAsync(userName); } private async Task forceReload() { var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync(); var user = authState.User; if (user.Identity != null && user.Identity.IsAuthenticated) { userName = $"{user.Identity.Name}"; // cercare in tabella operators e salvare sigla da registrare nei vari records sul DB } else { userName = "N.A."; } } #endregion Protected Methods } }