Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b7218e5de |
57
api.go
57
api.go
@@ -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",
|
||||||
|
|||||||
Reference in New Issue
Block a user