diff --git a/REST-Tests/lists.http b/REST-Tests/lists.http index 8bbc25428da..666108c8906 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 c9b68ecc04d..c9885beaeca 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 00000000000..b3fa680fc12 --- /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 636480774a2..8650b15a1f4 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{},