start work on adding secrets

This commit is contained in:
2023-03-31 16:59:38 +11:00
parent 8135c49e7f
commit 7184eba5f3
6 changed files with 75 additions and 23 deletions

View File

@@ -1,6 +1,8 @@
package controllers
import (
"ccsecrets/models"
"fmt"
"net/http"
"github.com/gin-gonic/gin"
@@ -8,17 +10,46 @@ import (
// bindings are validated by https://github.com/go-playground/validator
type StoreInput struct {
RoleId int `json:"roleId"`
DeviceName string `json:"deviceName" binding:"required"`
UserName string `json:"userName" binding:"required"`
SecretValue string `json:"secretValue" binding:"required"`
RoleId int `json:"roleId"`
DeviceName string `json:"deviceName"`
DeviceCategory string `json:"devicCategory"`
UserName string `json:"userName" binding:"required"`
SecretValue string `json:"secretValue" binding:"required"`
}
func Store(c *gin.Context) {
var input RetrieveInput
func StoreSecret(c *gin.Context) {
var err error
var input StoreInput
if err := c.ShouldBindJSON(&input); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
fmt.Printf("StoreSecret received JSON input '%v'\n", input)
// Populate fields
s := models.Secret{}
s.UserName = input.UserName
s.DeviceName = input.DeviceName
s.DeviceCategory = input.DeviceCategory
// Default role ID is 1 if not defined
if input.RoleId != 0 {
s.RoleId = input.RoleId
} else {
s.RoleId = 1
}
// Encrypt secret
s.Secret = input.SecretValue
_, err = s.SaveSecret()
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"Error saving secret": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"message": "secret stored successfully"})
}