feat: +register
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
package user
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
)
|
||||
|
||||
type Service struct {
|
||||
repo Repo
|
||||
}
|
||||
|
||||
func NewService(repo Repo) Service {
|
||||
return Service {
|
||||
repo: repo,
|
||||
}
|
||||
}
|
||||
|
||||
func (s Service) Register(ctx context.Context, email, password string) error {
|
||||
bytes, err := bcrypt.GenerateFromPassword([]byte(password), 14)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err = s.repo.CreateUser(ctx, email, string(bytes)); err != nil {
|
||||
switch {
|
||||
case errors.Is(err, ErrDuplicateKey):
|
||||
return ErrEmailAlreadyExists
|
||||
default:
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// func (s Service) Login(password string) (string, error) {
|
||||
// hash, err := s.repo.
|
||||
// err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
|
||||
// }
|
||||
Reference in New Issue
Block a user