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
+6
View File
@@ -1854,6 +1854,8 @@ export interface components {
name: string;
/** Format: int32 */
maxConfigs: number | string;
/** Format: int32 */
maxIpLimit: number | string;
};
CurrentUserDto: {
/** Format: uuid */
@@ -1987,6 +1989,8 @@ export interface components {
name: string;
/** Format: int32 */
maxConfigs: number | string;
/** Format: int32 */
maxIpLimit: number | string;
isSystem: boolean;
};
StatsDto: {
@@ -2050,6 +2054,8 @@ export interface components {
UpdateRoleBody: {
/** Format: int32 */
maxConfigs: number | string;
/** Format: int32 */
maxIpLimit: number | string;
};
UserSummaryDto: {
/** Format: uuid */
+1
View File
@@ -136,6 +136,7 @@ export type RoleDto = {
id: string
name: string
maxConfigs: number
maxIpLimit: number
isSystem: boolean
}
+10
View File
@@ -182,6 +182,9 @@ const resources = {
reset: 'Сбросить',
passwordReset: 'Пароль сброшен.',
configs: 'Конфиги',
delete: 'Удалить пользователя',
confirmDelete: 'Удалить пользователя? Все его конфиги будут отозваны в 3x-ui, действие необратимо.',
deleted: 'Пользователь удалён.',
},
activation: {
empty: 'Нет ожидающих запросов на активацию.',
@@ -195,6 +198,8 @@ const resources = {
name: 'Название',
maxConfigs: 'Квота конфигов',
maxConfigsHint: '1 = без лимита.',
maxIpLimit: 'Лимит IP на конфиг',
maxIpLimitHint: '−1 = без лимита. Применяется только к новым конфигам.',
system: 'системная',
edit: 'Изменить',
save: 'Сохранить',
@@ -469,6 +474,9 @@ const resources = {
reset: 'Reset',
passwordReset: 'Password reset.',
configs: 'Configs',
delete: 'Delete user',
confirmDelete: 'Delete this user? All their configs will be revoked in 3x-ui — this cannot be undone.',
deleted: 'User deleted.',
},
activation: {
empty: 'No pending activation requests.',
@@ -482,6 +490,8 @@ const resources = {
name: 'Name',
maxConfigs: 'Config quota',
maxConfigsHint: '1 = unlimited.',
maxIpLimit: 'IP limit per config',
maxIpLimitHint: '1 = unlimited. Applies to new configs only.',
system: 'system',
edit: 'Edit',
save: 'Save',