syntax = "proto3"; package admin.v1; option go_package = "git.lendry.ru/lendry-erp/proto.git/go;pb"; // Единый сервис для всех административных операций 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); // Управление черным списком IP rpc BlockIp(BlockIpRequest) returns (BlockIpResponse); rpc UnblockIp(UnblockIpRequest) returns (UnblockIpResponse); // Синхронизация с поисковым движком (Elasticsearch) rpc SyncUsersToSearch (SyncUsersToSearchRequest) returns (SyncUsersToSearchResponse); rpc HandleGrafanaAlert(GrafanaAlertRequest) returns (GrafanaAlertResponse); // RBAC rpc GetAllPermissions (GetAllPermissionsAdminRequest) returns (GetAllPermissionsAdminResponse); rpc GetAllRoles(GetAllRolesAdminRequest) returns (GetAllRolesAdminResponse); rpc CreateRole(CreateRoleAdminRequest) returns (ModifyRoleAdminResponse); rpc UpdateRole(UpdateRoleAdminRequest) returns (ModifyRoleAdminResponse); rpc DeleteRole(DeleteRoleAdminRequest) returns (DeleteRoleAdminResponse); rpc CreatePermission(CreatePermissionAdminRequest) returns (ModifyPermissionAdminResponse); rpc UpdatePermission(UpdatePermissionAdminRequest) returns (ModifyPermissionAdminResponse); } // --- DTO для управления учетными записями --- message CreateUserRequest { string username = 1; string password = 2; repeated string roles = 3; } message CreateUserResponse { bool success = 1; string message = 2; } message DeleteUserRequest { string user_id = 1; } message DeleteUserResponse { 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 для управления данными и безопасностью --- message ChangeDataRequest { string user_id = 1; string session_id = 2; optional string email = 3; optional string phone = 4; optional string full_name = 5; optional string avatar_url = 6; optional string custom_status_text = 7; optional string custom_status_emoji = 8; optional string timezone = 9; optional string language = 10; optional bool is_public = 11; } message ChangeDataResponse { bool success = 1; 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; // Передаем как 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; } // --- 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 UnblockIpRequest { string ip_address = 1; string admin_id = 2; } message UnblockIpResponse { bool success = 1; string message = 2; } // --- DTO для синхронизации с поиском --- message SyncUsersToSearchRequest { // Пустой запрос, так как параметры не требуются } message SyncUsersToSearchResponse { bool success = 1; string message = 2; } message GetAllPermissionsAdminRequest { string user_id = 1; string session_id = 2; } message PermissionAdmin { string id = 1; string code = 2; string description = 3; string module = 4; repeated string roles = 5; } message GetAllPermissionsAdminResponse { repeated PermissionAdmin permissions = 1; } message GetAllRolesAdminRequest { string user_id = 1; string session_id = 2; } message RolesAdmin { string id = 1; string name = 2; int32 level = 3; repeated string permissions = 4; repeated string ldap_mapping = 5; repeated string accounts = 6; } message GetAllRolesAdminResponse { repeated RolesAdmin roles = 1; } message CreateRoleAdminRequest { string name = 1; int32 level = 2; repeated string permission_codes = 3; } message UpdateRoleAdminRequest { string id = 1; optional string name = 2; optional int32 level = 3; repeated string permission_codes = 4; } message ModifyRoleAdminResponse { bool success = 1; string message = 2; } message DeleteRoleAdminRequest { string id = 1; } message DeleteRoleAdminResponse { bool success = 1; string message = 2; optional string fallback_role_name = 3; } message CreatePermissionAdminRequest { string code = 1; string description = 2; string module = 3; } message UpdatePermissionAdminRequest { string id = 1; repeated string role_ids = 2; } message ModifyPermissionAdminResponse { bool success = 1; string message = 2; } message GrafanaAlertRequest { string payload = 1; } // Успешно ли обработан алерт message GrafanaAlertResponse { bool success = 1; }