mirror of
https://github.com/idanoo/autobrr
synced 2025-07-23 08:49:13 +00:00
Feat: autobrrctl change-password (#9)
* feat(autobrrctl): add method change-password * refactor: store user
This commit is contained in:
parent
07a9583ddf
commit
929231ec35
2 changed files with 46 additions and 6 deletions
|
@ -77,6 +77,35 @@ func main() {
|
||||||
if err := userRepo.Store(user); err != nil {
|
if err := userRepo.Store(user); err != nil {
|
||||||
log.Fatalf("failed to create user: %v", err)
|
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:
|
default:
|
||||||
flag.Usage()
|
flag.Usage()
|
||||||
if cmd != "help" {
|
if cmd != "help" {
|
||||||
|
|
|
@ -35,13 +35,24 @@ func (r *UserRepo) FindByUsername(username string) (*domain.User, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *UserRepo) Store(user 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)
|
var err error
|
||||||
if err != nil {
|
if user.ID != 0 {
|
||||||
log.Error().Stack().Err(err).Msg("error executing query")
|
update := `UPDATE users SET password = ? WHERE username = ?`
|
||||||
return err
|
_, 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
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue