add list secret api endpoint
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2023-04-05 11:31:42 +10:00
parent 70f8103901
commit b9a0c3ec0a
4 changed files with 52 additions and 10 deletions

View File

@@ -14,6 +14,15 @@ type RetrieveInput struct {
DeviceCategory string `json:"deviceCategory"`
}
type ListSecret struct {
SecretId int `db:"SecretId" json:"-"`
RoleId int `db:"RoleId" json:"-"`
DeviceName string `db:"DeviceName"`
DeviceCategory string `db:"DeviceCategory"`
UserName string `db:"UserName"`
Secret string `db:"Secret" json:"-"`
}
func RetrieveSecret(c *gin.Context) {
var input RetrieveInput
var results []models.Secret
@@ -117,6 +126,36 @@ func retrieveSpecifiedSecret(s *models.Secret, c *gin.Context) {
return
}
}
func ListSecrets(c *gin.Context) {
var results []models.Secret
var output []ListSecret
// Get the user and role id of the requestor
u, err := models.GetUserRoleFromToken(c)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
// If user is admin then list everything, otherwise only list for current role
if u.Admin {
results, err = models.GetSecrets(&models.Secret{}, false)
} else {
results, err = models.GetSecrets(&models.Secret{RoleId: u.RoleId}, true)
}
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
for _, v := range results {
output = append(output, ListSecret(v))
}
// output results as json
c.JSON(http.StatusOK, gin.H{"message": "success", "data": output})
}
func RetrieveMultpleSecrets(c *gin.Context) {
var input RetrieveInput