test
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-01-08 21:13:04 +11:00
parent 598b9442c0
commit 20dc745a64
3 changed files with 184 additions and 36 deletions

View File

@@ -46,6 +46,70 @@ func (s *Secret) SaveSecret() (*Secret, error) {
return s, nil
}
func SecretsSearchAllSafes(s *Secret) ([]Secret, error) {
var err error
var secretResults []Secret
args := []interface{}{}
query := "SELECT * FROM secrets WHERE 1=1 "
// Make sure at least one parameter was specified
if s.DeviceName == "" && s.DeviceCategory == "" && s.UserName == "" {
err = errors.New("no search parameters specified")
log.Println(err)
return secretResults, err
}
// Add any other arguments to the query if they were specified
if s.DeviceName != "" {
query += " AND DeviceName LIKE ? "
args = append(args, s.DeviceName)
}
if s.DeviceCategory != "" {
query += " AND DeviceCategory LIKE ? "
args = append(args, s.DeviceCategory)
}
if s.UserName != "" {
query += " AND UserName LIKE ? "
args = append(args, s.UserName)
}
// Execute the query
log.Printf("SecretsSearchAllSafes query string : '%s'\n%+v\n", query, args)
rows, err := db.Queryx(query, args...)
if err != nil {
log.Printf("SecretsSearchAllSafes error executing sql record : '%s'\n", err)
return secretResults, err
} else {
// parse all the results into a slice
for rows.Next() {
var r Secret
err = rows.StructScan(&r)
if err != nil {
log.Printf("SecretsSearchAllSafes error parsing sql record : '%s'\n", err)
return secretResults, err
}
// Decrypt the secret
_, err = r.DecryptSecret()
if err != nil {
//log.Printf("GetSecret unable to decrypt stored secret '%v' : '%s'\n", r.Secret, err)
log.Printf("SecretsSearchAllSafes unable to decrypt stored secret : '%s'\n", err)
return secretResults, err
} else {
secretResults = append(secretResults, r)
}
}
log.Printf("SecretsSearchAllSafes retrieved '%d' results\n", len(secretResults))
}
return secretResults, nil
}
// SecretsGetMultipleSafes queries the specified safes for matching secrets
func SecretsGetMultipleSafes(s *Secret, adminRole bool, safeIds []int) ([]Secret, error) {
var err error
@@ -62,6 +126,8 @@ func SecretsGetMultipleSafes(s *Secret, adminRole bool, safeIds []int) ([]Secret
rows, err := db.Queryx(query, args)
*/
// TODO use SecretsSearchAllSafes for adminRole of true
args := []interface{}{}
var query string
if adminRole {

View File

@@ -359,7 +359,8 @@ func UserGetSafesAllowed(userId int) ([]UserSafe, error) {
// join users, groups and permissions
rows, err := db.Queryx(`
SELECT users.UserId, users.GroupId, users.Admin as AdminUser, groups.Admin as AdminGroup,
SELECT users.UserId, users.GroupId,
groups.Admin as AdminGroup,
permissions.SafeId, safes.SafeName FROM users
INNER JOIN groups ON users.GroupId = groups.GroupId
INNER JOIN permissions ON groups.GroupId = permissions.GroupId