mirror of
https://github.com/idanoo/autobrr
synced 2025-07-22 16:29:12 +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 {
|
||||
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" {
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue