@@ -10,6 +10,8 @@ import (
1010 "go.mongodb.org/mongo-driver/mongo"
1111 "go.mongodb.org/mongo-driver/mongo/options"
1212 "go.mongodb.org/mongo-driver/mongo/readpref"
13+
14+ infrav1beta1 "github.com/doodlescheduling/k8sdb-controller/api/v1beta1"
1315)
1416
1517const (
@@ -67,7 +69,7 @@ func (m *MongoDBRepository) CreateDatabaseIfNotExists(database string) error {
6769 return nil
6870}
6971
70- func (m * MongoDBRepository ) SetupUser (database string , username string , password string , roles []string ) error {
72+ func (m * MongoDBRepository ) SetupUser (database string , username string , password string , roles []infrav1beta1. Role ) error {
7173 doesUserExist , err := m .doesUserExist (database , username )
7274 if err != nil {
7375 return err
@@ -138,25 +140,30 @@ func (m *MongoDBRepository) getAllUsers(database string, username string) (Users
138140 return users , nil
139141}
140142
141- func (m * MongoDBRepository ) getRoles (database string , roles []string ) []bson.M {
143+ func (m * MongoDBRepository ) getRoles (database string , roles []infrav1beta1. Role ) []bson.M {
142144 // by default, assign readWrite role (backward compatibility)
143- if roles == nil || len (roles ) == 0 {
145+ if len (roles ) == 0 {
144146 return []bson.M {{
145147 "role" : "readWrite" ,
146148 "db" : database ,
147149 }}
148150 }
149151 rs := make ([]bson.M , 0 )
150152 for _ , r := range roles {
153+ db := r .Db
154+ if db == nil {
155+ db = & database
156+ }
157+
151158 rs = append (rs , bson.M {
152- "role" : r ,
153- "db" : database ,
159+ "role" : r . Name ,
160+ "db" : db ,
154161 })
155162 }
156163 return rs
157164}
158165
159- func (m * MongoDBRepository ) createUser (database string , username string , password string , roles []string ) error {
166+ func (m * MongoDBRepository ) createUser (database string , username string , password string , roles []infrav1beta1. Role ) error {
160167 command := & bson.D {primitive.E {Key : "createUser" , Value : username }, primitive.E {Key : "pwd" , Value : password },
161168 primitive.E {Key : "roles" , Value : m .getRoles (database , roles )}}
162169 r := m .runCommand (database , command )
@@ -166,7 +173,7 @@ func (m *MongoDBRepository) createUser(database string, username string, passwor
166173 return nil
167174}
168175
169- func (m * MongoDBRepository ) updateUserPasswordAndRoles (database string , username string , password string , roles []string ) error {
176+ func (m * MongoDBRepository ) updateUserPasswordAndRoles (database string , username string , password string , roles []infrav1beta1. Role ) error {
170177 command := & bson.D {primitive.E {Key : "updateUser" , Value : username }, primitive.E {Key : "pwd" , Value : password },
171178 primitive.E {Key : "roles" , Value : m .getRoles (database , roles )}}
172179 r := m .runCommand (database , command )
0 commit comments