Added endpoint to update a user <-> namespace relation

This commit is contained in:
kolaente 2018-09-19 08:03:39 +02:00
parent 1e993f1e5c
commit 5e8597699d
Signed by untrusted user: konrad
GPG Key ID: F40E70337AB24C9B
4 changed files with 34 additions and 1 deletions

View File

@ -17,7 +17,7 @@ Authorization: Bearer {{auth_token}}
###
# Give a user access to that namespace
PUT http://localhost:8080/api/v1/namespaces/12/users
PUT http://localhost:8080/api/v1/namespaces/1/users
Authorization: Bearer {{auth_token}}
Content-Type: application/json
@ -25,6 +25,15 @@ Content-Type: application/json
###
# Update a users access to that namespace
POST http://localhost:8080/api/v1/namespaces/1/users/3
Authorization: Bearer {{auth_token}}
Content-Type: application/json
{"right": 2}
###
# Delete a user from a namespace
DELETE http://localhost:8080/api/v1/namespaces/1/users/2
Authorization: Bearer {{auth_token}}

View File

@ -13,3 +13,10 @@ func (nu *NamespaceUser) CanDelete(doer *User) bool {
n, _ := GetNamespaceByID(nu.NamespaceID)
return n.CanWrite(doer)
}
// CanUpdate checks if the user can update a user <-> namespace relation
func (nu *NamespaceUser) CanUpdate(doer *User) bool {
// Get the namespace and check if the user has write access on it
n, _ := GetNamespaceByID(nu.NamespaceID)
return n.CanWrite(doer)
}

View File

@ -0,0 +1,16 @@
package models
// Update updates a user <-> namespace relation
func (nu *NamespaceUser) Update() (err error) {
// Check if the right is valid
if err := nu.Right.isValid(); err != nil {
return err
}
_, err = x.
Where("namespace_id = ? AND user_id = ?", nu.NamespaceID, nu.UserID).
Cols("right").
Update(nu)
return
}

View File

@ -125,6 +125,7 @@ func RegisterRoutes(e *echo.Echo) {
a.GET("/namespaces/:namespace/users", namespaceUserHandler.ReadAllWeb)
a.PUT("/namespaces/:namespace/users", namespaceUserHandler.CreateWeb)
a.DELETE("/namespaces/:namespace/users/:user", namespaceUserHandler.DeleteWeb)
a.POST("/namespaces/:namespace/users/:user", namespaceUserHandler.UpdateWeb)
teamHandler := &crud.WebHandler{
CObject: &models.Team{},