Files
ReSendit/internal/user/service.go
2026-03-20 12:33:37 +01:00

56 lines
1.1 KiB
Go

package user
import (
"ResendIt/internal/security"
"errors"
)
var ErrCannotDeleteSelf = errors.New("cannot delete yourself")
type Service struct {
repo *Repository
}
func NewService(r *Repository) *Service {
return &Service{repo: r}
}
// CreateUser creates a new user with the given username, password, and role
func (s *Service) CreateUser(username, password, role string) (*User, error) {
hash, err := security.HashPassword(password)
if err != nil {
return nil, err
}
u := &User{
Username: username,
PasswordHash: hash,
Role: role,
}
if err := s.repo.Create(u); err != nil {
return nil, err
}
return u, nil
}
// GetAllUsers returns all users
func (s *Service) GetAllUsers() ([]User, error) {
return s.repo.GetAll()
}
// DeleteUser deletes a user by ID
func (s *Service) DeleteUser(requesterID, targetID uint) error {
if requesterID == targetID {
return ErrCannotDeleteSelf
}
return s.repo.Delete(targetID)
}
// FindByUsername returns a user by username
func (s *Service) FindByUsername(username string) (*User, error) {
return s.repo.FindByUsername(username)
}