Tweak resource helpers

* Define InterfaceSet,
* rename resource types with RBAC types,
* some smaller bits.
This commit is contained in:
Tomaž Jerman
2020-11-27 11:19:15 +01:00
parent 22de4d2b80
commit 92b6cf3b87
+43 -12
View File
@@ -1,5 +1,10 @@
package resource
import (
ct "github.com/cortezaproject/corteza-server/compose/types"
st "github.com/cortezaproject/corteza-server/system/types"
)
type (
Interface interface {
Identifiers() Identifiers
@@ -7,6 +12,14 @@ type (
Refs() RefSet
}
InterfaceSet []Interface
IdentifiableInterface interface {
Interface
SysID() uint64
}
RefSet []*Ref
Ref struct {
// @todo check with Denis regarding strings here (the cdocs comment)
@@ -18,18 +31,25 @@ type (
Identifiers map[string]bool
)
const (
APPLICATION_RESOURCE_TYPE = "application"
COMPOSE_CHART_RESOURCE_TYPE = "composeChart"
COMPOSE_MODULE_RESOURCE_TYPE = "composeModule"
COMPOSE_NAMESPACE_RESOURCE_TYPE = "composeNamespace"
COMPOSE_PAGE_RESOURCE_TYPE = "composePage"
COMPOSE_RECORD_RESOURCE_TYPE = "ComposeRecord"
RBAC_RESOURCE_TYPE = "rbacRule"
ROLE_RESOURCE_TYPE = "role"
USER_RESOURCE_TYPE = "user"
var (
APPLICATION_RESOURCE_TYPE = st.ApplicationRBACResource.String()
COMPOSE_CHART_RESOURCE_TYPE = ct.ChartRBACResource.String()
COMPOSE_MODULE_RESOURCE_TYPE = ct.ModuleRBACResource.String()
COMPOSE_NAMESPACE_RESOURCE_TYPE = ct.NamespaceRBACResource.String()
COMPOSE_PAGE_RESOURCE_TYPE = ct.PageRBACResource.String()
COMPOSE_RECORD_RESOURCE_TYPE = "compose:record:"
RBAC_RESOURCE_TYPE = "rbac:rule:"
ROLE_RESOURCE_TYPE = st.RoleRBACResource.String()
SETTINGS_RESOURCE_TYPE = "system:setting:"
USER_RESOURCE_TYPE = st.UserRBACResource.String()
)
func MakeIdentifiers(ss ...string) Identifiers {
ii := make(Identifiers)
ii.Add(ss...)
return ii
}
func (ri Identifiers) Add(ii ...string) Identifiers {
for _, i := range ii {
if len(i) > 0 {
@@ -48,8 +68,8 @@ func (ri Identifiers) Remove(ii ...string) Identifiers {
return ri
}
func (ri Identifiers) HasAny(ii ...string) bool {
for _, i := range ii {
func (ri Identifiers) HasAny(ii Identifiers) bool {
for i := range ii {
if ri[i] {
return true
}
@@ -77,3 +97,14 @@ func (ss RefSet) FilterByResourceType(rt string) RefSet {
return rr
}
func (rr InterfaceSet) Walk(f func(r Interface) error) (err error) {
for _, r := range rr {
err = f(r)
if err != nil {
return
}
}
return nil
}