add enable disable remove user and isenabled in user column

This commit is contained in:
Oleksandr Bezdieniezhnykh
2025-09-22 19:37:17 +03:00
parent a4295c6c52
commit 3167df8bd7
4 changed files with 36 additions and 2 deletions
+15
View File
@@ -167,6 +167,21 @@ app.MapPost("/resources/{dataFolder?}",
//.WithOpenApi(op => new(op){ Summary = "Upload resource"}); //For some reason doesn't work when this is specified. //.WithOpenApi(op => new(op){ Summary = "Upload resource"}); //For some reason doesn't work when this is specified.
.DisableAntiforgery(); .DisableAntiforgery();
app.MapPut("/users/{email}/enable", async (string email, IUserService userService, CancellationToken ct)
=> await userService.SetEnableStatus(email, true, ct))
.RequireAuthorization(apiAdminPolicy)
.WithOpenApi(op => new OpenApiOperation(op) { Summary = "Disable user" });
app.MapPut("/users/{email}/disable", async (string email, IUserService userService, CancellationToken ct)
=> await userService.SetEnableStatus(email, false, ct))
.RequireAuthorization(apiAdminPolicy)
.WithOpenApi(op => new OpenApiOperation(op) { Summary = "Disable user" });
app.MapDelete("/users/{email}", async (string email, IUserService userService, CancellationToken ct)
=> await userService.RemoveUser(email, ct))
.RequireAuthorization(apiAdminPolicy)
.WithOpenApi(op => new OpenApiOperation(op) { Summary = "Remove user" });
app.MapGet("/resources/list/{dataFolder?}", app.MapGet("/resources/list/{dataFolder?}",
async ([FromRoute]string? dataFolder, string? search, IResourcesService resourcesService, CancellationToken ct) async ([FromRoute]string? dataFolder, string? search, IResourcesService resourcesService, CancellationToken ct)
=> await resourcesService.ListResources(dataFolder, search, ct)) => await resourcesService.ListResources(dataFolder, search, ct))
+1
View File
@@ -11,6 +11,7 @@ public class User
public DateTime CreatedAt { get; set; } public DateTime CreatedAt { get; set; }
public DateTime? LastLogin { get; set; } public DateTime? LastLogin { get; set; }
public UserConfig? UserConfig { get; set; } = null!; public UserConfig? UserConfig { get; set; } = null!;
public bool IsEnabled { get; set; }
public static string GetCacheKey(string email) => public static string GetCacheKey(string email) =>
string.IsNullOrEmpty(email) ? "" : $"{nameof(User)}.{email}"; string.IsNullOrEmpty(email) ? "" : $"{nameof(User)}.{email}";
+18 -1
View File
@@ -4,7 +4,6 @@ using Azaion.Common.Entities;
using Azaion.Common.Extensions; using Azaion.Common.Extensions;
using Azaion.Common.Requests; using Azaion.Common.Requests;
using LinqToDB; using LinqToDB;
using Newtonsoft.Json;
namespace Azaion.Services; namespace Azaion.Services;
@@ -17,6 +16,8 @@ public interface IUserService
Task UpdateQueueOffsets(string email, UserQueueOffsets queueOffsets, CancellationToken ct = default); Task UpdateQueueOffsets(string email, UserQueueOffsets queueOffsets, CancellationToken ct = default);
Task<IEnumerable<User>> GetUsers(string? searchEmail, RoleEnum? searchRole, CancellationToken ct = default); Task<IEnumerable<User>> GetUsers(string? searchEmail, RoleEnum? searchRole, CancellationToken ct = default);
Task<string> CheckHardwareHash(User user, string hardware, CancellationToken ct = default); Task<string> CheckHardwareHash(User user, string hardware, CancellationToken ct = default);
Task SetEnableStatus(string email, bool isEnabled, CancellationToken ct = default);
Task RemoveUser(string email, CancellationToken ct = default);
} }
public class UserService(IDbFactory dbFactory, ICache cache) : IUserService public class UserService(IDbFactory dbFactory, ICache cache) : IUserService
@@ -128,4 +129,20 @@ public class UserService(IDbFactory dbFactory, ICache cache) : IUserService
LastLogin = DateTime.UtcNow LastLogin = DateTime.UtcNow
}, ct)); }, ct));
} }
public async Task SetEnableStatus(string email, bool isEnabled, CancellationToken ct = default)
{
await dbFactory.RunAdmin(async db =>
await db.Users.UpdateAsync(x => x.Email == email, u => new User
{
IsEnabled = isEnabled
}, ct));
}
public async Task RemoveUser(string email, CancellationToken ct = default)
{
await dbFactory.RunAdmin(async db =>
await db.Users.DeleteAsync(x => x.Email == email, ct));
}
} }
+2 -1
View File
@@ -1,3 +1,4 @@
ALTER TABLE public.users ALTER TABLE public.users
ADD COLUMN IF NOT EXISTS created_at timestamp not null default now(), ADD COLUMN IF NOT EXISTS created_at timestamp not null default now(),
ADD COLUMN IF NOT EXISTS last_login timestamp null; ADD COLUMN IF NOT EXISTS last_login timestamp null,
ADD COLUMN IF NOT EXISTS is_enabled bool not null default true;