Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b6988638c0 | ||
|
|
1b7218e5de |
74
api.go
74
api.go
@@ -181,7 +181,7 @@ func (aH *AccessHandlerAPI) AddRole(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check if a role with this name already exists
|
// Check if a role with this name already exists
|
||||||
if err := aH.dbHandler.Exists(&models.Role{}, "role", role, false); err == nil {
|
if err := aH.dbHandler.Exists(&models.Role{}, "role", role.Role, false); err == nil {
|
||||||
aH.logger.Error("AddRole", fmt.Sprintf("role with name %s already exists", role.Role))
|
aH.logger.Error("AddRole", fmt.Sprintf("role with name %s already exists", role.Role))
|
||||||
c.JSON(http.StatusBadRequest, models.NewJsonMessageResponse(fmt.Sprintf("role with name %s already exists", role.Role)))
|
c.JSON(http.StatusBadRequest, models.NewJsonMessageResponse(fmt.Sprintf("role with name %s already exists", role.Role)))
|
||||||
}
|
}
|
||||||
@@ -199,25 +199,30 @@ func (aH *AccessHandlerAPI) AddRole(c *gin.Context) {
|
|||||||
func (aH *AccessHandlerAPI) GetRole(c *gin.Context) {
|
func (aH *AccessHandlerAPI) GetRole(c *gin.Context) {
|
||||||
var i int
|
var i int
|
||||||
var err error
|
var err error
|
||||||
|
var roles []models.Role
|
||||||
|
|
||||||
|
role := c.Query("role")
|
||||||
id := c.Query("id")
|
id := c.Query("id")
|
||||||
if id != "" {
|
|
||||||
|
if role != "" {
|
||||||
|
err = aH.dbHandler.GetByKey(&roles, "role", role, false)
|
||||||
|
} else if id != "" {
|
||||||
i, err = strconv.Atoi(id)
|
i, err = strconv.Atoi(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
aH.logger.Error("GetRole", err)
|
c.JSON(http.StatusBadRequest, gin.H{
|
||||||
c.JSON(http.StatusInternalServerError, nil)
|
"message": err.Error(),
|
||||||
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
err = aH.dbHandler.GetById(&roles, uint(i))
|
||||||
}
|
}
|
||||||
|
|
||||||
var role []models.Role
|
|
||||||
err = aH.dbHandler.GetById(&role, uint(i))
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
aH.logger.Error("GetRole", err)
|
aH.logger.Error("GetRole", err)
|
||||||
c.JSON(http.StatusInternalServerError, nil)
|
c.JSON(http.StatusInternalServerError, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.JSON(http.StatusOK, role)
|
c.JSON(http.StatusOK, roles)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (aH *AccessHandlerAPI) UpdateRole(c *gin.Context) {
|
func (aH *AccessHandlerAPI) UpdateRole(c *gin.Context) {
|
||||||
@@ -237,61 +242,54 @@ 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 err != nil {
|
||||||
|
aH.logger.Error("DeleteRole", err)
|
||||||
|
c.JSON(http.StatusInternalServerError, nil)
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ownId != "" {
|
if ownRole != "" {
|
||||||
aH.logger.Error("DeleteRole", "can not delete logged in member role id: "+queryId)
|
aH.logger.Error("DeleteRole", "can not delete logged in role id: "+ownRole)
|
||||||
c.JSON(http.StatusBadRequest, gin.H{
|
c.JSON(http.StatusBadRequest, gin.H{
|
||||||
"message": "can not delete logged in member id: " + queryId,
|
"message": "can not delete logged in role id: " + ownRole,
|
||||||
"id": queryId,
|
"role": ownRole,
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = aH.dbHandler.DeleteById(&models.Role{}, removeIds...)
|
|
||||||
if err != nil {
|
|
||||||
aH.logger.Error("DeleteRole", err)
|
|
||||||
c.JSON(http.StatusInternalServerError, nil)
|
|
||||||
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