initial permissions endpoint implementation
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -81,7 +81,7 @@ func AddGroupHandler(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{"message": "group creation success"})
|
||||
c.JSON(http.StatusOK, gin.H{"message": "group creation success", "data": g})
|
||||
}
|
||||
|
||||
func DeleteGroupHandler(c *gin.Context) {
|
||||
|
93
controllers/controlPermissions.go
Normal file
93
controllers/controlPermissions.go
Normal file
@@ -0,0 +1,93 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"html"
|
||||
"log"
|
||||
"net/http"
|
||||
"smt/models"
|
||||
"strings"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type PermissionInput struct {
|
||||
PermissionId int `db:"PermissionId" json:"permissionId"`
|
||||
Description string `db:"Description" json:"description"`
|
||||
ReadOnly bool `db:"ReadOnly" json:"readOnly"`
|
||||
SafeId int `db:"SafeId" json:"safeId"`
|
||||
UserId int `db:"UserId" json:"userId"`
|
||||
GroupId int `db:"GroupId" json:"groupId"`
|
||||
}
|
||||
|
||||
func GetPermissionsHandler(c *gin.Context) {
|
||||
permissions, err := models.PermissionList()
|
||||
|
||||
if err != nil {
|
||||
errString := fmt.Sprintf("error retrieving permissions : '%s'", err)
|
||||
log.Printf("GetPermissionsHandler %s\n", errString)
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": errString})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{"message": "success", "data": permissions})
|
||||
}
|
||||
|
||||
func AddPermissionHandler(c *gin.Context) {
|
||||
var input PermissionInput
|
||||
|
||||
if err := c.ShouldBindJSON(&input); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
// Validate input
|
||||
if len(input.Description) == 0 && input.PermissionId == 0 {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "no permission id or description specified"})
|
||||
return
|
||||
}
|
||||
if input.SafeId == 0 {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "no safe id specified"})
|
||||
return
|
||||
}
|
||||
if input.UserId == 0 && input.GroupId == 0 {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "no user id or group id specified"})
|
||||
return
|
||||
}
|
||||
|
||||
p := models.Permission{
|
||||
PermissionId: input.PermissionId,
|
||||
Description: input.Description,
|
||||
ReadOnly: input.ReadOnly,
|
||||
SafeId: input.SafeId,
|
||||
UserId: input.UserId,
|
||||
GroupId: input.GroupId,
|
||||
}
|
||||
|
||||
//remove leading/trailing spaces in groupname
|
||||
p.Description = html.EscapeString(strings.TrimSpace(p.Description))
|
||||
|
||||
// Check if role already exists
|
||||
testPermission, _ := models.PermissionGetByDesc(p.Description)
|
||||
log.Printf("AddPermissionHandler checking if permissions with description '%s' already exists\n", p.Description)
|
||||
|
||||
if (models.Permission{} == testPermission) {
|
||||
log.Printf("AddPermissionHandler confirmed no permission with same description\n")
|
||||
} else {
|
||||
errorString := fmt.Sprintf("attempt to register permissions with description '%s' but id '%d' already exists", p.Description, testPermission.PermissionId)
|
||||
log.Printf("Register error : '%s'\n", errorString)
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": errorString})
|
||||
return
|
||||
}
|
||||
|
||||
_, err := p.PermissionAdd()
|
||||
|
||||
if err != nil {
|
||||
errString := fmt.Sprintf("error creating permission : '%s'", err)
|
||||
log.Printf("AddPermissionHandler %s\n", errString)
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": errString})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{"message": "permission creation success", "data": p})
|
||||
}
|
Reference in New Issue
Block a user