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 } ok, err := core.ComparePassword(login.Password, account.Password) if err != nil { return nil, domain.ErrBadPassword } if !ok { return nil, domain.ErrBadPassword } return account, nil }