From aa40ab8eedd4813b69bfa859a95e8ac06e754ed5 Mon Sep 17 00:00:00 2001 From: kolaente Date: Wed, 19 Sep 2018 08:08:41 +0200 Subject: [PATCH] Added an endpoint to update a team <-> list relation --- REST-Tests/lists.http | 11 ++++++++++- models/team_list_rights.go | 6 ++++++ models/team_list_update.go | 16 ++++++++++++++++ routes/routes.go | 1 + 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 models/team_list_update.go diff --git a/REST-Tests/lists.http b/REST-Tests/lists.http index 8bbc2542..666108c8 100644 --- a/REST-Tests/lists.http +++ b/REST-Tests/lists.http @@ -41,7 +41,7 @@ Authorization: Bearer {{auth_token}} ### # Give a team access to that list -PUT http://localhost:8080/api/v1/lists/10/teams +PUT http://localhost:8080/api/v1/lists/1/teams Authorization: Bearer {{auth_token}} Content-Type: application/json @@ -49,6 +49,15 @@ Content-Type: application/json ### +# Update a teams access to that list +POST http://localhost:8080/api/v1/lists/1/teams/2 +Authorization: Bearer {{auth_token}} +Content-Type: application/json + +{"right": 0} + +### + # Delete a team from a list DELETE http://localhost:8080/api/v1/lists/10235/teams/1 Authorization: Bearer {{auth_token}} diff --git a/models/team_list_rights.go b/models/team_list_rights.go index c9b68ecc..c9885bea 100644 --- a/models/team_list_rights.go +++ b/models/team_list_rights.go @@ -11,3 +11,9 @@ func (tl *TeamList) CanDelete(user *User) bool { l, _ := GetListByID(tl.ListID) return l.IsAdmin(user) } + +// CanUpdate checks if the user can update a team <-> list relation +func (tl *TeamList) CanUpdate(user *User) bool { + l, _ := GetListByID(tl.ListID) + return l.IsAdmin(user) +} diff --git a/models/team_list_update.go b/models/team_list_update.go new file mode 100644 index 00000000..b3fa680f --- /dev/null +++ b/models/team_list_update.go @@ -0,0 +1,16 @@ +package models + +// Update updates a user <-> namespace relation +func (tl *TeamList) Update() (err error) { + + // Check if the right is valid + if err := tl.Right.isValid(); err != nil { + return err + } + + _, err = x. + Where("list_id = ? AND team_id = ?", tl.ListID, tl.TeamID). + Cols("right"). + Update(tl) + return +} diff --git a/routes/routes.go b/routes/routes.go index 63648077..8650b15a 100644 --- a/routes/routes.go +++ b/routes/routes.go @@ -93,6 +93,7 @@ func RegisterRoutes(e *echo.Echo) { a.GET("/lists/:list/teams", listTeamHandler.ReadAllWeb) a.PUT("/lists/:list/teams", listTeamHandler.CreateWeb) a.DELETE("/lists/:list/teams/:team", listTeamHandler.DeleteWeb) + a.POST("/lists/:list/teams/:team", listTeamHandler.UpdateWeb) listUserHandler := &crud.WebHandler{ CObject: &models.ListUser{},