change dlete role api from id to key 'role'

This commit is contained in:
Adrian Zürcher
2025-10-24 17:10:28 +02:00
parent 8285cf0384
commit 1b7218e5de

57
api.go
View File

@@ -237,60 +237,53 @@ func (aH *AccessHandlerAPI) UpdateRole(c *gin.Context) {
} }
func (aH *AccessHandlerAPI) DeleteRole(c *gin.Context) { func (aH *AccessHandlerAPI) DeleteRole(c *gin.Context) {
queryId := c.Query("id") queryRole := c.Query("role")
if queryRole == "" || queryRole == "null" || queryRole == "undefined" {
if queryId == "" || queryId == "null" || queryId == "undefined" { aH.logger.Error("DeleteRole", "id query missing or wrong value: "+queryRole)
aH.logger.Error("DeleteRole", "id query missing or wrong value: "+queryId) c.JSON(http.StatusInternalServerError, nil)
c.JSON(http.StatusBadRequest, gin.H{
"message": "id query missing or wrong value: " + queryId,
})
return return
} }
var request struct { var request struct {
Ids []int `json:"ids"` Roles []string `json:"roles"`
} }
err := c.BindJSON(&request) err := c.BindJSON(&request)
if err != nil { if err != nil {
aH.logger.Error("DeleteRole", "id query missing or wrong value: "+queryId) aH.logger.Error("DeleteRole", err)
c.JSON(http.StatusInternalServerError, nil) c.JSON(http.StatusBadRequest, nil)
return return
} }
if len(request.Ids) == 0 { if len(request.Roles) == 0 {
aH.logger.Error("DeleteRole", "no ids given to be deleted") aH.logger.Error("DeleteRole", "no ids given to be deleted")
c.JSON(http.StatusBadRequest, gin.H{ c.JSON(http.StatusBadRequest, models.NewJsonMessageResponse("no roles given to be deleted"))
"message": "no ids given to be deleted",
})
return return
} }
var ownId string var ownRole string
removeIds := make([]uint, len(request.Ids))
for i, id := range request.Ids { for _, role := range request.Roles {
if queryId == fmt.Sprint(id) { if queryRole == role {
ownId = queryId ownRole = role
continue continue
} }
removeIds[i] = uint(id) err = aH.dbHandler.DeleteByKey(&models.Role{}, "role", role, false)
}
if ownId != "" {
aH.logger.Error("DeleteRole", "can not delete logged in member role id: "+queryId)
c.JSON(http.StatusBadRequest, gin.H{
"message": "can not delete logged in member id: " + queryId,
"id": queryId,
})
return
}
err = aH.dbHandler.DeleteById(&models.Role{}, removeIds...)
if err != nil { if err != nil {
aH.logger.Error("DeleteRole", err) aH.logger.Error("DeleteRole", err)
c.JSON(http.StatusInternalServerError, nil) c.JSON(http.StatusInternalServerError, nil)
return return
} }
}
if ownRole != "" {
aH.logger.Error("DeleteRole", "can not delete logged in role id: "+ownRole)
c.JSON(http.StatusBadRequest, gin.H{
"message": "can not delete logged in role id: " + ownRole,
"role": ownRole,
})
return
}
c.JSON(http.StatusOK, gin.H{ c.JSON(http.StatusOK, gin.H{
"message": "role(s) deleted", "message": "role(s) deleted",