github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/istructsmem/internal/descr/impl_role.go (about) 1 /* 2 * Copyright (c) 2024-present Sigma-Soft, Ltd. 3 * @author: Nikolay Nikitin 4 */ 5 6 package descr 7 8 import "github.com/voedger/voedger/pkg/appdef" 9 10 func newRole() *Role { 11 return &Role{ 12 Privileges: make([]*Privilege, 0), 13 } 14 } 15 16 func (r *Role) read(role appdef.IRole) { 17 r.Type.read(role) 18 role.Privileges(func(priv appdef.IPrivilege) { 19 p := newPrivilege() 20 p.read(priv) 21 r.Privileges = append(r.Privileges, p) 22 }) 23 } 24 25 func newPrivilege() *Privilege { 26 return &Privilege{} 27 } 28 29 func (p *Privilege) read(priv appdef.IPrivilege) { 30 p.Comment = readComment(priv) 31 p.Access = appdef.PrivilegeAccessControlString(priv.IsGranted()) 32 for _, k := range priv.Kinds() { 33 p.Kinds = append(p.Kinds, k.TrimString()) 34 } 35 p.On = priv.On() 36 p.Fields = priv.Fields() 37 }