Added setpassword command
This commit is contained in:
parent
2d07f57c1a
commit
47c25207a4
|
@ -0,0 +1,62 @@
|
||||||
|
package admintools
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"git.handmade.network/hmn/hmn/src/auth"
|
||||||
|
"git.handmade.network/hmn/hmn/src/db"
|
||||||
|
"git.handmade.network/hmn/hmn/src/website"
|
||||||
|
"github.com/jackc/pgx/v4"
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
setPasswordCommand := &cobra.Command{
|
||||||
|
Use: "setpassword [username] [new password]",
|
||||||
|
Short: "Replace a user's password",
|
||||||
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
|
if len(args) < 2 {
|
||||||
|
fmt.Printf("You must provide a username and a password.\n\n")
|
||||||
|
cmd.Usage()
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
username := args[0]
|
||||||
|
password := args[1]
|
||||||
|
|
||||||
|
ctx := context.Background()
|
||||||
|
conn := db.NewConnPool(1, 1)
|
||||||
|
defer conn.Close()
|
||||||
|
|
||||||
|
row := conn.QueryRow(ctx, "SELECT id, username FROM auth_user WHERE lower(username) = lower($1)", username)
|
||||||
|
var id int
|
||||||
|
var canonicalUsername string
|
||||||
|
err := row.Scan(&id, &canonicalUsername)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, pgx.ErrNoRows) {
|
||||||
|
fmt.Printf("User '%s' not found\n", username)
|
||||||
|
os.Exit(1)
|
||||||
|
} else {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
hashedPassword, err := auth.HashPassword(password)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = auth.UpdatePassword(ctx, conn, canonicalUsername, hashedPassword)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("Successfully updated password for '%s'\n", canonicalUsername)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
website.WebsiteCommand.AddCommand(setPasswordCommand)
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
_ "git.handmade.network/hmn/hmn/src/admintools"
|
||||||
_ "git.handmade.network/hmn/hmn/src/buildscss"
|
_ "git.handmade.network/hmn/hmn/src/buildscss"
|
||||||
_ "git.handmade.network/hmn/hmn/src/migration"
|
_ "git.handmade.network/hmn/hmn/src/migration"
|
||||||
"git.handmade.network/hmn/hmn/src/website"
|
"git.handmade.network/hmn/hmn/src/website"
|
||||||
|
|
Loading…
Reference in New Issue