Loading angepasst
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
using System.Diagnostics;
|
||||
using System.Security.Claims;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Components.Authorization;
|
||||
using Microsoft.AspNetCore.Components.Server;
|
||||
using Microsoft.AspNetCore.Components.Web;
|
||||
using timetracker.Shared;
|
||||
|
||||
namespace timetracker.Server;
|
||||
|
||||
public class PersistingServerAuthenticationStateProvider : ServerAuthenticationStateProvider, IDisposable
|
||||
{
|
||||
private readonly PersistentComponentState _state;
|
||||
private readonly PersistingComponentStateSubscription _subscription;
|
||||
|
||||
public PersistingServerAuthenticationStateProvider(PersistentComponentState state)
|
||||
{
|
||||
_state = state;
|
||||
_subscription = state.RegisterOnPersisting(PersistAuthenticationState);
|
||||
}
|
||||
|
||||
private async Task PersistAuthenticationState()
|
||||
{
|
||||
var authState = await GetAuthenticationStateAsync();
|
||||
var user = authState.User;
|
||||
|
||||
if (user.Identity?.IsAuthenticated == true)
|
||||
{
|
||||
var idClaim = user.FindFirst(ClaimTypes.NameIdentifier)?.Value;
|
||||
var name = user.Identity.Name;
|
||||
var isAdminClaim = user.FindFirst("IsTenantAdmin")?.Value;
|
||||
|
||||
if (idClaim != null && name != null)
|
||||
{
|
||||
var userInfo = new UserInfo
|
||||
{
|
||||
Id = int.Parse(idClaim),
|
||||
Username = name,
|
||||
IsTenantAdmin = isAdminClaim == "true",
|
||||
IsAuthenticated = true
|
||||
};
|
||||
_state.PersistAsJson("UserInfoState", userInfo);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var userInfo = new UserInfo
|
||||
{
|
||||
IsAuthenticated = false
|
||||
};
|
||||
_state.PersistAsJson("UserInfoState", userInfo);
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_subscription.Dispose();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user