diff --git a/proto/caosdb/entity/v1/main.proto b/proto/caosdb/entity/v1/main.proto index 543eb491a3673ce6e09f4bc32849c0403f5e16d8..c2ebde9667643878d0992c78323626635dc11af1 100644 --- a/proto/caosdb/entity/v1/main.proto +++ b/proto/caosdb/entity/v1/main.proto @@ -719,6 +719,10 @@ message EntityACL { string id = 1; // The rules which make up the ACL repeated EntityPermissionRule rules = 2; + // relevant permissions of the current session, e.g. if the current user is + // allowed to update the ACL. This is read-only and will be ignored by the + // server. + repeated EntityPermission permissions = 3; } // Permission rules for Entity ACL @@ -731,6 +735,16 @@ message EntityPermissionRule { bool grant = 3; // permissions repeated EntityPermission permissions = 4; + // capabilities + repeated EntityPermissionRuleCapability capabilities = 5; +} + +// What (given enough permissions) can be done with an EntityPermissionRule. E.g. globel entity permission rules, which are to be specified in a configuration file cannot be deleted, thus they are missing the ENTITY_PERMISSION_RULE_CAPABILITY_DELETE capability. +enum EntityPermissionRuleCapability { + // Unspecified capability. + ENTITY_PERMISSION_RULE_CAPABILITY_UNSPECIFIED = 0; + // This permission rule can be deleted/removed from the ACL + ENTITY_PERMISSION_RULE_CAPABILITY_DELETE = 1; } // TODO replace by enum diff --git a/proto/caosdb/info/v1/main.proto b/proto/caosdb/info/v1/main.proto index 4968a4089d9744cd636724ded058a13c4e114747..ab3b2947cac7a225237d2ca973776cb6f099064a 100644 --- a/proto/caosdb/info/v1/main.proto +++ b/proto/caosdb/info/v1/main.proto @@ -65,6 +65,8 @@ message GetSessionInfoResponse { repeated string roles = 3; // Seconds until this sessions expires (approximately). int64 expires = 4; + // The permissions of the user who owns this sessions + repeated string permissions = 5; } // A service which provides general information about the server.