mirror of
https://github.com/zitadel/zitadel.git
synced 2024-12-12 11:04:25 +00:00
56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
|
package actions
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
|
||
|
"github.com/dop251/goja"
|
||
|
)
|
||
|
|
||
|
type UserGrant struct {
|
||
|
ProjectID string
|
||
|
ProjectGrantID string
|
||
|
Roles []string
|
||
|
}
|
||
|
|
||
|
func appendUserGrant(list *[]UserGrant) func(goja.FunctionCall) goja.Value {
|
||
|
return func(call goja.FunctionCall) goja.Value {
|
||
|
userGrantMap := call.Argument(0).Export()
|
||
|
userGrant, _ := userGrantFromMap(userGrantMap)
|
||
|
*list = append(*list, userGrant)
|
||
|
return nil
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func userGrantFromMap(grantMap interface{}) (UserGrant, error) {
|
||
|
m, ok := grantMap.(map[string]interface{})
|
||
|
if !ok {
|
||
|
return UserGrant{}, errors.New("invalid")
|
||
|
}
|
||
|
projectID, ok := m["projectID"].(string)
|
||
|
if !ok {
|
||
|
return UserGrant{}, errors.New("invalid")
|
||
|
}
|
||
|
var projectGrantID string
|
||
|
if id, ok := m["projectGrantID"]; ok {
|
||
|
projectGrantID, ok = id.(string)
|
||
|
if !ok {
|
||
|
return UserGrant{}, errors.New("invalid")
|
||
|
}
|
||
|
}
|
||
|
var roles []string
|
||
|
if r := m["roles"]; r != nil {
|
||
|
rs, ok := r.([]interface{})
|
||
|
if !ok {
|
||
|
return UserGrant{}, errors.New("invalid")
|
||
|
}
|
||
|
for _, role := range rs {
|
||
|
roles = append(roles, role.(string))
|
||
|
}
|
||
|
}
|
||
|
return UserGrant{
|
||
|
ProjectID: projectID,
|
||
|
ProjectGrantID: projectGrantID,
|
||
|
Roles: roles,
|
||
|
}, nil
|
||
|
}
|