This commit is contained in:
2025-09-30 10:33:33 +02:00
parent 702c097c32
commit 6349a50151
5 changed files with 99 additions and 27 deletions

View File

@@ -6,6 +6,7 @@
@inject NavigationManager Navigation
@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
@inject ProtectedLocalStorage ProtectedLocalStore
@inject UserState userState
<head>
@@ -108,10 +109,9 @@
protected override async Task OnInitializedAsync()
{
var obtenerDatoAdmin = await ProtectedLocalStore.GetAsync<bool>("EsAdmin");
var obtenerDatoId = await ProtectedLocalStore.GetAsync<int>("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);
}

View File

@@ -49,26 +49,31 @@
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
if (!string.IsNullOrEmpty(urlAnterior))
{
urlAnterior = await JS.InvokeAsync<string>("eval", "document.referer");
if (firstRender)
{
urlAnterior = await JS.InvokeAsync<string>("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();
}
}

View File

@@ -6,6 +6,8 @@
@inject NavigationManager Navigation
@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
@inject ProtectedLocalStorage ProtectedLocalStore
@inject UserState userState
@inject IJSRuntime JS
<head>
@@ -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<bool>("EsAdmin");
var obtenerDatoId = await ProtectedLocalStore.GetAsync<int>("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<string>("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
}

View File

@@ -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<bool>("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)
{

View File

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