Skip to content

Commit

Permalink
feat: ABAC support for /api/enforce endpoint (#2660)
Browse files Browse the repository at this point in the history
  • Loading branch information
lordspinach committed Jan 31, 2024
1 parent 523186f commit c409678
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 4 deletions.
32 changes: 31 additions & 1 deletion util/json.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@

package util

import "encoding/json"
import (
"encoding/json"
"reflect"
)

func StructToJson(v interface{}) string {
data, err := json.Marshal(v)
Expand All @@ -37,3 +40,30 @@ func StructToJsonFormatted(v interface{}) string {
func JsonToStruct(data string, v interface{}) error {
return json.Unmarshal([]byte(data), v)
}

func TryJsonToAnonymousStruct(j string) (interface{}, error) {
var data map[string]interface{}
if err := json.Unmarshal([]byte(j), &data); err != nil {
return nil, err
}

// Create a slice of StructFields
fields := make([]reflect.StructField, 0, len(data))
for k, v := range data {
fields = append(fields, reflect.StructField{
Name: k,
Type: reflect.TypeOf(v),
})
}

// Create the struct type
t := reflect.StructOf(fields)

// Unmarshal again, this time to the new struct type
val := reflect.New(t)
i := val.Interface()
if err := json.Unmarshal([]byte(j), &i); err != nil {
return nil, err
}
return i, nil
}
13 changes: 10 additions & 3 deletions util/string.go
Original file line number Diff line number Diff line change
Expand Up @@ -324,9 +324,16 @@ func GetUsernameFromEmail(email string) string {
}

func StringToInterfaceArray(array []string) []interface{} {
var interfaceArray []interface{}
for _, v := range array {
interfaceArray = append(interfaceArray, v)
var (
interfaceArray []interface{}
elem interface{}
)
for _, elem = range array {
jStruct, err := TryJsonToAnonymousStruct(elem.(string))
if err == nil {
elem = jStruct
}
interfaceArray = append(interfaceArray, elem)
}
return interfaceArray
}
Expand Down

0 comments on commit c409678

Please sign in to comment.