mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-11-04 04:28:08 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright (c) HashiCorp, Inc.
 | 
						|
// SPDX-License-Identifier: MPL-2.0
 | 
						|
 | 
						|
package mongodb
 | 
						|
 | 
						|
import "go.mongodb.org/mongo-driver/mongo/writeconcern"
 | 
						|
 | 
						|
type createUserCommand struct {
 | 
						|
	Username string        `bson:"createUser"`
 | 
						|
	Password string        `bson:"pwd,omitempty"`
 | 
						|
	Roles    []interface{} `bson:"roles"`
 | 
						|
}
 | 
						|
 | 
						|
type updateUserCommand struct {
 | 
						|
	Username string `bson:"updateUser"`
 | 
						|
	Password string `bson:"pwd"`
 | 
						|
}
 | 
						|
 | 
						|
type dropUserCommand struct {
 | 
						|
	Username     string                     `bson:"dropUser"`
 | 
						|
	WriteConcern *writeconcern.WriteConcern `bson:"writeConcern"`
 | 
						|
}
 | 
						|
 | 
						|
type mongodbRole struct {
 | 
						|
	Role string `json:"role" bson:"role"`
 | 
						|
	DB   string `json:"db"   bson:"db"`
 | 
						|
}
 | 
						|
 | 
						|
type mongodbRoles []mongodbRole
 | 
						|
 | 
						|
type mongoDBStatement struct {
 | 
						|
	DB    string       `json:"db"`
 | 
						|
	Roles mongodbRoles `json:"roles"`
 | 
						|
}
 | 
						|
 | 
						|
// Convert array of role documents like:
 | 
						|
//
 | 
						|
// [ { "role": "readWrite" }, { "role": "readWrite", "db": "test" } ]
 | 
						|
//
 | 
						|
// into a "standard" MongoDB roles array containing both strings and role documents:
 | 
						|
//
 | 
						|
// [ "readWrite", { "role": "readWrite", "db": "test" } ]
 | 
						|
//
 | 
						|
// MongoDB's createUser command accepts the latter.
 | 
						|
func (roles mongodbRoles) toStandardRolesArray() []interface{} {
 | 
						|
	var standardRolesArray []interface{}
 | 
						|
	for _, role := range roles {
 | 
						|
		if role.DB == "" {
 | 
						|
			standardRolesArray = append(standardRolesArray, role.Role)
 | 
						|
		} else {
 | 
						|
			standardRolesArray = append(standardRolesArray, role)
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return standardRolesArray
 | 
						|
}
 |