mirror of
https://github.com/hmaxnl/SharpRSS.git
synced 2024-11-15 10:04:19 +01:00
40 lines
1.5 KiB
C#
40 lines
1.5 KiB
C#
|
using Blazored.LocalStorage;
|
||
|
using DotBased;
|
||
|
using DotBased.ASP.Auth;
|
||
|
using DotBased.Extensions;
|
||
|
using DotBased.Logging;
|
||
|
using Serilog;
|
||
|
using ILogger = DotBased.Logging.ILogger;
|
||
|
|
||
|
namespace SharpRSS.Blazor.Auth;
|
||
|
|
||
|
public class LocalStorageSessionStateProvider : ISessionStateProvider
|
||
|
{
|
||
|
public LocalStorageSessionStateProvider(ILocalStorageService localStorage)
|
||
|
{
|
||
|
_localStorage = localStorage;
|
||
|
_logger = LogService.RegisterLogger(typeof(LocalStorageSessionStateProvider));
|
||
|
}
|
||
|
private readonly ILocalStorageService _localStorage;
|
||
|
private readonly ILogger _logger;
|
||
|
|
||
|
public async Task<Result<string>> GetSessionStateAsync()
|
||
|
{
|
||
|
var localStorageValue = await _localStorage.GetItemAsync<string>(ISessionStateProvider.SessionStateName);
|
||
|
if (localStorageValue != null && !localStorageValue.IsNullOrWhiteSpace())
|
||
|
return Result<string>.Ok(localStorageValue);
|
||
|
_logger.Warning("Failed to get session token from local storage!");
|
||
|
return Result<string>.Failed("Local storage returned null or empty on session token.");
|
||
|
}
|
||
|
|
||
|
public async Task<Result> SetSessionStateAsync(string state)
|
||
|
{
|
||
|
if (state.IsNullOrWhiteSpace())
|
||
|
{
|
||
|
Log.Warning("Tried to save empty or null session state to local storage!");
|
||
|
return Result.Failed("Could not set session state to local storage, value is empty or null!");
|
||
|
}
|
||
|
await _localStorage.SetItemAsync(ISessionStateProvider.SessionStateName, state);
|
||
|
return Result.Ok();
|
||
|
}
|
||
|
}
|