Files
RenewCMS/internal/infrastructure/useCases/AuthenticateUser.go
T

29 lines
718 B
Go

package useCases
import (
"RenewCMS/internal/domain/hash"
"RenewCMS/internal/domain/user"
)
type AuthenticateUserUseCase struct {
userRepository user.Repository
hasher hash.Hasher
}
func NewAuthenticateUserUseCase(userRepository user.Repository, hasher hash.Hasher) *AuthenticateUserUseCase {
return &AuthenticateUserUseCase{userRepository, hasher}
}
func (a *AuthenticateUserUseCase) Authenticate(username string, password string) (user.User, error) {
dbUser, err := a.userRepository.GetByUsername(username)
if err != nil {
return user.User{}, err
}
if err := a.hasher.Compare(dbUser.Password, password); err != nil {
return user.User{}, user.ErrInvalidCredentials
}
return dbUser, nil
}