Feat: autobrrctl change-password (#9)

* feat(autobrrctl): add method change-password

* refactor: store user
This commit is contained in:
Ludvig Lundgren 2021-08-19 18:37:35 +02:00 committed by GitHub
parent 07a9583ddf
commit 929231ec35
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 46 additions and 6 deletions

View file

@ -77,6 +77,35 @@ func main() {
if err := userRepo.Store(user); err != nil {
log.Fatalf("failed to create user: %v", err)
}
case "change-password":
username := flag.Arg(1)
if username == "" {
flag.Usage()
os.Exit(1)
}
user, err := userRepo.FindByUsername(username)
if err != nil {
log.Fatalf("failed to get user: %v", err)
}
if user == nil {
log.Fatalf("failed to get user: %v", err)
}
password, err := readPassword()
if err != nil {
log.Fatalf("failed to read password: %v", err)
}
hashed, err := argon2id.CreateHash(string(password), argon2id.DefaultParams)
if err != nil {
log.Fatalf("failed to hash password: %v", err)
}
user.Password = hashed
if err := userRepo.Store(*user); err != nil {
log.Fatalf("failed to create user: %v", err)
}
default:
flag.Usage()
if cmd != "help" {

View file

@ -35,13 +35,24 @@ func (r *UserRepo) FindByUsername(username string) (*domain.User, error) {
}
func (r *UserRepo) Store(user domain.User) error {
query := `INSERT INTO users (username, password) VALUES (?, ?)`
_, err := r.db.Exec(query, user.Username, user.Password)
if err != nil {
log.Error().Stack().Err(err).Msg("error executing query")
return err
var err error
if user.ID != 0 {
update := `UPDATE users SET password = ? WHERE username = ?`
_, err = r.db.Exec(update, user.Password, user.Username)
if err != nil {
log.Error().Stack().Err(err).Msg("error executing query")
return err
}
} else {
query := `INSERT INTO users (username, password) VALUES (?, ?)`
_, err = r.db.Exec(query, user.Username, user.Password)
if err != nil {
log.Error().Stack().Err(err).Msg("error executing query")
return err
}
}
return nil
return err
}