using HyperBooru.Services; using Microsoft.EntityFrameworkCore; namespace HyperBooru.PrincipalProviders; public class LocalPrincipalProvider : PrincipalProvider { private IDbContextFactory dbFactory; public LocalPrincipalProvider(IDbContextFactory dbFactory) => this.dbFactory = dbFactory; public override Principal? GetPrincipal(string name) { using var db = dbFactory.CreateDbContext(); LocalPrincipal? principal = db.Principals.FirstOrDefault(p => p.Name == name); if(principal is null) return null; return principal; } public override User? GetUser(string name) { using var db = dbFactory.CreateDbContext(); LocalUser? user = db.Users.FirstOrDefault(p => p.Name == name); if(user is null) return null; return user; } public override Group? GetGroup(string name) { using var db = dbFactory.CreateDbContext(); LocalGroup? group = db.Groups.FirstOrDefault(p => p.Name == name); if(group is null) return null; return group; } public override Group[] GetGroups(Principal principal, bool recurse) { throw new NotImplementedException(); } public override bool ValidatePassword(User principal, string password) { throw new NotImplementedException(); } }