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,34 +1,34 @@
syntax = "proto3";
package admin.account.v1;
package admin.v1;
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 DeleteUser(DeleteUserRequest) returns (DeleteUserResponse);
rpc BlockUser(BlockUserRequest) returns (BlockUserResponse);
rpc UnblockUser(UnblockUserRequest) returns (UnblockUserResponse);
// Управление данными и безопасностью
rpc ChangeData(ChangeDataRequest) returns (ChangeDataResponse);
rpc AdminResetPassword (AdminResetPasswordRequest) returns (AdminResetPasswordResponse);
// Управление ролями (RBAC)
rpc AssignRole (AssignRoleRequest) returns (AssignRoleResponse);
rpc RevokeRole (RevokeRoleRequest) returns (RevokeRoleResponse);
rpc BlockUser(BlockUserRequest) returns (BlockUserResponse);
rpc UnblockUser(UnblockUserRequest) returns (UnblockUserResponse);
// Управление черным списком IP
rpc BlockIp(BlockIpRequest) returns (BlockIpResponse);
rpc UnblockIp(UnblockIpRequest) returns (UnblockIpResponse);
// Синхронизация с поисковым движком (Elasticsearch)
rpc SyncUsersToSearch (SyncUsersToSearchRequest) returns (SyncUsersToSearchResponse);
}
message AdminResetPasswordRequest {
string user_id = 1;
string new_password = 2;
}
message AdminResetPasswordResponse {
bool success = 1;
string message = 2;
}
// --- DTO для управления учетными записями ---
message CreateUserRequest {
string username = 1;
@@ -50,6 +50,29 @@ message DeleteUserResponse {
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 {
string user_id = 1;
string session_id = 2;
@@ -69,54 +92,68 @@ message ChangeDataResponse {
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 {
string user_id = 1;
string role_id = 2; // В gRPC передаем как string, внутри преобразуем в Int
string role_id = 2; // Передаем как string, внутри парсим в Int
}
message AssignRoleResponse {
bool success = 1;
string message = 2;
}
message RevokeRoleRequest {
string user_id = 1;
string role_id = 2;
}
message RevokeRoleResponse {
bool success = 1;
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 для управления черным списком IP ---
message BlockIpRequest {
string ip_address = 1;
string admin_id = 2;
optional string reason = 3;
}
message BlockIpResponse { bool success = 1; string message = 2; }
message BlockIpResponse {
bool success = 1;
string message = 2;
}
message UnblockIpRequest {
string ip_address = 1;
string admin_id = 2;
}
message UnblockIpResponse { bool success = 1; string message = 2; }
message UnblockIpResponse {
bool success = 1;
string message = 2;
}
// --- DTO для синхронизации с поиском ---
message SyncUsersToSearchRequest {
// Можно оставить пустым, так как нам не нужны входные данные
// Пустой запрос, так как параметры не требуются
}
message SyncUsersToSearchResponse {
bool success = 1;
string message = 2;
}
}

View File

@@ -13,7 +13,11 @@ service AuthService {
rpc LogoutOther (LogoutRequest) returns (LogoutResponse);
rpc GetSessions(GetSessionRequest) returns (GetSessionsResponse);
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 {
@@ -101,4 +105,31 @@ message TerminateSessionResponse {
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; }