Implement role and user management enhancements
CI / Backend (build + test) (push) Successful in 1m14s
CI / Frontend (lint + typecheck + build) (push) Successful in 30s

- Added MaxIpLimit to roles, allowing for the configuration of simultaneous IP limits for users.
- Updated role creation and update commands to include MaxIpLimit, ensuring proper handling in the application logic.
- Enhanced user management by introducing a DELETE endpoint for user accounts, with appropriate checks to prevent self-deletion.
- Updated documentation to reflect changes in role and user management, clarifying the new IP limit functionality and user deletion process.
- Adjusted related tests to cover new functionality and ensure robust validation of role and user management features.
This commit is contained in:
Leonid Pershin
2026-07-13 07:18:13 +03:00
parent 48e8d06a41
commit 24d9ea1099
48 changed files with 1240 additions and 171 deletions
@@ -3,12 +3,19 @@ using PnvPanel.Application.Common.Models;
namespace PnvPanel.Infrastructure.Identity;
/// <summary>Роль с квотой на число конфигов. У пользователя ровно одна роль.</summary>
/// <summary>Роль с квотой на число конфигов и лимитом одновременных IP на клиента. У пользователя ровно одна роль.</summary>
public class AppRole : IdentityRole<Guid>
{
public const int UnlimitedMaxConfigs = RoleQuota.Unlimited;
public const int UnlimitedMaxIpLimit = RoleQuota.Unlimited;
public int MaxConfigs { get; set; }
/// <summary>Лимит одновременных IP на клиента в 3x-ui (`limitIp`); -1 — без лимита. Применяется
/// только к новым клиентам, создаваемым в 3x-ui (см. IXuiPanelGateway.AddClientAsync) — при смене
/// роли/лимита существующие клиенты в панели не трогаются (как и квота MaxConfigs).</summary>
public int MaxIpLimit { get; set; }
public bool IsSystem { get; set; }
public AppRole()