From 246ecefb02522a5544d24e82f3e6ef71499f6f04 Mon Sep 17 00:00:00 2001 From: Pat Hartl Date: Thu, 13 Mar 2025 01:24:09 -0500 Subject: [PATCH] Fix first time setup administrator creation Fixes #206 --- .../Factories/IdentityContextFactory.cs | 4 ++-- LANCommander.Server.Services/RoleService.cs | 13 +++++++++++-- LANCommander.Server/Startup/Identity.cs | 1 - 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/LANCommander.Server.Services/Factories/IdentityContextFactory.cs b/LANCommander.Server.Services/Factories/IdentityContextFactory.cs index 48bf40f6..1d9d91fc 100644 --- a/LANCommander.Server.Services/Factories/IdentityContextFactory.cs +++ b/LANCommander.Server.Services/Factories/IdentityContextFactory.cs @@ -14,14 +14,14 @@ using System.Threading.Tasks; namespace LANCommander.Server.Services.Factories { - public class CustomUserStore : UserStore + public class CustomUserStore : UserStore { public CustomUserStore(DatabaseContext context) : base(context) { } } - public class CustomRoleStore : RoleStore + public class CustomRoleStore : RoleStore { public CustomRoleStore(DatabaseContext context) : base(context) { diff --git a/LANCommander.Server.Services/RoleService.cs b/LANCommander.Server.Services/RoleService.cs index 67ac1995..8f36f666 100644 --- a/LANCommander.Server.Services/RoleService.cs +++ b/LANCommander.Server.Services/RoleService.cs @@ -36,7 +36,7 @@ namespace LANCommander.Server.Services var result = await roleManager.CreateAsync(role); if (result.Succeeded) - return await roleManager.FindByNameAsync(role.Name); + return await GetAsync(role.Name); throw new AddRoleException(result, "Could not create role"); } @@ -88,7 +88,16 @@ namespace LANCommander.Server.Services public async Task> GetUsersAsync(string roleName) { - return await _identityContext.UserManager.GetUsersInRoleAsync(roleName); + var role = await Query(q => + { + return q + .Include(r => r.UserRoles) + .ThenInclude(ur => ur.User); + }).AsNoTracking().FirstOrDefaultAsync(r => r.Name.ToLower() == roleName.ToLower()); + + if (role != null && role.Users != null) + return role.Users; + return new List(); } } } diff --git a/LANCommander.Server/Startup/Identity.cs b/LANCommander.Server/Startup/Identity.cs index 5c15158d..7868a92d 100644 --- a/LANCommander.Server/Startup/Identity.cs +++ b/LANCommander.Server/Startup/Identity.cs @@ -28,7 +28,6 @@ public static class Identity .AddUserManager>() .AddSignInManager>() .AddRoleManager>() - .AddSignInManager() .AddDefaultTokenProviders(); builder.Services