@@ -35,14 +35,14 @@ func dbSelect(email string) (*dbRes, error) {
35
35
return & res , nil
36
36
}
37
37
38
- func insertUser (salt []byte , email string , dk []byte , emailToken string , refreshToken string ) error {
39
- stmt , err := db .Prepare ("INSERT INTO auth (email, password, role, salt, emailToken, refreshToken) VALUES (?, ?, 'USR' , ?, ?, ?)" )
38
+ func insertUser (salt []byte , email string , dk []byte , role string , emailToken string , refreshToken string ) error {
39
+ stmt , err := db .Prepare ("INSERT INTO auth (email, password, role, salt, emailToken, refreshToken) VALUES (?, ?, ? , ?, ?, ?)" )
40
40
if err != nil {
41
41
return fmt .Errorf ("prepare INSERT INTO auth for %v statement failed: %v" , email , err )
42
42
}
43
43
defer stmt .Close ()
44
44
45
- res , err := stmt .Exec (email , dk , salt , emailToken , refreshToken )
45
+ res , err := stmt .Exec (email , dk , [] byte ( role ), salt , emailToken , refreshToken )
46
46
return handleErr (res , err , "INSERT INTO auth" , email )
47
47
}
48
48
@@ -181,15 +181,15 @@ func handleErr(res sql.Result, err error, info string, email string) error {
181
181
182
182
///////// Setup
183
183
184
- func addInitialUser (username string , password string ) error {
184
+ func addInitialUserWithRole (username string , password string , role string ) error {
185
185
res , err := dbSelect (username )
186
186
if res == nil || err != nil {
187
187
salt := []byte {0 }
188
188
dk , err := scrypt .Key ([]byte (password ), salt , 16384 , 8 , 1 , 32 )
189
189
if err != nil {
190
190
return err
191
191
}
192
- err = insertUser (salt , username , dk , "emailToken" , "refreshToken" )
192
+ err = insertUser (salt , username , dk , role , "emailToken" , "refreshToken" )
193
193
if err != nil {
194
194
return err
195
195
}
@@ -235,13 +235,22 @@ func setupDB() {
235
235
//add user for development
236
236
users := strings .Split (options .Users , ";" )
237
237
for _ , user := range users {
238
- userpw := strings .Split (user , ":" )
239
- if len (userpw ) == 2 {
240
- err := addInitialUser (userpw [0 ], userpw [1 ])
238
+ userPwRole := strings .Split (user , ":" )
239
+ if len (userPwRole ) == 2 {
240
+ role := "USR"
241
+ err := addInitialUserWithRole (userPwRole [0 ], userPwRole [1 ], role )
241
242
if err == nil {
242
- log .Printf ("insterted user %v" , userpw [0 ])
243
+ log .Printf ("insterted user %v" , userPwRole [0 ])
243
244
} else {
244
- log .Printf ("could not insert %v" , userpw [0 ])
245
+ log .Printf ("could not insert %v" , userPwRole [0 ])
246
+ }
247
+ } else if len (userPwRole ) == 3 {
248
+ role := userPwRole [2 ]
249
+ err := addInitialUserWithRole (userPwRole [0 ], userPwRole [1 ], role )
250
+ if err == nil {
251
+ log .Printf ("insterted user %v" , userPwRole [0 ])
252
+ } else {
253
+ log .Printf ("could not insert %v" , userPwRole [0 ])
245
254
}
246
255
} else {
247
256
log .Printf ("username and password need to be seperated by ':'" )
0 commit comments