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;
+ }
+ }
+ }
+
}
}