You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.8 KiB
65 lines
1.8 KiB
package services |
|
|
|
import ( |
|
"context" |
|
|
|
"autostore/internal/application/interfaces" |
|
"autostore/internal/domain/entities" |
|
"autostore/internal/domain/value_objects" |
|
) |
|
|
|
type UserInitializationService struct { |
|
userRepository interfaces.IUserRepository |
|
logger interfaces.ILogger |
|
} |
|
|
|
func NewUserInitializationService(userRepository interfaces.IUserRepository, logger interfaces.ILogger) *UserInitializationService { |
|
return &UserInitializationService{ |
|
userRepository: userRepository, |
|
logger: logger, |
|
} |
|
} |
|
|
|
func (s *UserInitializationService) InitializeDefaultUsers() error { |
|
defaultUsers := []struct { |
|
username string |
|
password string |
|
}{ |
|
{username: "admin", password: "admin"}, |
|
{username: "user", password: "user"}, |
|
} |
|
|
|
for _, userData := range defaultUsers { |
|
existingUser, err := s.userRepository.FindByUsername(context.Background(), userData.username) |
|
if err != nil { |
|
s.logger.Error(context.Background(), "Failed to check if user exists", "error", err, "username", userData.username) |
|
continue |
|
} |
|
|
|
if existingUser != nil { |
|
s.logger.Info(context.Background(), "Default user already exists", "username", userData.username) |
|
continue |
|
} |
|
|
|
userID, err := value_objects.NewRandomUserID() |
|
if err != nil { |
|
s.logger.Error(context.Background(), "Failed to generate user ID", "error", err) |
|
continue |
|
} |
|
|
|
user, err := entities.NewUser(userID, userData.username, userData.password) |
|
if err != nil { |
|
s.logger.Error(context.Background(), "Failed to create user entity", "error", err, "username", userData.username) |
|
continue |
|
} |
|
|
|
if err := s.userRepository.Save(context.Background(), user); err != nil { |
|
s.logger.Error(context.Background(), "Failed to save user", "error", err, "username", userData.username) |
|
continue |
|
} |
|
|
|
s.logger.Info(context.Background(), "Created default user", "username", userData.username) |
|
} |
|
|
|
return nil |
|
}
|
|
|