diff --git a/HerramientaCASA/Components/Layout/ConfiguracionLayout.razor b/HerramientaCASA/Components/Layout/ConfiguracionLayout.razor index 39e1e54..83f0e03 100644 --- a/HerramientaCASA/Components/Layout/ConfiguracionLayout.razor +++ b/HerramientaCASA/Components/Layout/ConfiguracionLayout.razor @@ -6,6 +6,7 @@ @inject NavigationManager Navigation @using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage @inject ProtectedLocalStorage ProtectedLocalStore +@inject UserState userState @@ -108,10 +109,9 @@ protected override async Task OnInitializedAsync() { - var obtenerDatoAdmin = await ProtectedLocalStore.GetAsync("EsAdmin"); - var obtenerDatoId = await ProtectedLocalStore.GetAsync("idUsuario"); // Redirigir al home si no hay token y la ruta no es pública - if (obtenerDatoId.Value == 0 || !obtenerDatoAdmin.Value) + if (userState.idUser == 0) +) { Navigation.NavigateTo("/", true); } diff --git a/HerramientaCASA/Components/Layout/LoginLayout.razor b/HerramientaCASA/Components/Layout/LoginLayout.razor index 814aaeb..fe95342 100644 --- a/HerramientaCASA/Components/Layout/LoginLayout.razor +++ b/HerramientaCASA/Components/Layout/LoginLayout.razor @@ -49,26 +49,31 @@ protected override async Task OnAfterRenderAsync(bool firstRender) { - if (firstRender) - { - if (!string.IsNullOrEmpty(urlAnterior)) - { - urlAnterior = await JS.InvokeAsync("eval", "document.referer"); + if (firstRender) + { + urlAnterior = await JS.InvokeAsync("eval", "document.referrer"); + + + if (!string.IsNullOrEmpty(urlAnterior)) + { rutaActual = Navigation.ToBaseRelativePath(Navigation.Uri); - - if (rutaActual != "Denegado") - { - if (!string.IsNullOrEmpty(urlAnterior) && urlAnterior.Contains("cacoa.es")) + if (rutaActual != "Denegado") { - Navigation.NavigateTo("/Denegado", true); + if (!urlAnterior.Contains("cacoa.es") ) + { + Navigation.NavigateTo("/Denegado", true); + } } - } - } - StateHasChanged(); + } + else + { + Navigation.NavigateTo("/Denegado", true); + } + StateHasChanged(); } } diff --git a/HerramientaCASA/Components/Layout/MainLayout.razor b/HerramientaCASA/Components/Layout/MainLayout.razor index a6457ff..420d136 100644 --- a/HerramientaCASA/Components/Layout/MainLayout.razor +++ b/HerramientaCASA/Components/Layout/MainLayout.razor @@ -6,6 +6,8 @@ @inject NavigationManager Navigation @using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage @inject ProtectedLocalStorage ProtectedLocalStore +@inject UserState userState +@inject IJSRuntime JS @@ -111,15 +113,54 @@ @code { private bool MostrarExtra => Navigation.Uri.Contains("PanelControl", StringComparison.OrdinalIgnoreCase); - protected override async Task OnInitializedAsync() + + string? urlAnterior = ""; + + bool urlVaida = true; + string rutaActual = ""; + + + protected override async Task OnAfterRenderAsync(bool firstRender) { - var obtenerDatoAdmin = await ProtectedLocalStore.GetAsync("EsAdmin"); - var obtenerDatoId = await ProtectedLocalStore.GetAsync("idUsuario"); - // Redirigir al home si no hay token y la ruta no es pública - if (obtenerDatoId.Value == 0 || obtenerDatoAdmin.Value) + if (firstRender) + { + urlAnterior = await JS.InvokeAsync("eval", "document.referrer"); + + + if (!string.IsNullOrEmpty(urlAnterior)) + { + + rutaActual = Navigation.ToBaseRelativePath(Navigation.Uri); + + + if (rutaActual != "Denegado") + { + if (!urlAnterior.Contains("cacoa.es")) + { + Navigation.NavigateTo("/Denegado", true); + } + } + + } + else + { + Navigation.NavigateTo("/Denegado", true); + } + + + if (userState.idUser == 0 ) { Navigation.NavigateTo("/", true); } + StateHasChanged(); + } + } + + protected override async Task OnInitializedAsync() + { + + // Redirigir al home si no hay token y la ruta no es pública + } diff --git a/HerramientaCASA/Components/Pages/Login/Login.razor b/HerramientaCASA/Components/Pages/Login/Login.razor index c10b27d..97bf5ca 100644 --- a/HerramientaCASA/Components/Pages/Login/Login.razor +++ b/HerramientaCASA/Components/Pages/Login/Login.razor @@ -57,9 +57,9 @@ private string mensajeError = ""; private bool recuerda = false; - - + + protected override async Task OnInitializedAsync() { @@ -70,10 +70,10 @@ await ProtectedLocalStore.SetAsync("EsAdmin", false); // Limpiar almacenamiento local o sesión si se está utilizando - // if (HttpContextAccessor?.HttpContext?.Session != null) - // { - // HttpContextAccessor.HttpContext.Session.Clear(); - // } + if (HttpContextAccessor?.HttpContext?.Session != null) + { + HttpContextAccessor.HttpContext.Session.Clear(); + } var rec = await ProtectedLocalStore.GetAsync("rec"); if(rec.Value==true){ @@ -97,6 +97,9 @@ await ProtectedLocalStore.SetAsync("idUsuario", -1); await ProtectedLocalStore.SetAsync("EsAdmin", true); + UserState.idUser = -1; + UserState.PuedeAcceder =true; + Navigation.NavigateTo("/PanelControlConf", forceLoad: true); } else @@ -113,6 +116,9 @@ await ProtectedLocalStore.SetAsync("idUsuario", usuario.idUsuario); await ProtectedLocalStore.SetAsync("EsAdmin", false); + UserState.idUser = usuario.idUsuario; + UserState.PuedeAcceder =true; + if (recuerda) { diff --git a/HerramientaCASA/Model/UserState.cs b/HerramientaCASA/Model/UserState.cs index c72449c..f36024f 100644 --- a/HerramientaCASA/Model/UserState.cs +++ b/HerramientaCASA/Model/UserState.cs @@ -5,6 +5,7 @@ private readonly object _lock = new object(); private int _idUser; private bool _esAdmin; + private bool _puedeAcceder; public int idUser { get @@ -41,5 +42,24 @@ } } + + public bool PuedeAcceder + { + get + { + lock (_lock) + { + return _puedeAcceder; + } + } + set + { + lock (_lock) + { + _puedeAcceder = value; + } + } + } + } }