Some checks failed
SonarQube / SonarQube (push) Failing after 5m28s
E2e test on main branch push / server and client test (map[name:admin port:8080]) (push) Failing after 3m33s
Server and lib tests / Library test (js) (push) Failing after 1m36s
Server and lib tests / Library test (vue) (push) Successful in 2m24s
Server and lib tests / Web client test (admin) (push) Successful in 2m52s
Server and lib tests / Web client test (compose) (push) Successful in 3m23s
Server and lib tests / Web client test (discovery) (push) Successful in 2m49s
Server and lib tests / Web client test (one) (push) Successful in 2m52s
Server and lib tests / Web client test (privacy) (push) Successful in 2m44s
Server and lib tests / Web client test (reporter) (push) Successful in 2m56s
Server and lib tests / Web client test (workflow) (push) Successful in 3m0s
Server and lib tests / Server tests (push) Failing after 4m55s
E2e test on main branch push / notify-failure (push) Failing after 9s
Server and lib tests / Send matrix testing notification (push) Successful in 2s
Mark stale issues and pull requests / stale (push) Successful in 40s
62 lines
1.4 KiB
CUE
62 lines
1.4 KiB
CUE
package schema
|
|
|
|
import (
|
|
"strings"
|
|
)
|
|
|
|
#rbacComponent: {
|
|
resource: {
|
|
type: string
|
|
}
|
|
|
|
operations: {
|
|
[key=_]: #rbacOperation & {
|
|
handle: key
|
|
}
|
|
}
|
|
}
|
|
|
|
#rbacResource: {
|
|
resourceExpIdent: #expIdent
|
|
|
|
operations: {
|
|
[key=_]: #rbacOperation & {
|
|
handle: key
|
|
_resourceExpIdent: resourceExpIdent
|
|
}
|
|
}
|
|
}
|
|
|
|
#rbacOperation: {
|
|
handle: #handle
|
|
description: string | *handle
|
|
_resourceExpIdent?: string
|
|
|
|
// Some string manipulation that will result in
|
|
// more pronouncable access-control check function name
|
|
|
|
// When check function name is not explicitly defined we try
|
|
// to use resource and operation name and generate easy-to-read name
|
|
//
|
|
// <res> + <op> => Can<Op><Res>
|
|
// <res> + <op:foo.bar.verb> => Can<Verb><Foo><Bar>On<Res>
|
|
|
|
_operation: strings.Replace(strings.Replace(handle, "-", " ", -1), "_", " ", -1)
|
|
_opSplit: strings.Split(_operation, ".")
|
|
|
|
_opFlip: [_opSplit[len(_opSplit)-1]] + _opSplit[0:len(_opSplit)-1]
|
|
_opFinal: strings.Replace(strings.ToTitle(strings.Join(_opFlip, " ")), " ", "", -1)
|
|
|
|
if _resourceExpIdent == _|_ {
|
|
checkFuncName: #expIdent | *"Can\(_opFinal)"
|
|
}
|
|
|
|
if len(_opSplit) > 1 && _resourceExpIdent != _|_ {
|
|
checkFuncName: #expIdent | *"Can\(_opFinal)On\(_resourceExpIdent)"
|
|
}
|
|
|
|
if len(_opSplit) <= 1 && _resourceExpIdent != _|_ {
|
|
checkFuncName: #expIdent | *"Can\(_opFinal)\(_resourceExpIdent)"
|
|
}
|
|
}
|