This commit is contained in:
@@ -24,6 +24,12 @@ type Secret struct {
|
|||||||
Secret string `db:"Secret"`
|
Secret string `db:"Secret"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Used for querying all secrets the user has access to
|
||||||
|
type UserSecret struct {
|
||||||
|
Group
|
||||||
|
Secret
|
||||||
|
}
|
||||||
|
|
||||||
const nonceSize = 12
|
const nonceSize = 12
|
||||||
|
|
||||||
func (s *Secret) SaveSecret() (*Secret, error) {
|
func (s *Secret) SaveSecret() (*Secret, error) {
|
||||||
@@ -59,16 +65,16 @@ func SecretsGetAllowedForGroup(s *Secret, userId int) ([]UserSecret, error) {
|
|||||||
var err error
|
var err error
|
||||||
var secretResults []UserSecret
|
var secretResults []UserSecret
|
||||||
|
|
||||||
args := []interface{}{}
|
queryArgs := []interface{}{}
|
||||||
query := `SELECT users.UserId, users.GroupId, permissions.ReadOnly, permissions.SafeId, safes.SafeName,
|
query := `SELECT permissions.ReadOnly, permissions.SafeId, safes.SafeName,
|
||||||
secrets.SecretId, secrets.SafeId, secrets.DeviceName, secrets.DeviceCategory, secrets.UserName AS SecretUser, secrets.Secret
|
secrets.SecretId, secrets.SafeId, secrets.DeviceName, secrets.DeviceCategory, secrets.UserName AS SecretUser, secrets.Secret
|
||||||
FROM users
|
FROM groups
|
||||||
INNER JOIN groups ON users.GroupId = groups.GroupId
|
INNER JOIN users ON users.GroupId = groups.GroupId
|
||||||
INNER JOIN permissions ON groups.GroupId = permissions.GroupId
|
INNER JOIN permissions ON groups.GroupId = permissions.GroupId
|
||||||
INNER JOIN safes on permissions.SafeId = safes.SafeId
|
INNER JOIN safes on permissions.SafeId = safes.SafeId
|
||||||
INNER JOIN secrets on secrets.SafeId = safes.SafeId
|
INNER JOIN secrets on secrets.SafeId = safes.SafeId
|
||||||
WHERE users.UserId = ?`
|
WHERE users.UserId = ?`
|
||||||
args = append(args, userId)
|
queryArgs = append(queryArgs, userId)
|
||||||
|
|
||||||
// Make sure at least one parameter was specified
|
// Make sure at least one parameter was specified
|
||||||
if s.DeviceName == "" && s.DeviceCategory == "" && s.UserName == "" {
|
if s.DeviceName == "" && s.DeviceCategory == "" && s.UserName == "" {
|
||||||
@@ -80,22 +86,22 @@ func SecretsGetAllowedForGroup(s *Secret, userId int) ([]UserSecret, error) {
|
|||||||
// Add any other arguments to the query if they were specified
|
// Add any other arguments to the query if they were specified
|
||||||
if s.DeviceName != "" {
|
if s.DeviceName != "" {
|
||||||
query += " AND DeviceName LIKE ? "
|
query += " AND DeviceName LIKE ? "
|
||||||
args = append(args, s.DeviceName)
|
queryArgs = append(queryArgs, s.DeviceName)
|
||||||
}
|
}
|
||||||
|
|
||||||
if s.DeviceCategory != "" {
|
if s.DeviceCategory != "" {
|
||||||
query += " AND DeviceCategory LIKE ? "
|
query += " AND DeviceCategory LIKE ? "
|
||||||
args = append(args, s.DeviceCategory)
|
queryArgs = append(queryArgs, s.DeviceCategory)
|
||||||
}
|
}
|
||||||
|
|
||||||
if s.UserName != "" {
|
if s.UserName != "" {
|
||||||
query += " AND UserName LIKE ? "
|
query += " AND UserName LIKE ? "
|
||||||
args = append(args, s.UserName)
|
queryArgs = append(queryArgs, s.UserName)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Execute the query
|
// Execute the query
|
||||||
log.Printf("SecretsGetAllowedForGroup query string : '%s'\n%+v\n", query, args)
|
log.Printf("SecretsGetAllowedForGroup query string : '%s'\n%+v\n", query, queryArgs)
|
||||||
rows, err := db.Queryx(query, args...)
|
rows, err := db.Queryx(query, queryArgs...)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("SecretsGetAllowedForGroup error executing sql record : '%s'\n", err)
|
log.Printf("SecretsGetAllowedForGroup error executing sql record : '%s'\n", err)
|
||||||
|
@@ -43,13 +43,6 @@ type UserSafe struct {
|
|||||||
GroupId int `db:"GroupId"`
|
GroupId int `db:"GroupId"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Used for querying all secrets the user has access to
|
|
||||||
type UserSecret struct {
|
|
||||||
User
|
|
||||||
Group
|
|
||||||
Secret
|
|
||||||
}
|
|
||||||
|
|
||||||
func (u *User) SaveUser() (*User, error) {
|
func (u *User) SaveUser() (*User, error) {
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
|
Reference in New Issue
Block a user