Add projects
This commit is contained in:
49
pkg/application/users/user.go
Normal file
49
pkg/application/users/user.go
Normal file
@@ -0,0 +1,49 @@
|
||||
package users
|
||||
|
||||
import "errors"
|
||||
|
||||
type PasswordHasher interface {
|
||||
HashPassword(password string) string
|
||||
}
|
||||
|
||||
type CreateUser struct {
|
||||
Email string
|
||||
PasswordHash string
|
||||
}
|
||||
|
||||
func NewCreateUser(email string, password string, hasher PasswordHasher) (*CreateUser, error) {
|
||||
if email == "" {
|
||||
return nil, errors.New("Email cannot be empty for user")
|
||||
}
|
||||
if password == "" || len(password) < 8 {
|
||||
return nil, errors.New("password is doesn't fit requirements")
|
||||
}
|
||||
|
||||
return &CreateUser{
|
||||
Email: email,
|
||||
PasswordHash: hasher.HashPassword(password),
|
||||
}, nil
|
||||
}
|
||||
|
||||
type bCryptPasswordHasher struct {
|
||||
}
|
||||
|
||||
func NewBCryptPasswordHasher() PasswordHasher {
|
||||
return &bCryptPasswordHasher{}
|
||||
}
|
||||
|
||||
func (b bCryptPasswordHasher) HashPassword(password string) string {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
type plainTextPasswordHasher struct {
|
||||
}
|
||||
|
||||
func NewPlainTextPasswordHasher() PasswordHasher {
|
||||
return &plainTextPasswordHasher{}
|
||||
}
|
||||
|
||||
func (p plainTextPasswordHasher) HashPassword(password string) string {
|
||||
return password
|
||||
}
|
Reference in New Issue
Block a user