generated from VLADIMIR/template
48 lines
967 B
Go
48 lines
967 B
Go
package users_service
|
|
|
|
import (
|
|
"context"
|
|
"evening_detective_server/internal/modules/password_generator"
|
|
"evening_detective_server/internal/repos/users_repo"
|
|
|
|
"golang.org/x/crypto/bcrypt"
|
|
)
|
|
|
|
type UsersService struct {
|
|
usersRepo *users_repo.UsersRepo
|
|
passwordGenerator password_generator.IPasswordGenerator
|
|
}
|
|
|
|
func NewUsersService(
|
|
usersRepo *users_repo.UsersRepo,
|
|
passwordGenerator password_generator.IPasswordGenerator,
|
|
) *UsersService {
|
|
return &UsersService{
|
|
usersRepo: usersRepo,
|
|
passwordGenerator: passwordGenerator,
|
|
}
|
|
}
|
|
|
|
func (s *UsersService) AddUser(
|
|
ctx context.Context,
|
|
username string,
|
|
email string,
|
|
) error {
|
|
password, err := s.passwordGenerator.Generate()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = s.usersRepo.AddUser(
|
|
ctx,
|
|
username,
|
|
email,
|
|
string(hashedPassword),
|
|
"user",
|
|
)
|
|
return err
|
|
}
|