29 lines
718 B
Go
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
|
|
}
|