This repository has been archived on 2025-10-08. You can view files and clone it, but cannot push or open issues or pull requests.
miniauthold/pkg/userstore/users.go
kekskurse dab6e121a2
Some checks failed
ci/woodpecker/push/test Pipeline was successful
ci/woodpecker/push/playwright Pipeline failed
ci/woodpecker/push/deplyoment unknown status
chore: add delete mail and deete user function
2025-03-16 13:57:19 +01:00

56 lines
1.5 KiB
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("func", "UserWrite").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
}
func (s Store) UserExists(username string) (bool, error) {
query := "SELECT COUNT(*) FROM users WHERE username = ?"
log := s.log.With().Str("func", "UserExists").Str("query", query).Str("username", username).Logger()
var count int
err := s.db.QueryRow(query, username).Scan(&count)
if err != nil {
return true, utils.WrapError(ErrCantExecuteQuery, err, log)
}
if count == 0 {
return false, nil
}
return true, nil
}
func (s Store) UserDelete(username string) error {
query := "DELETE FROM users WHERE username = ?"
log := s.log.With().Str("func", "UserExists").Str("query", query).Str("username", username).Logger()
_, err := s.db.Exec(query, username)
if err != nil {
return utils.WrapError(ErrCantExecuteQuery, err, log)
}
return nil
}