@@ -26,10 +26,28 @@ type Favorite struct {
26
26
type UserPermissions struct {
27
27
Groups []string `json:"Groups,omitempty"` // json key are capitalized to ensure exising data in cache are still valid
28
28
GroupsAdmin []string `json:"GroupsAdmin,omitempty"`
29
- ProjectsPerm map [ string ] int `json:"ProjectsPerm,omitempty"`
29
+ ProjectsPerm UserPermissionsMap `json:"ProjectsPerm,omitempty"`
30
30
WorkflowsPerm UserPermissionsMap `json:"WorkflowsPerm,omitempty"`
31
31
}
32
32
33
+ func (u UserPermissions ) Clone () UserPermissions {
34
+ up := UserPermissions {}
35
+ up .Groups = make ([]string , len (u .Groups ))
36
+ up .GroupsAdmin = make ([]string , len (u .GroupsAdmin ))
37
+ up .ProjectsPerm = make (UserPermissionsMap , len (u .ProjectsPerm ))
38
+ up .WorkflowsPerm = make (UserPermissionsMap , len (u .WorkflowsPerm ))
39
+ copy (up .Groups , u .Groups )
40
+ copy (up .GroupsAdmin , u .GroupsAdmin )
41
+
42
+ for i , v := range u .ProjectsPerm {
43
+ up .ProjectsPerm [i ] = v
44
+ }
45
+ for i , v := range u .WorkflowsPerm {
46
+ up .WorkflowsPerm [i ] = v
47
+ }
48
+ return up
49
+ }
50
+
33
51
// UserPermissionsMap is a type of map. The in key the key and name of the object and value is the level of permissions
34
52
//easyjson:json
35
53
type UserPermissionsMap map [string ]int
0 commit comments