48 lines
858 B
Go
48 lines
858 B
Go
package user
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"trankilou.fr/lassistanoque/backend/internal/domain"
|
|
)
|
|
|
|
type Service struct {
|
|
repo domain.UserRepository
|
|
}
|
|
|
|
func NewService(repo domain.UserRepository) *Service {
|
|
return &Service{
|
|
repo,
|
|
}
|
|
}
|
|
|
|
func (s *Service) GetUser(id string) (*domain.User, error) {
|
|
user, err := s.repo.FindUser(id)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if !user.Enabled {
|
|
return nil, fmt.Errorf("unauthorized")
|
|
}
|
|
return user, nil
|
|
}
|
|
|
|
func (s *Service) UpdateUser(updUser *domain.User, fromAdmin bool) (*domain.User, error) {
|
|
user, err := s.repo.FindUser(updUser.ID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if fromAdmin {
|
|
user.Enabled = updUser.Enabled
|
|
}
|
|
user.Email = updUser.Email
|
|
user.Firstname = updUser.Firstname
|
|
user.Lastname = updUser.Lastname
|
|
user.Theme = updUser.Theme
|
|
user.Lang = updUser.Lang
|
|
|
|
return s.repo.UpdateUser(user)
|
|
|
|
}
|