renommage lassistanoque
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
package password
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"trankilou.fr/lassistanoque/backend/internal/domain"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/auth"
|
||||
)
|
||||
|
||||
type PasswordAuthenticator struct {
|
||||
tokenManager auth.TokenManager
|
||||
userRepository domain.UserRepository
|
||||
}
|
||||
|
||||
func NewPasswordAuthenticator(
|
||||
tokenManager auth.TokenManager,
|
||||
userRepository domain.UserRepository,
|
||||
) *PasswordAuthenticator {
|
||||
return &PasswordAuthenticator{
|
||||
tokenManager,
|
||||
userRepository,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *PasswordAuthenticator) Authenticate(ctx context.Context, creds auth.Credentials) (*auth.Session, error) {
|
||||
|
||||
user, err := s.userRepository.FindUserByEmail(creds.Email)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Unauthorized user %s : %s", creds.Email, err)
|
||||
}
|
||||
|
||||
ok, err := VerifyPassword(creds.Password, user.Password)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("Password don't match")
|
||||
}
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Error verifying password: %s", err)
|
||||
}
|
||||
|
||||
accessToken, expiresAt, err := s.tokenManager.GenerateAccessToken(user)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Unable to generate access token: %s", err)
|
||||
}
|
||||
refreshToken, _, err := s.tokenManager.GenerateRefreshToken(user.ID)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Unable to generate refresh token: %s", err)
|
||||
}
|
||||
|
||||
return &auth.Session{
|
||||
User: user,
|
||||
AccessToken: accessToken,
|
||||
RefreshToken: refreshToken,
|
||||
ExpiresAt: expiresAt,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *PasswordAuthenticator) Register(ctx context.Context, registration auth.Registration) (*auth.Session, error) {
|
||||
|
||||
hashedPassord, err := HashPassword(registration.Password)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
user, err := s.userRepository.CreateUser(&domain.User{
|
||||
Email: registration.Email,
|
||||
Firstname: registration.Firstname,
|
||||
Lastname: registration.Lastname,
|
||||
Password: hashedPassord,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
_ = user
|
||||
return nil, nil
|
||||
}
|
||||
Reference in New Issue
Block a user