feat: added docker stuff, started working on login system
This commit is contained in:
parent
c2d40c172a
commit
7c0cef6f65
15 changed files with 216 additions and 143 deletions
|
@ -0,0 +1,60 @@
|
|||
using System.Security.Claims;
|
||||
using ImageBoardServerApp.Data;
|
||||
using Microsoft.AspNetCore.Components.Authorization;
|
||||
using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage;
|
||||
|
||||
namespace ImageBoardServerApp.Auth;
|
||||
|
||||
public class CustomAuthenticationStateProvider : AuthenticationStateProvider
|
||||
{
|
||||
private readonly ProtectedSessionStorage _sessionStorage;
|
||||
private ClaimsPrincipal _anonymous = new ClaimsPrincipal(new ClaimsIdentity());
|
||||
|
||||
public CustomAuthenticationStateProvider(ProtectedSessionStorage sessionStorage)
|
||||
{
|
||||
_sessionStorage = sessionStorage;
|
||||
}
|
||||
|
||||
public override async Task<AuthenticationState> GetAuthenticationStateAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
var userSessionStorageResult = await _sessionStorage.GetAsync<UserData>("UserSession");
|
||||
var userSession = userSessionStorageResult.Success ? userSessionStorageResult.Value : null;
|
||||
if (userSession == null)
|
||||
return await Task.FromResult(new AuthenticationState(_anonymous));
|
||||
var claimsPrincipal = new ClaimsPrincipal(new ClaimsIdentity(new List<Claim>
|
||||
{
|
||||
new Claim(ClaimTypes.Email, userSession.Email),
|
||||
new Claim(ClaimTypes.Role, userSession.Role)
|
||||
}, "CustomAuth"));
|
||||
return await Task.FromResult(new AuthenticationState(claimsPrincipal));
|
||||
}
|
||||
catch
|
||||
{
|
||||
return await Task.FromResult(new AuthenticationState(_anonymous));
|
||||
}
|
||||
}
|
||||
|
||||
public async Task UpdateAuthenticationStateAsync(UserData session)
|
||||
{
|
||||
ClaimsPrincipal claimsPrincipal;
|
||||
|
||||
if (session != null)
|
||||
{
|
||||
await _sessionStorage.SetAsync("UserSession", session);
|
||||
claimsPrincipal = new ClaimsPrincipal(new ClaimsIdentity(new List<Claim>
|
||||
{
|
||||
new Claim(ClaimTypes.Email, session.Email),
|
||||
new Claim(ClaimTypes.Email, session.Role)
|
||||
}));
|
||||
}
|
||||
else
|
||||
{
|
||||
await _sessionStorage.DeleteAsync("UserSession");
|
||||
claimsPrincipal = _anonymous;
|
||||
}
|
||||
|
||||
NotifyAuthenticationStateChanged(Task.FromResult(new AuthenticationState(claimsPrincipal)));
|
||||
}
|
||||
}
|
7
ImageBoardServerApp/Auth/UserSession.cs
Normal file
7
ImageBoardServerApp/Auth/UserSession.cs
Normal file
|
@ -0,0 +1,7 @@
|
|||
namespace ImageBoardServerApp.Auth;
|
||||
|
||||
public class UserSession
|
||||
{
|
||||
public string Email { get; set; }
|
||||
public string Role { get; set; }
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue