Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[STORY-642] new api endpoint to handle password reset #1071

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

### To be Released

* feat(database/users): use API DatabaseUserResetPassword method for resetting password

### 1.32.0

* feat(domains): `domains-add` now supports `--no-letsencrypt` flag to completely disable Let's Encrypt certificat generation ([PR#1058](https://github.com/Scalingo/cli/pull/1058))
Expand Down
2 changes: 1 addition & 1 deletion cmd/databases.go
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ Only available on ` + fmt.Sprintf("%s", dbUsers.SupportedAddons),

username := c.Args().First()

err := dbUsers.UpdateUser(c.Context, currentApp, addonName, username)
err := dbUsers.UpdateUserPassword(c.Context, currentApp, addonName, username)
if err != nil {
errorQuit(c.Context, err)
}
Expand Down
37 changes: 21 additions & 16 deletions db/users/update.go → db/users/update_password.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,9 @@ import (
"github.com/Scalingo/cli/io"
"github.com/Scalingo/go-scalingo/v7"
"github.com/Scalingo/go-utils/errors/v2"
"github.com/Scalingo/gopassword"
)

func UpdateUser(ctx context.Context, app, addonUUID, username string) error {
func UpdateUserPassword(ctx context.Context, app, addonUUID, username string) error {
isSupported, err := doesDatabaseHandleUserManagement(ctx, app, addonUUID)
if err != nil {
return errors.Wrap(ctx, err, "get user management information")
Expand Down Expand Up @@ -60,25 +59,31 @@ func UpdateUser(ctx context.Context, app, addonUUID, username string) error {
isPasswordGenerated := false
if password == "" {
isPasswordGenerated = true
password = gopassword.Generate(64)
confirmedPassword = password
}

userUpdateParam := scalingo.DatabaseUpdateUserParam{
DatabaseID: addonUUID,
Password: password,
PasswordConfirmation: confirmedPassword,
}
databaseUsers, err := c.DatabaseUpdateUser(ctx, app, addonUUID, username, userUpdateParam)
if err != nil {
return errors.Wrap(ctx, err, "update password of the given database user")
}
var databaseUser scalingo.DatabaseUser

if isPasswordGenerated {
fmt.Printf("User \"%s\" updated with password \"%s\".\n", databaseUsers.Name, password)
// We have two different API calls here to avoid breaking backwards compatibility of the CLI
if !isPasswordGenerated {
userUpdateParam := scalingo.DatabaseUpdateUserParam{
DatabaseID: addonUUID,
Password: password,
PasswordConfirmation: confirmedPassword,
}
databaseUser, err = c.DatabaseUpdateUser(ctx, app, addonUUID, username, userUpdateParam)
if err != nil {
return errors.Wrap(ctx, err, "update password of the given database user")
}

fmt.Printf("User \"%s\" password updated.\n", databaseUser.Name)
return nil
}

fmt.Printf("User \"%s\" password updated.\n", databaseUsers.Name)
databaseUser, err = c.DatabaseUserResetPassword(ctx, app, addonUUID, username)
if err != nil {
return errors.Wrap(ctx, err, "reset the password of the given database user")
}

fmt.Printf("User \"%s\" updated with password \"%s\".\n", databaseUser.Name, databaseUser.Password)
return nil
}
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ go 1.21

require (
github.com/AlecAivazis/survey/v2 v2.3.7
github.com/Scalingo/go-scalingo/v7 v7.0.0
github.com/Scalingo/go-scalingo/v7 v7.0.1
github.com/Scalingo/go-utils/errors/v2 v2.4.0
github.com/Scalingo/go-utils/logger v1.2.0
github.com/Scalingo/go-utils/retry v1.1.1
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63n
github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w=
github.com/ProtonMail/go-crypto v1.1.0-alpha.3-proton h1:0RXAi0EJFs81j+MMsqvHNuAUGWzeVfCO9LnHAfoQ8NA=
github.com/ProtonMail/go-crypto v1.1.0-alpha.3-proton/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
github.com/Scalingo/go-scalingo/v7 v7.0.0 h1:y89FfQgjl8Foxm4+hXfCyGrpmtMnsB8G6kKuijXAUKI=
github.com/Scalingo/go-scalingo/v7 v7.0.0/go.mod h1:UlRkN2cRyagSqAanCZWBgZDWsAQ/dk7xBdN51Fv6evM=
github.com/Scalingo/go-scalingo/v7 v7.0.1 h1:Bpyy30AanC43qze6MzR9psf8v3V/MA+nExPVyOxAzoY=
github.com/Scalingo/go-scalingo/v7 v7.0.1/go.mod h1:nraQDEEaoQwxKMmGux+eTXVeZNXWExS/kK7VkOvYGGw=
github.com/Scalingo/go-utils/errors/v2 v2.4.0 h1:vKG0Js3kzWG7+03LEvH7j8fw+picEcRhbjMm3i9Xbb8=
github.com/Scalingo/go-utils/errors/v2 v2.4.0/go.mod h1:WU6Kzi19AlZyUfoxFkdvEeYkIa0W0f172hKPqkOeIpU=
github.com/Scalingo/go-utils/logger v1.2.0 h1:E3jtaoRxpIsFcZu/jsvWew8ttUAwKUYQufdPqGYp7EU=
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion vendor/modules.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ github.com/ProtonMail/go-crypto/openpgp/s2k
github.com/ProtonMail/go-crypto/openpgp/symmetric
github.com/ProtonMail/go-crypto/openpgp/x25519
github.com/ProtonMail/go-crypto/openpgp/x448
# github.com/Scalingo/go-scalingo/v7 v7.0.0
# github.com/Scalingo/go-scalingo/v7 v7.0.1
## explicit; go 1.20
github.com/Scalingo/go-scalingo/v7
github.com/Scalingo/go-scalingo/v7/billing
Expand Down