add admin methods
All checks were successful
Publish / Publish Job (push) Successful in 2m26s

This commit is contained in:
Дмитрий
2026-04-11 21:10:31 +03:00
parent bd2ccecd5d
commit 284059d19d
3 changed files with 101 additions and 33 deletions

View File

@@ -1,6 +1,6 @@
{ {
"name": "@lendry-erp/contracts", "name": "@lendry-erp/contracts",
"version": "1.2.15", "version": "1.2.16",
"description": "Protobuf definitions and generated TypeScript types", "description": "Protobuf definitions and generated TypeScript types",
"type": "commonjs", "type": "commonjs",
"main": "./dist/index.js", "main": "./dist/index.js",

View File

@@ -1,34 +1,34 @@
syntax = "proto3"; syntax = "proto3";
package admin.account.v1; package admin.v1;
option go_package = "git.lendry.ru/lendry-erp/proto.git/go;pb"; option go_package = "git.lendry.ru/lendry-erp/proto.git/go;pb";
service AdminAccountService { // Единый сервис для всех административных операций
rpc AdminResetPassword (AdminResetPasswordRequest) returns (AdminResetPasswordResponse); service AdminService {
// Управление учетными записями
rpc CreateUser(CreateUserRequest) returns (CreateUserResponse); rpc CreateUser(CreateUserRequest) returns (CreateUserResponse);
rpc DeleteUser(DeleteUserRequest) returns (DeleteUserResponse); rpc DeleteUser(DeleteUserRequest) returns (DeleteUserResponse);
rpc BlockUser(BlockUserRequest) returns (BlockUserResponse);
rpc UnblockUser(UnblockUserRequest) returns (UnblockUserResponse);
// Управление данными и безопасностью
rpc ChangeData(ChangeDataRequest) returns (ChangeDataResponse); rpc ChangeData(ChangeDataRequest) returns (ChangeDataResponse);
rpc AdminResetPassword (AdminResetPasswordRequest) returns (AdminResetPasswordResponse);
// Управление ролями (RBAC)
rpc AssignRole (AssignRoleRequest) returns (AssignRoleResponse); rpc AssignRole (AssignRoleRequest) returns (AssignRoleResponse);
rpc RevokeRole (RevokeRoleRequest) returns (RevokeRoleResponse); rpc RevokeRole (RevokeRoleRequest) returns (RevokeRoleResponse);
rpc BlockUser(BlockUserRequest) returns (BlockUserResponse); // Управление черным списком IP
rpc UnblockUser(UnblockUserRequest) returns (UnblockUserResponse);
rpc BlockIp(BlockIpRequest) returns (BlockIpResponse); rpc BlockIp(BlockIpRequest) returns (BlockIpResponse);
rpc UnblockIp(UnblockIpRequest) returns (UnblockIpResponse); rpc UnblockIp(UnblockIpRequest) returns (UnblockIpResponse);
// Синхронизация с поисковым движком (Elasticsearch)
rpc SyncUsersToSearch (SyncUsersToSearchRequest) returns (SyncUsersToSearchResponse); rpc SyncUsersToSearch (SyncUsersToSearchRequest) returns (SyncUsersToSearchResponse);
} }
message AdminResetPasswordRequest { // --- DTO для управления учетными записями ---
string user_id = 1;
string new_password = 2;
}
message AdminResetPasswordResponse {
bool success = 1;
string message = 2;
}
message CreateUserRequest { message CreateUserRequest {
string username = 1; string username = 1;
@@ -50,6 +50,29 @@ message DeleteUserResponse {
string message = 2; string message = 2;
} }
message BlockUserRequest {
string user_id = 1; // Кого блокируем
string admin_id = 2; // Кто блокирует
optional string reason = 3;
}
message BlockUserResponse {
bool success = 1;
string message = 2;
}
message UnblockUserRequest {
string user_id = 1;
string admin_id = 2;
}
message UnblockUserResponse {
bool success = 1;
string message = 2;
}
// --- DTO для управления данными и безопасностью ---
message ChangeDataRequest { message ChangeDataRequest {
string user_id = 1; string user_id = 1;
string session_id = 2; string session_id = 2;
@@ -69,51 +92,65 @@ message ChangeDataResponse {
string message = 2; string message = 2;
} }
message AdminResetPasswordRequest {
string user_id = 1;
string new_password = 2;
}
message AdminResetPasswordResponse {
bool success = 1;
string message = 2;
}
// --- DTO для управления ролями (RBAC) ---
message AssignRoleRequest { message AssignRoleRequest {
string user_id = 1; string user_id = 1;
string role_id = 2; // В gRPC передаем как string, внутри преобразуем в Int string role_id = 2; // Передаем как string, внутри парсим в Int
} }
message AssignRoleResponse { message AssignRoleResponse {
bool success = 1; bool success = 1;
string message = 2; string message = 2;
} }
message RevokeRoleRequest { message RevokeRoleRequest {
string user_id = 1; string user_id = 1;
string role_id = 2; string role_id = 2;
} }
message RevokeRoleResponse { message RevokeRoleResponse {
bool success = 1; bool success = 1;
string message = 2; string message = 2;
} }
message BlockUserRequest { // --- DTO для управления черным списком IP ---
string user_id = 1; // Кого блокируем
string admin_id = 2; // Кто блокирует
optional string reason = 3;
}
message BlockUserResponse { bool success = 1; string message = 2; }
message UnblockUserRequest {
string user_id = 1;
string admin_id = 2;
}
message UnblockUserResponse { bool success = 1; string message = 2; }
message BlockIpRequest { message BlockIpRequest {
string ip_address = 1; string ip_address = 1;
string admin_id = 2; string admin_id = 2;
optional string reason = 3; optional string reason = 3;
} }
message BlockIpResponse { bool success = 1; string message = 2; }
message BlockIpResponse {
bool success = 1;
string message = 2;
}
message UnblockIpRequest { message UnblockIpRequest {
string ip_address = 1; string ip_address = 1;
string admin_id = 2; string admin_id = 2;
} }
message UnblockIpResponse { bool success = 1; string message = 2; }
message UnblockIpResponse {
bool success = 1;
string message = 2;
}
// --- DTO для синхронизации с поиском ---
message SyncUsersToSearchRequest { message SyncUsersToSearchRequest {
// Можно оставить пустым, так как нам не нужны входные данные // Пустой запрос, так как параметры не требуются
} }
message SyncUsersToSearchResponse { message SyncUsersToSearchResponse {

View File

@@ -14,6 +14,10 @@ service AuthService {
rpc GetSessions(GetSessionRequest) returns (GetSessionsResponse); rpc GetSessions(GetSessionRequest) returns (GetSessionsResponse);
rpc TerminateSession(TerminateSessionRequest) returns (TerminateSessionResponse); rpc TerminateSession(TerminateSessionRequest) returns (TerminateSessionResponse);
rpc SystemCreateAccount (SystemCreateAccountRequest) returns (SystemCreateAccountResponse);
rpc SystemChangeStatus (SystemChangeStatusRequest) returns (SystemChangeStatusResponse);
rpc SystemUpdatePassword (SystemUpdatePasswordRequest) returns (SystemUpdatePasswordResponse);
rpc SystemUpdatePin (SystemUpdatePinRequest) returns (SystemUpdatePinResponse);
} }
message LoginRequest { message LoginRequest {
@@ -101,4 +105,31 @@ message TerminateSessionResponse {
string message = 2; string message = 2;
} }
message SystemCreateAccountRequest {
string username = 1;
string password_hash = 2; // Хеш пароля генерирует Admin Service и передает сюда
bool is_ldap = 3;
}
message SystemCreateAccountResponse {
string account_id = 1;
}
message SystemChangeStatusRequest {
string account_id = 1;
string status = 2; // 'ACTIVE', 'BLOCKED', 'DELETED'
}
message SystemChangeStatusResponse { bool success = 1; }
message SystemUpdatePasswordRequest {
string account_id = 1;
string new_password_hash = 2;
}
message SystemUpdatePasswordResponse { bool success = 1; }
message SystemUpdatePinRequest {
string account_id = 1;
optional string pin_hash = 2; // null если удаляем
}
message SystemUpdatePinResponse { bool success = 1; }