syntax = "proto3"; package rbac.v1; option go_package = "git.lendry.ru/lendry-erp/proto.git/go;pb"; service RbacService { rpc CreateRole(CreateRoleRequest) returns (ModifyRoleResponse); rpc UpdateRole(UpdateRoleRequest) returns (ModifyRoleResponse); rpc DeleteRole(DeleteRoleRequest) returns (DeleteRoleResponse); rpc CreatePermission(CreatePermissionRequest) returns (ModifyPermissionResponse); rpc UpdatePermission(UpdatePermissionRequest) returns (ModifyPermissionResponse); rpc GetAllPermissions (GetAllPermissionsRequest) returns (GetAllPermissionsResponse); rpc GetAllRoles(GetAllRolesRequest) returns (GetAllRolesResponse); } message GetAllPermissionsRequest { string user_id = 1; string session_id=2; } message GetAllPermissionsResponse { repeated Permission permissions = 1; } message Permission { string id = 1; string code = 2; string description = 3; string module = 4; repeated string roles = 5; } message GetAllRolesRequest { string user_id = 1; string session_id=2; } message GetAllRolesResponse { repeated Roles roles = 1; } message CreateRoleRequest { string name = 1; int32 level = 2; repeated string permission_codes = 3; } message UpdateRoleRequest { string id = 1; optional string name = 2; optional int32 level = 3; repeated string permission_codes = 4; } message ModifyRoleResponse { bool success = 1; string message = 2; } message DeleteRoleRequest { string id = 1; } message DeleteRoleResponse { bool success = 1; string message = 2; optional string fallback_role_name = 3; } message CreatePermissionRequest { string code = 1; string description = 2; string module = 3; } message UpdatePermissionRequest { string id = 1; repeated string role_ids = 2; // Привязка к конкретным ролям } message ModifyPermissionResponse { bool success = 1; string message = 2; } message Roles { string id = 1; string name = 2; int32 level = 3; repeated string permissions = 4; repeated string ldap_mapping = 5; repeated string accounts = 6; }