trepa/internal/accounts/service/account.go
2025-03-12 21:36:57 +00:00

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
}