27 lines
749 B
Go
27 lines
749 B
Go
package userstore
|
|
|
|
import (
|
|
"git.keks.cloud/kekskurse/miniauth/pkg/utils"
|
|
"golang.org/x/crypto/bcrypt"
|
|
)
|
|
|
|
func (s Store) UserWrite(username, password string) (int64, error) {
|
|
query := "INSERT INTO users (username, password) VALUES (?, ?);"
|
|
log := s.log.With().Str("query", query).Str("username", username).Logger()
|
|
|
|
pwHash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
|
|
if err != nil {
|
|
return 0, utils.WrapError(ErrCantEncryptPassword, err, log)
|
|
}
|
|
|
|
res, err := s.db.Exec(query, username, string(pwHash))
|
|
if err != nil {
|
|
return 0, utils.WrapError(ErrCantExecuteQuery, err, log)
|
|
}
|
|
|
|
id, err := res.LastInsertId()
|
|
if err != nil {
|
|
return 0, utils.WrapError(ErrCantExecuteQuery, err, log)
|
|
}
|
|
return id, nil
|
|
}
|