Add change-password CLI functionality

This commit is contained in:
Luis Eduardo Jeréz Girón
2024-08-04 23:44:44 -06:00
parent f59f492137
commit 1501fdd8bd
3 changed files with 78 additions and 0 deletions
+73
View File
@@ -0,0 +1,73 @@
package main
import (
"context"
"database/sql"
"errors"
"fmt"
"github.com/eduardolat/pgbackweb/internal/config"
"github.com/eduardolat/pgbackweb/internal/database"
"github.com/eduardolat/pgbackweb/internal/database/dbgen"
"github.com/eduardolat/pgbackweb/internal/util/cryptoutil"
"github.com/google/uuid"
)
func main() {
env := config.GetEnv()
db := database.Connect(env)
defer db.Close()
dbg := dbgen.New(db)
fmt.Println()
fmt.Println()
fmt.Println("PG Back Web - Password Reset")
fmt.Println("---")
fmt.Print("User email: ")
var userID uuid.UUID
for {
var email string
if _, err := fmt.Scanln(&email); err != nil {
panic(err)
}
user, err := dbg.UsersServiceGetUserByEmail(
context.Background(), email,
)
if err != nil && errors.Is(err, sql.ErrNoRows) {
fmt.Print("User not found. Enter new email: ")
continue
}
if err != nil {
panic(err)
}
userID = user.ID
break
}
newPassword := uuid.NewString()
hashedPassword, err := cryptoutil.CreateBcryptHash(newPassword)
if err != nil {
panic(err)
}
err = dbg.UsersServiceChangePassword(
context.Background(), dbgen.UsersServiceChangePasswordParams{
ID: userID,
Password: hashedPassword,
},
)
if err != nil {
panic(err)
}
fmt.Println()
fmt.Println("Password reset successfully")
fmt.Println("New password: ", newPassword)
fmt.Println()
fmt.Println("You can change your password after login")
fmt.Println()
}
+4
View File
@@ -103,6 +103,10 @@ COPY . .
# Build the app
RUN task build
# Copy change-password binary
RUN cp ./dist/change-password /usr/local/bin/change-password && \
chmod 777 /usr/local/bin/change-password
# Run the app
EXPOSE 8085
CMD ["task", "migrate-serve"]
+1
View File
@@ -22,6 +22,7 @@ tasks:
cmds:
- task fmt
- go build -o ./dist/app ./cmd/app/.
- go build -o ./dist/change-password ./cmd/changepw/.
serve:
cmd: ./dist/app