diff --git a/controllers/auth.go b/controllers/auth.go index 1ea9a82..0226be8 100644 --- a/controllers/auth.go +++ b/controllers/auth.go @@ -183,7 +183,7 @@ func AddUser(c *gin.Context) { a := models.Audit{ UserId: RequestingUserId, IpAddress: c.ClientIP(), - EventText: fmt.Sprintf("Created User Id %d", u.UserId), + EventText: fmt.Sprintf("Created User '%s' with id %d", u.UserName, u.UserId), } a.AuditLogAdd() diff --git a/controllers/controlGroups.go b/controllers/controlGroups.go index 97c6d52..d016423 100644 --- a/controllers/controlGroups.go +++ b/controllers/controlGroups.go @@ -34,6 +34,7 @@ func GetGroupsHandler(c *gin.Context) { func AddGroupHandler(c *gin.Context) { var input GroupInput + var RequestingUserId int if err := c.ShouldBindJSON(&input); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) @@ -50,6 +51,13 @@ func AddGroupHandler(c *gin.Context) { return } + if val, ok := c.Get("user-id"); !ok { + c.JSON(http.StatusBadRequest, gin.H{"error": "error determining user"}) + return + } else { + RequestingUserId = val.(int) + } + g := models.Group{} g.GroupName = input.GroupName g.LdapGroup = input.LdapGroup @@ -90,6 +98,14 @@ func AddGroupHandler(c *gin.Context) { // Verification checks passed, return group group, err := g.GroupAdd() + // Create audit record + a := models.Audit{ + UserId: RequestingUserId, + IpAddress: c.ClientIP(), + EventText: fmt.Sprintf("Created Group '%s' with id %d", g.GroupName, g.GroupId), + } + a.AuditLogAdd() + if err != nil { errString := fmt.Sprintf("error creating group : '%s'", err) log.Printf("AddGroupHandler %s\n", errString) @@ -102,6 +118,7 @@ func AddGroupHandler(c *gin.Context) { func DeleteGroupHandler(c *gin.Context) { var input GroupInput + var RequestingUserId int if err := c.ShouldBindJSON(&input); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) @@ -114,6 +131,13 @@ func DeleteGroupHandler(c *gin.Context) { return } + if val, ok := c.Get("user-id"); !ok { + c.JSON(http.StatusBadRequest, gin.H{"error": "error determining user"}) + return + } else { + RequestingUserId = val.(int) + } + g := models.Group{} g.GroupId = input.GroupId g.GroupName = input.GroupName @@ -152,6 +176,14 @@ func DeleteGroupHandler(c *gin.Context) { err := g.GroupDelete() + // Create audit record + a := models.Audit{ + UserId: RequestingUserId, + IpAddress: c.ClientIP(), + EventText: fmt.Sprintf("Deleted Group '%s' with id %d", g.GroupName, g.GroupId), + } + a.AuditLogAdd() + if err != nil { errString := fmt.Sprintf("error deleting group : '%s'", err) log.Printf("DeleteGroupHandler %s\n", errString) diff --git a/controllers/controlPermissions.go b/controllers/controlPermissions.go index 1260089..e2d4c5e 100644 --- a/controllers/controlPermissions.go +++ b/controllers/controlPermissions.go @@ -35,6 +35,7 @@ func GetPermissionsHandler(c *gin.Context) { func AddPermissionHandler(c *gin.Context) { var input PermissionInput + var RequestingUserId int if err := c.ShouldBindJSON(&input); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) @@ -55,6 +56,13 @@ func AddPermissionHandler(c *gin.Context) { return } + if val, ok := c.Get("user-id"); !ok { + c.JSON(http.StatusBadRequest, gin.H{"error": "error determining user"}) + return + } else { + RequestingUserId = val.(int) + } + p := models.Permission{ PermissionId: input.PermissionId, Description: input.Description, @@ -82,6 +90,14 @@ func AddPermissionHandler(c *gin.Context) { _, err := p.PermissionAdd() + // Create audit record + a := models.Audit{ + UserId: RequestingUserId, + IpAddress: c.ClientIP(), + EventText: fmt.Sprintf("Created Permission '%s' with id %d on safe id %d for group id %d or user id %d", p.Description, p.PermissionId, p.SafeId, p.GroupId, p.UserId), + } + a.AuditLogAdd() + if err != nil { errString := fmt.Sprintf("error creating permission : '%s'", err) log.Printf("AddPermissionHandler %s\n", errString) @@ -94,6 +110,7 @@ func AddPermissionHandler(c *gin.Context) { func DeletePermissionHandler(c *gin.Context) { var input PermissionInput + var RequestingUserId int if err := c.ShouldBindJSON(&input); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) @@ -108,6 +125,13 @@ func DeletePermissionHandler(c *gin.Context) { return } + if val, ok := c.Get("user-id"); !ok { + c.JSON(http.StatusBadRequest, gin.H{"error": "error determining user"}) + return + } else { + RequestingUserId = val.(int) + } + p := models.Permission{ PermissionId: input.PermissionId, Description: input.Description, @@ -131,6 +155,14 @@ func DeletePermissionHandler(c *gin.Context) { } else { err := p.PermissionDelete() + // Create audit record + a := models.Audit{ + UserId: RequestingUserId, + IpAddress: c.ClientIP(), + EventText: fmt.Sprintf("Deleted Permission '%s' with id %d", p.Description, p.PermissionId), + } + a.AuditLogAdd() + if err != nil { errString := fmt.Sprintf("error deleting permission : '%s'", err) log.Printf("DeletePermissionHandler %s\n", errString)