From d8b68f2815b4b793b22fde5790faafbf8ffc7793 Mon Sep 17 00:00:00 2001 From: Nathan Coad Date: Tue, 9 Jan 2024 16:56:00 +1100 Subject: [PATCH] one more update --- controllers/retrieve_secrets.go | 3 +-- models/secret.go | 34 ++------------------------------- utils/utils.go | 33 ++++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 34 deletions(-) diff --git a/controllers/retrieve_secrets.go b/controllers/retrieve_secrets.go index 72cd6bb..cb20e73 100644 --- a/controllers/retrieve_secrets.go +++ b/controllers/retrieve_secrets.go @@ -18,8 +18,7 @@ type RetrieveInput struct { } type ListSecret struct { - //RoleId int `db:"RoleId" json:"-"` - SecretId int `db:"SecretId" json:"-"` + SecretId int `db:"SecretId"` SafeId int `db:"SafeId"` DeviceName string `db:"DeviceName"` DeviceCategory string `db:"DeviceCategory"` diff --git a/models/secret.go b/models/secret.go index 45311aa..1ba3417 100644 --- a/models/secret.go +++ b/models/secret.go @@ -9,7 +9,7 @@ import ( "fmt" "io" "log" - "reflect" + "smt/utils" "strings" "github.com/jmoiron/sqlx" @@ -54,36 +54,6 @@ func (s *Secret) SaveSecret() (*Secret, error) { return s, nil } -func printStructContents(s interface{}, indentLevel int) string { - var result strings.Builder - - val := reflect.ValueOf(s) - - if val.Kind() == reflect.Ptr { - val = val.Elem() - } - - typ := val.Type() - - for i := 0; i < val.NumField(); i++ { - field := val.Field(i) - fieldType := typ.Field(i) - - indent := strings.Repeat("\t", indentLevel) - result.WriteString(fmt.Sprintf("%s%s: ", indent, fieldType.Name)) - - switch field.Kind() { - case reflect.Struct: - result.WriteString("\n") - result.WriteString(printStructContents(field.Interface(), indentLevel+1)) - default: - result.WriteString(fmt.Sprintf("%v\n", field.Interface())) - } - } - - return result.String() -} - func SecretsGetAllowed(s *Secret, userId int) ([]UserSecret, error) { // Query based on group // SELECT users.UserId, users.GroupId, permissions.ReadOnly, permissions.SafeId, safes.SafeName, secrets.* FROM users INNER JOIN groups ON users.GroupId = groups.GroupId INNER JOIN permissions ON groups.GroupId = permissions.GroupId INNER JOIN safes on permissions.SafeId = safes.SafeId INNER JOIN secrets on secrets.SafeId = safes.SafeId WHERE users.UserId = 2 @@ -172,7 +142,7 @@ func SecretsGetAllowed(s *Secret, userId int) ([]UserSecret, error) { return secretResults, err } //log.Printf("r: %v\n", r) - debugPrint := printStructContents(&r, 0) + debugPrint := utils.PrintStructContents(&r, 0) log.Println(debugPrint) // Don't decrypt the secrets in the results of this query diff --git a/utils/utils.go b/utils/utils.go index ca1fd9e..4c42345 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -6,11 +6,14 @@ import ( "crypto/x509" "crypto/x509/pkix" "encoding/pem" + "fmt" "log" "math/big" "net" "os" "path/filepath" + "reflect" + "strings" "time" ) @@ -183,3 +186,33 @@ func GenerateCerts(tlsCert string, tlsKey string) { } log.Printf("wrote %s\n", tlsKey) } + +func PrintStructContents(s interface{}, indentLevel int) string { + var result strings.Builder + + val := reflect.ValueOf(s) + + if val.Kind() == reflect.Ptr { + val = val.Elem() + } + + typ := val.Type() + + for i := 0; i < val.NumField(); i++ { + field := val.Field(i) + fieldType := typ.Field(i) + + indent := strings.Repeat("\t", indentLevel) + result.WriteString(fmt.Sprintf("%s%s: ", indent, fieldType.Name)) + + switch field.Kind() { + case reflect.Struct: + result.WriteString("\n") + result.WriteString(PrintStructContents(field.Interface(), indentLevel+1)) + default: + result.WriteString(fmt.Sprintf("%v\n", field.Interface())) + } + } + + return result.String() +}