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  }