Skip to content

Commit 6c04c3e

Browse files
committed
mvp for dpg
1 parent 349113c commit 6c04c3e

File tree

5 files changed

+79
-89
lines changed

5 files changed

+79
-89
lines changed

examples/permissions/permission_example.go

Lines changed: 14 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -22,54 +22,22 @@ func main() {
2222
fmt.Println(err)
2323
}
2424

25-
// UPDATE Permissions
26-
27-
perm := []PermissionItem{}
28-
perm = append(perm,PermissionItem{
29-
Op: "add",
30-
Path: "/connections/1",
31-
Value: "READ"
32-
})
33-
34-
// update_user_group := GuacUserGroup{
35-
// Identifier: "Daniels-group",
36-
// Attributes: GuacUserGroupAttributes{
37-
// Disabled: "true",
38-
// },
39-
// }
40-
// err = gAPI.UpdateUserGroup(&update_user_group)
41-
// if err != nil {
42-
// fmt.Println(err)
43-
// } else {
44-
// fmt.Println("Updated. Re-reading info: ")
45-
// update_reread_resp, err := gAPI.ReadUserGroup(&update_user_group)
46-
// if err != nil {
47-
// fmt.Println(err)
48-
// } else {
49-
// fmt.Println(update_reread_resp.Attributes.Disabled)
50-
// }
51-
// }
25+
// READ User ConnectionPermissions
5226

53-
// DELETE UserGroup
27+
resp, err := gAPI.GetUserConnectionPermissions("tf-test-1")
28+
if err != nil {
29+
fmt.Println("fuck", err)
30+
}
31+
fmt.Println(resp)
5432

55-
// delete_user_group := GuacUserGroup{
56-
// Identifier: "Daniels-group",
57-
// }
33+
// UPDATE Permissions
5834

59-
// err = gAPI.DeleteUserGroup(&delete_user_group)
60-
// if err != nil {
61-
// fmt.Println(err)
62-
// } else {
63-
// fmt.Println("Ok")
64-
// }
35+
// items := []GuacPermissionItem{}
36+
// items = append(items, GuacPermissionItem{
37+
// Op: "add",
38+
// Path: "/connectionPermissions/19",
39+
// Value: "READ",
40+
// })
41+
// _ = gAPI.SendUserConnectionPermissionChanges("username", items)
6542

66-
// LIST User Groups
67-
// groups_resp, err := gAPI.ListUserGroups()
68-
// if err != nil {
69-
// fmt.Println(err)
70-
// } else {
71-
// for _, g := range groups_resp {
72-
// fmt.Println(g.Identifier)
73-
// }
74-
// }
7543
}

guac_connections.go

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package guacapi
33
import (
44
"encoding/json"
55

6+
"github.com/imdario/mergo"
7+
68
. "github.com/mdanidl/guac-api/types"
79
)
810

@@ -18,16 +20,34 @@ func (g *Guac) CreateConnection(conn *GuacConnection) (GuacConnection, error) {
1820

1921
func (g *Guac) ReadConnection(conn *GuacConnection) (GuacConnection, error) {
2022
ret := GuacConnection{}
21-
resp, err := g.Call("GET", "/api/session/data/mysql/connections/"+conn.Identifier, nil, nil)
23+
retParams := GuacConnectionParameters{}
24+
25+
connData, err := g.Call("GET", "/api/session/data/mysql/connections/"+conn.Identifier, nil, nil)
26+
if err != nil {
27+
return GuacConnection{}, err
28+
}
29+
err = json.Unmarshal(connData, &ret)
30+
31+
connParams, err := g.Call("GET", "/api/session/data/mysql/connections/"+conn.Identifier+"/parameters", nil, nil)
32+
if err != nil {
33+
return GuacConnection{}, err
34+
}
35+
err = json.Unmarshal(connParams, &retParams)
36+
if err != nil {
37+
return GuacConnection{}, err
38+
}
39+
ret2 := GuacConnection{
40+
Properties: retParams,
41+
}
42+
err = mergo.Merge(&ret, &ret2)
2243
if err != nil {
2344
return GuacConnection{}, err
2445
}
25-
err = json.Unmarshal(resp, &ret)
2646
return ret, nil
2747
}
2848

2949
func (g *Guac) UpdateConnection(conn *GuacConnection) error {
30-
_, err := g.Call("PUT", "/api/session/data/mysql/connections", nil, conn)
50+
_, err := g.Call("PUT", "/api/session/data/mysql/connections/"+conn.Identifier, nil, conn)
3151
if err != nil {
3252
return err
3353
}

permissions.go

Lines changed: 0 additions & 21 deletions
This file was deleted.

types/permissions.go

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,19 @@
11
package types
22

3-
import "errors"
4-
5-
type PermissionItem struct {
3+
// GuacPermissionItem a
4+
type GuacPermissionItem struct {
65
Op string `json:"op"`
76
Path string `json:"path"`
87
Value string `json:"value"`
98
}
109

11-
type PermissionBlock struct {
12-
PermissionItems []PermissionItem
13-
}
14-
15-
func (p *PermissionBlock) Add(i PermissionItem) {
16-
p.PermissionItems = append(p.PermissionItems, i)
17-
}
18-
func (p *PermissionBlock) List() ([]PermissionItem, error) {
19-
EmptyPermissionBlock := errors.New("No Permissions in the block")
20-
21-
if len(p.PermissionItems) > 0 {
22-
return p.PermissionItems, nil
23-
} else {
24-
return nil, EmptyPermissionBlock
25-
}
26-
10+
// GuacPermissionData a
11+
type GuacPermissionData struct {
12+
ConnectionPermissions map[string][]string `json:"connectionPermissions"`
13+
ConnectionGroupPermissions map[string][]string `json:"connectionGroupPermissions"`
14+
SharingProfilePermissions map[string][]string `json:"sharingProfilePermissions"`
15+
UserPermissions map[string][]string `json:"userPermissions"`
16+
UserGroupPermissions map[string][]string `json:"userGroupPermissions"`
17+
SystemPermissions []string `json:"systemPermissions"`
18+
ActiveConnectionPermissions map[string][]string `json:"activeConnectionPermissions"`
2719
}

user_connection_permissions.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package guacapi
2+
3+
import (
4+
"encoding/json"
5+
6+
. "github.com/mdanidl/guac-api/types"
7+
)
8+
9+
func (g *Guac) SendUserConnectionPermissionChanges(user string, p []GuacPermissionItem) error {
10+
url := "/api/session/data/mysql/users/" + user + "/permissions"
11+
_, err := g.Call("PATCH", url, nil, p)
12+
if err != nil {
13+
return err
14+
}
15+
return nil
16+
}
17+
18+
func (g *Guac) GetUserConnectionPermissions(user string) (GuacPermissionData, error) {
19+
ret := GuacPermissionData{}
20+
url := "/api/session/data/mysql/users/" + user + "/permissions"
21+
resp, err := g.Call("GET", url, nil, nil)
22+
if err != nil {
23+
return GuacPermissionData{}, err
24+
}
25+
err = json.Unmarshal(resp, &ret)
26+
if err != nil {
27+
return GuacPermissionData{}, err
28+
}
29+
30+
return ret, nil
31+
}

0 commit comments

Comments
 (0)