pye/storage/user.go

29 lines
588 B
Go
Raw Normal View History

2024-10-12 20:41:30 +03:00
package storage
2024-10-11 11:38:08 +03:00
import (
2024-10-12 20:41:30 +03:00
"log/slog"
2024-10-11 11:38:08 +03:00
"github.com/google/uuid"
"golang.org/x/crypto/bcrypt"
)
type User struct {
2024-10-12 09:55:58 +03:00
Uuid uuid.UUID
Email string
Hash []byte // bcrypt hash of password
2024-10-11 11:38:08 +03:00
}
func (u User) PasswordFits(password string) bool {
2024-10-12 09:55:58 +03:00
err := bcrypt.CompareHashAndPassword(u.Hash, []byte(password))
2024-10-11 11:38:08 +03:00
return err == nil
}
func NewUser(email, password string) (User, error) {
hash, err := bcrypt.GenerateFromPassword([]byte(password), 14)
if err != nil {
2024-10-12 20:41:30 +03:00
slog.Error("error creating a new user", "error", err)
2024-10-11 11:38:08 +03:00
return User{}, err
}
return User{uuid.New(), email, hash}, nil
2024-10-12 20:41:30 +03:00
}