[#54] Support keys in eacl

Signed-off-by: Denis Kirillov <denis@nspcc.ru>
This commit is contained in:
Denis Kirillov 2022-08-29 17:16:41 +03:00 committed by Alex Vanin
parent 4b9ee3936c
commit 47e061a440
6 changed files with 42 additions and 18 deletions

View file

@ -163,8 +163,10 @@ func ToNativeRole(r *models.Role) (eacl.Role, error) {
return eacl.RoleSystem, nil
case models.RoleOTHERS:
return eacl.RoleOthers, nil
case models.RoleKEYS:
return eacl.RoleUnknown, nil
default:
return eacl.RoleUnknown, fmt.Errorf("unsupported role type: '%s'", *r)
return 0, fmt.Errorf("unsupported role type: '%s'", *r)
}
}
@ -177,6 +179,8 @@ func FromNativeRole(r eacl.Role) (*models.Role, error) {
return models.NewRole(models.RoleSYSTEM), nil
case eacl.RoleOthers:
return models.NewRole(models.RoleOTHERS), nil
case eacl.RoleUnknown:
return models.NewRole(models.RoleKEYS), nil
default:
return nil, fmt.Errorf("unsupported role type: '%s'", r)
}
@ -315,6 +319,10 @@ func FromNativeRecord(r eacl.Record) (*models.Record, error) {
func ToNativeTarget(t *models.Target) (*eacl.Target, error) {
var target eacl.Target
if len(t.Keys) > 0 && *t.Role != models.RoleKEYS {
return nil, fmt.Errorf("you cannot set binary keys with role other than '%s'", models.RoleKEYS)
}
role, err := ToNativeRole(t.Role)
if err != nil {
return nil, err