Added hopframe backend

This commit is contained in:
2025-11-30 19:01:38 +01:00
parent 825bd80ef0
commit 5d1fc1f347
19 changed files with 523 additions and 17 deletions

View File

@@ -0,0 +1,37 @@
using HopFrame.Core.Services;
using Microsoft.EntityFrameworkCore;
namespace SpotiParty.Web.Services;
public class DashboardAuthHandler(ClientSideStorage storage, IDbContextFactory<DatabaseContext> contextFactory) : IHopFrameAuthHandler {
public const string AdminPolicy = "ADMIN";
public async Task<bool> IsAuthenticatedAsync(string? policy) {
var token = storage.GetUserToken();
if (string.IsNullOrWhiteSpace(token))
return false;
await using var context = await contextFactory.CreateDbContextAsync();
var user = await context.Users.AsNoTracking().FirstOrDefaultAsync(u => u.RefreshToken == token);
if (user is null) return false;
if (policy == AdminPolicy) {
return user.IsAdmin;
}
return true;
}
public async Task<string> GetCurrentUserDisplayNameAsync() {
var token = storage.GetUserToken();
if (string.IsNullOrWhiteSpace(token))
return string.Empty;
await using var context = await contextFactory.CreateDbContextAsync();
var user = await context.Users.AsNoTracking().FirstOrDefaultAsync(u => u.RefreshToken == token);
if (user is null) return string.Empty;
return user.DisplayName;
}
}