support querying for secret with username
This commit is contained in:
@@ -115,13 +115,14 @@ Data
|
|||||||
```
|
```
|
||||||
{
|
{
|
||||||
"deviceName": "",
|
"deviceName": "",
|
||||||
"deviceCategory": ""
|
"deviceCategory": "",
|
||||||
|
"userName": ""
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Must be logged in to execute this command. Only secrets registered with the current user's RoleId can be retrieved.
|
Must be logged in to execute this command. Only secrets registered with the current user's RoleId can be retrieved.
|
||||||
|
|
||||||
Either deviceName or deviceCategory can be specified (or both). Wildcards are supported for both deviceName and deviceCategory fields.
|
Either deviceName or deviceCategory can be specified (or both). Wildcards are supported for both deviceName and deviceCategory fields. userName can also be specified in conjunction with deviceName or deviceCategory.
|
||||||
1. The percent sign % wildcard matches any sequence of zero or more characters.
|
1. The percent sign % wildcard matches any sequence of zero or more characters.
|
||||||
2. The underscore _ wildcard matches any single character.
|
2. The underscore _ wildcard matches any single character.
|
||||||
|
|
||||||
|
@@ -12,6 +12,7 @@ import (
|
|||||||
type RetrieveInput struct {
|
type RetrieveInput struct {
|
||||||
DeviceName string `json:"deviceName"`
|
DeviceName string `json:"deviceName"`
|
||||||
DeviceCategory string `json:"deviceCategory"`
|
DeviceCategory string `json:"deviceCategory"`
|
||||||
|
UserName string `json:"userName"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ListSecret struct {
|
type ListSecret struct {
|
||||||
@@ -46,6 +47,7 @@ func RetrieveSecret(c *gin.Context) {
|
|||||||
s.RoleId = u.RoleId
|
s.RoleId = u.RoleId
|
||||||
s.DeviceName = input.DeviceName
|
s.DeviceName = input.DeviceName
|
||||||
s.DeviceCategory = input.DeviceCategory
|
s.DeviceCategory = input.DeviceCategory
|
||||||
|
s.UserName = input.UserName
|
||||||
|
|
||||||
// Don't apply a role filter if user has admin role
|
// Don't apply a role filter if user has admin role
|
||||||
results, err = models.GetSecrets(&s, u.Admin)
|
results, err = models.GetSecrets(&s, u.Admin)
|
||||||
|
@@ -56,12 +56,20 @@ func GetSecrets(s *Secret, adminRole bool) ([]Secret, error) {
|
|||||||
if adminRole {
|
if adminRole {
|
||||||
// Determine whether to query for a specific device or a category of devices
|
// Determine whether to query for a specific device or a category of devices
|
||||||
// Prefer querying device name than category
|
// Prefer querying device name than category
|
||||||
if s.DeviceName != "" && s.DeviceCategory != "" {
|
if s.DeviceName != "" && s.DeviceCategory != "" && s.UserName != "" {
|
||||||
|
rows, err = db.Queryx("SELECT * FROM secrets WHERE DeviceName LIKE ? AND DeviceCategory LIKE ? AND UserName = ?", s.DeviceName, s.DeviceCategory, s.UserName)
|
||||||
|
} else if s.DeviceName != "" && s.UserName != "" {
|
||||||
|
rows, err = db.Queryx("SELECT * FROM secrets WHERE DeviceName LIKE ? AND UserName = ?", s.DeviceName, s.UserName)
|
||||||
|
} else if s.DeviceCategory != "" && s.UserName != "" {
|
||||||
|
rows, err = db.Queryx("SELECT * FROM secrets WHERE DeviceCategory LIKE ? AND UserName = ?", s.DeviceCategory, s.UserName)
|
||||||
|
} else if s.DeviceName != "" && s.DeviceCategory != "" {
|
||||||
rows, err = db.Queryx("SELECT * FROM secrets WHERE DeviceName LIKE ? AND DeviceCategory LIKE ?", s.DeviceName, s.DeviceCategory)
|
rows, err = db.Queryx("SELECT * FROM secrets WHERE DeviceName LIKE ? AND DeviceCategory LIKE ?", s.DeviceName, s.DeviceCategory)
|
||||||
} else if s.DeviceName != "" {
|
} else if s.DeviceName != "" {
|
||||||
rows, err = db.Queryx("SELECT * FROM secrets WHERE DeviceName LIKE ?", s.DeviceName)
|
rows, err = db.Queryx("SELECT * FROM secrets WHERE DeviceName LIKE ?", s.DeviceName)
|
||||||
} else if s.DeviceCategory != "" {
|
} else if s.DeviceCategory != "" {
|
||||||
rows, err = db.Queryx("SELECT * FROM secrets WHERE DeviceCategory LIKE ?", s.DeviceCategory)
|
rows, err = db.Queryx("SELECT * FROM secrets WHERE DeviceCategory LIKE ?", s.DeviceCategory)
|
||||||
|
} else if s.UserName != "" {
|
||||||
|
rows, err = db.Queryx("SELECT * FROM secrets WHERE UserName LIKE ?", s.UserName)
|
||||||
} else {
|
} else {
|
||||||
rows, err = db.Queryx("SELECT * FROM secrets")
|
rows, err = db.Queryx("SELECT * FROM secrets")
|
||||||
//log.Printf("GetSecret no valid search options specified\n")
|
//log.Printf("GetSecret no valid search options specified\n")
|
||||||
@@ -71,12 +79,20 @@ func GetSecrets(s *Secret, adminRole bool) ([]Secret, error) {
|
|||||||
} else {
|
} else {
|
||||||
// Determine whether to query for a specific device or a category of devices
|
// Determine whether to query for a specific device or a category of devices
|
||||||
// Prefer querying device name than category
|
// Prefer querying device name than category
|
||||||
if s.DeviceName != "" && s.DeviceCategory != "" {
|
if s.DeviceName != "" && s.DeviceCategory != "" && s.UserName != "" {
|
||||||
|
rows, err = db.Queryx("SELECT * FROM secrets WHERE DeviceName LIKE ? AND DeviceCategory LIKE ? AND UserName = ? AND RoleId = ?", s.DeviceName, s.DeviceCategory, s.UserName, s.RoleId)
|
||||||
|
} else if s.DeviceName != "" && s.UserName != "" {
|
||||||
|
rows, err = db.Queryx("SELECT * FROM secrets WHERE DeviceName LIKE ? AND UserName = ? AND RoleId = ?", s.DeviceName, s.UserName, s.RoleId)
|
||||||
|
} else if s.DeviceCategory != "" && s.UserName != "" {
|
||||||
|
rows, err = db.Queryx("SELECT * FROM secrets WHERE DeviceCategory LIKE ? AND UserName = ? AND RoleId = ?", s.DeviceCategory, s.UserName, s.RoleId)
|
||||||
|
} else if s.DeviceName != "" && s.DeviceCategory != "" {
|
||||||
rows, err = db.Queryx("SELECT * FROM secrets WHERE DeviceName LIKE ? AND DeviceCategory LIKE ? AND RoleId = ?", s.DeviceName, s.DeviceCategory, s.RoleId)
|
rows, err = db.Queryx("SELECT * FROM secrets WHERE DeviceName LIKE ? AND DeviceCategory LIKE ? AND RoleId = ?", s.DeviceName, s.DeviceCategory, s.RoleId)
|
||||||
} else if s.DeviceName != "" {
|
} else if s.DeviceName != "" {
|
||||||
rows, err = db.Queryx("SELECT * FROM secrets WHERE DeviceName LIKE ? AND RoleId = ?", s.DeviceName, s.RoleId)
|
rows, err = db.Queryx("SELECT * FROM secrets WHERE DeviceName LIKE ? AND RoleId = ?", s.DeviceName, s.RoleId)
|
||||||
} else if s.DeviceCategory != "" {
|
} else if s.DeviceCategory != "" {
|
||||||
rows, err = db.Queryx("SELECT * FROM secrets WHERE DeviceCategory LIKE ? AND RoleId = ?", s.DeviceCategory, s.RoleId)
|
rows, err = db.Queryx("SELECT * FROM secrets WHERE DeviceCategory LIKE ? AND RoleId = ?", s.DeviceCategory, s.RoleId)
|
||||||
|
} else if s.UserName != "" {
|
||||||
|
rows, err = db.Queryx("SELECT * FROM secrets WHERE UserName LIKE ? AND RoleId = ?", s.UserName, s.RoleId)
|
||||||
} else {
|
} else {
|
||||||
rows, err = db.Queryx("SELECT * FROM secrets WHERE RoleId = ?", s.RoleId)
|
rows, err = db.Queryx("SELECT * FROM secrets WHERE RoleId = ?", s.RoleId)
|
||||||
//log.Printf("GetSecret no valid search options specified\n")
|
//log.Printf("GetSecret no valid search options specified\n")
|
||||||
|
Reference in New Issue
Block a user