Skip to content

Commit 0e35840

Browse files
author
jmccormick2001
committed
add --password to user commands for updating passwords to user specified password
1 parent c008608 commit 0e35840

File tree

5 files changed

+26
-13
lines changed

5 files changed

+26
-13
lines changed

apiserver/clusterservice/clusterimpl.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ func query(dbUser, dbHost, dbPort, database, dbPassword string) bool {
375375
var err error
376376

377377
connString := "sslmode=disable user=" + dbUser + " host=" + dbHost + " port=" + dbPort + " dbname=" + database + " password=" + dbPassword
378-
log.Debugf("connString=%s", connString)
378+
//log.Debugf("connString=%s", connString)
379379

380380
conn, err = sql.Open("postgres", connString)
381381
if err != nil {
@@ -1066,7 +1066,7 @@ func validateBackrestConfig(labels map[string]string) error {
10661066
//check the global configmap here
10671067
_, found := kubeapi.GetConfigMap(apiserver.Clientset, util.GLOBAL_CUSTOM_CONFIGMAP, apiserver.Namespace)
10681068
if !found {
1069-
log.Debugf("%s was not found", util.GLOBAL_CUSTOM_CONFIGMAP )
1069+
log.Debugf("%s was not found", util.GLOBAL_CUSTOM_CONFIGMAP)
10701070
return errors.New(util.GLOBAL_CUSTOM_CONFIGMAP + " global configmap or --custom-config flag not set, one of these is required for enabling pgbackrest")
10711071
}
10721072

apiserver/userservice/userimpl.go

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ func User(request *msgs.UserRequest) msgs.UserResponse {
149149
if err != nil {
150150
log.Error("error in updating password")
151151
}
152-
log.Debug("new password for %s is %s new expiration is %s\n", v.Rolname, newPassword, newExpireDate)
152+
//log.Debug("new password for %s is %s new expiration is %s\n", v.Rolname, newPassword, newExpireDate)
153153
}
154154
}
155155
} else {
@@ -227,7 +227,7 @@ func updatePassword(clusterName string, p connInfo, username, newPassword, passw
227227
//var ts string
228228
var rows *sql.Rows
229229
querystr := "ALTER user " + username + " PASSWORD '" + newPassword + "'"
230-
log.Debug(querystr)
230+
//log.Debug(querystr)
231231
rows, err = conn.Query(querystr)
232232
if err != nil {
233233
log.Debug(err.Error())
@@ -356,7 +356,7 @@ func getPostgresUserInfo(namespace, clusterName string) connInfo {
356356
}
357357

358358
// addUser ...
359-
func addUser(UserDBAccess, namespace, clusterName string, info connInfo, newUser string, ManagedUser bool) error {
359+
func addUser(request *msgs.CreateUserRequest, namespace, clusterName string, info connInfo) error {
360360
var conn *sql.DB
361361
var err error
362362

@@ -368,18 +368,18 @@ func addUser(UserDBAccess, namespace, clusterName string, info connInfo, newUser
368368

369369
var rows *sql.Rows
370370

371-
querystr := "create user " + newUser
371+
querystr := "create user " + request.Name
372372
log.Debug(querystr)
373373
rows, err = conn.Query(querystr)
374374
if err != nil {
375375
log.Error(err.Error())
376376
return err
377377
}
378378

379-
if UserDBAccess != "" {
380-
querystr = "grant all on database " + UserDBAccess + " to " + newUser
379+
if request.UserDBAccess != "" {
380+
querystr = "grant all on database " + request.UserDBAccess + " to " + request.Name
381381
} else {
382-
querystr = "grant all on database userdb to " + newUser
382+
querystr = "grant all on database userdb to " + request.Name
383383
}
384384
log.Debug(querystr)
385385
rows, err = conn.Query(querystr)
@@ -398,8 +398,11 @@ func addUser(UserDBAccess, namespace, clusterName string, info connInfo, newUser
398398
}()
399399

400400
//add a secret if managed
401-
if ManagedUser {
402-
err = util.CreateUserSecret(apiserver.Clientset, clusterName, newUser, info.Password, namespace)
401+
if request.ManagedUser {
402+
if request.Password != "" {
403+
info.Password = request.Password
404+
}
405+
err = util.CreateUserSecret(apiserver.Clientset, clusterName, request.Name, info.Password, namespace)
403406
if err != nil {
404407
log.Error(err.Error())
405408
return err
@@ -494,7 +497,7 @@ func CreateUser(request *msgs.CreateUserRequest) msgs.CreateUserResponse {
494497
for _, c := range clusterList.Items {
495498
info := getPostgresUserInfo(apiserver.Namespace, c.Name)
496499

497-
err = addUser(request.UserDBAccess, apiserver.Namespace, c.Name, info, request.Name, request.ManagedUser)
500+
err = addUser(request, apiserver.Namespace, c.Name, info)
498501
if err != nil {
499502
resp.Status.Code = msgs.Error
500503
resp.Status.Msg = err.Error()
@@ -505,6 +508,9 @@ func CreateUser(request *msgs.CreateUserRequest) msgs.CreateUserResponse {
505508
resp.Results = append(resp.Results, msg)
506509
}
507510
newPassword := util.GeneratePassword(defaultPasswordLength)
511+
if request.Password != "" {
512+
newPassword = request.Password
513+
}
508514
newExpireDate := GeneratePasswordExpireDate(request.PasswordAgeDays)
509515

510516
pgbouncer := c.Spec.UserLabels[util.LABEL_PGBOUNCER] == "true"
@@ -723,3 +729,4 @@ func reconfigurePgpool(clusterName string) error {
723729
}
724730
return err
725731
}
732+

apiservermsgs/usermsgs.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ type UserRequest struct {
2626
Namespace string
2727
PasswordAgeDays int
2828
ChangePasswordForUser string
29+
Password string
2930
DeleteUser string
3031
ValidDays string
3132
UserDBAccess string
@@ -52,6 +53,7 @@ type UserResponse struct {
5253
type CreateUserRequest struct {
5354
Name string
5455
Selector string
56+
Password string
5557
ManagedUser bool
5658
UserDBAccess string
5759
PasswordAgeDays int

pgo/cmd/create.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ func init() {
226226
createPolicyCmd.Flags().StringVarP(&PolicyFile, "in-file", "", "", "The policy file path to use for adding a policy.")
227227

228228
createUserCmd.Flags().StringVarP(&Selector, "selector", "s", "", "The selector to use for cluster filtering.")
229+
createUserCmd.Flags().StringVarP(&Password, "password", "", "", "The password to use for creating a new user which overrides a generated password.")
229230
createUserCmd.Flags().BoolVarP(&ManagedUser, "managed", "", false, "Creates a user with secrets that can be managed by the Operator.")
230231
createUserCmd.Flags().StringVarP(&UserDBAccess, "db", "", "", "Grants the user access to a database.")
231232
createUserCmd.Flags().IntVarP(&PasswordAgeDays, "valid-days", "", 30, "Sets passwords for new users to X days.")

pgo/cmd/user.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ var userCmd = &cobra.Command{
5656
5757
pgo user --selector=name=mycluster --update-passwords
5858
pgo user --expired=7 --selector=name=mycluster
59-
pgo user --change-password=bob --selector=name=mycluster`,
59+
pgo user --change-password=bob --selector=name=mycluster --password=newpass`,
6060
Run: func(cmd *cobra.Command, args []string) {
6161
log.Debug("user called")
6262
userManager()
@@ -71,6 +71,7 @@ func init() {
7171
userCmd.Flags().IntVarP(&PasswordAgeDays, "valid-days", "", 30, "Sets passwords for new users to X days.")
7272
userCmd.Flags().StringVarP(&ChangePasswordForUser, "change-password", "", "", "Updates the password for a user on selective clusters.")
7373
userCmd.Flags().StringVarP(&UserDBAccess, "db", "", "", "Grants the user access to a database.")
74+
userCmd.Flags().StringVarP(&Password, "password", "", "", "Specifies the user password when updating a user password or creating a new user.")
7475
userCmd.Flags().BoolVarP(&UpdatePasswords, "update-passwords", "", false, "Performs password updating on expired passwords.")
7576
userCmd.Flags().BoolVarP(&ManagedUser, "managed", "", false, "Creates a user with secrets that can be managed by the Operator.")
7677

@@ -81,6 +82,7 @@ func userManager() {
8182

8283
request := msgs.UserRequest{}
8384
request.Selector = Selector
85+
request.Password = Password
8486
request.PasswordAgeDays = PasswordAgeDays
8587
request.ChangePasswordForUser = ChangePasswordForUser
8688
request.DeleteUser = DeleteUser
@@ -124,6 +126,7 @@ func createUser(args []string) {
124126
r := new(msgs.CreateUserRequest)
125127
r.Name = args[0]
126128
r.Selector = Selector
129+
r.Password = Password
127130
r.ManagedUser = ManagedUser
128131
r.UserDBAccess = UserDBAccess
129132
r.PasswordAgeDays = PasswordAgeDays

0 commit comments

Comments
 (0)