27 lines
662 B
Go
27 lines
662 B
Go
package service
|
|
|
|
import (
|
|
"gitea.qpismont.fr/qpismont/trepa/internal/accounts/domain"
|
|
"gitea.qpismont.fr/qpismont/trepa/internal/core"
|
|
)
|
|
|
|
type Service struct {
|
|
repository domain.AccountRepository
|
|
}
|
|
|
|
func NewService(repository domain.AccountRepository) domain.AccountService {
|
|
return &Service{repository: repository}
|
|
}
|
|
|
|
func (s *Service) Login(login domain.AccountLogin) (*domain.Account, *core.HTTPError) {
|
|
account, err := s.repository.FetchOneByUsername(login.Username)
|
|
if err != nil {
|
|
return nil, domain.ErrAccountNotFound
|
|
}
|
|
|
|
if !core.ComparePassword(login.Password, account.Password) {
|
|
return nil, domain.ErrBadPassword
|
|
}
|
|
|
|
return account, nil
|
|
}
|