diff --git a/controllers/retrieveSecrets.go b/controllers/retrieveSecrets.go index 9cdc5df..942e29a 100644 --- a/controllers/retrieveSecrets.go +++ b/controllers/retrieveSecrets.go @@ -107,30 +107,9 @@ func RetrieveSecretByUsername(c *gin.Context) { } func retrieveSpecifiedSecret(s *models.Secret, c *gin.Context) { - /* - // Get the user and role id of the requestor - u, err := models.UserGetRoleFromToken(c) - if err != nil { - c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) - return - } - s.RoleId = u.RoleId - - results, err := models.GetSecrets(s, false) - if err != nil { - c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) - return - } - */ var UserId int var results []models.Secret - /* - user_id, err := token.ExtractTokenID(c) - if err != nil { - c.JSON(http.StatusBadRequest, gin.H{"error": "error determining user"}) - return - } - */ + // Get userId that we stored in the context earlier if val, ok := c.Get("user-id"); !ok { c.JSON(http.StatusBadRequest, gin.H{"error": "error determining user"}) @@ -171,26 +150,47 @@ func retrieveSpecifiedSecret(s *models.Secret, c *gin.Context) { return } - if len(results) == 1 { - - // Create audit record - a := models.Audit{ - UserId: UserId, - SecretId: results[0].SecretId, - IpAddress: c.ClientIP(), - EventText: fmt.Sprintf("Retrieved Secret Id %d", results[0].SecretId), - } - a.AuditLogAdd() - - // output results as json - c.JSON(http.StatusOK, gin.H{"message": "success", "data": results}) - } else if len(results) > 1 { - c.JSON(http.StatusBadRequest, gin.H{"error": "found multiple matching secrets"}) - return - } else { + if len(results) == 0 { c.JSON(http.StatusBadRequest, gin.H{"error": "found no matching secrets"}) return } + + // Create audit record for results + for i := range results { + a := models.Audit{ + UserId: UserId, + SecretId: results[i].SecretId, + IpAddress: c.ClientIP(), + EventText: fmt.Sprintf("Retrieved Secret Id %d", results[i].SecretId), + } + a.AuditLogAdd() + } + + // output results as json + c.JSON(http.StatusOK, gin.H{"message": "success", "data": results, "count": len(results)}) + + /* + if len(results) == 1 { + + // Create audit record + a := models.Audit{ + UserId: UserId, + SecretId: results[0].SecretId, + IpAddress: c.ClientIP(), + EventText: fmt.Sprintf("Retrieved Secret Id %d", results[0].SecretId), + } + a.AuditLogAdd() + + // output results as json + c.JSON(http.StatusOK, gin.H{"message": "success", "data": results}) + } else if len(results) > 1 { + c.JSON(http.StatusBadRequest, gin.H{"error": "found multiple matching secrets"}) + return + } else { + c.JSON(http.StatusBadRequest, gin.H{"error": "found no matching secrets"}) + return + } + */ } func ListSecrets(c *gin.Context) {