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 }