Multiple implementations of the same back-end application. The aim is to provide quick, side-by-side comparisons of different technologies (languages, frameworks, libraries) while preserving consistent business logic across all implementations.
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.
 
 
 
 
 
 

57 lines
1.7 KiB

<?php
declare(strict_types=1);
require_once __DIR__ . '/../vendor/autoload.php';
use AutoStore\DiContainer;
use AutoStore\Application\Interfaces\IUserRepository;
use Psr\Log\LoggerInterface;
try {
$diContainer = new DiContainer();
$logger = $diContainer->get(LoggerInterface::class);
$userRepository = $diContainer->get(IUserRepository::class);
$logger->info('Starting default users initialization...');
$requiredUsernames = ['admin', 'user'];
$missingUsers = [];
foreach ($requiredUsernames as $username) {
$user = $userRepository->findByUsername($username);
if ($user === null) {
$missingUsers[] = $username;
}
}
if (empty($missingUsers)) {
$logger->info('Default users already exist. Skipping initialization.');
exit(0);
}
$defaultUsers = [
['username' => 'admin', 'password' => 'admin'],
['username' => 'user', 'password' => 'user']
];
foreach ($defaultUsers as $userData) {
if (in_array($userData['username'], $missingUsers)) {
$user = new \AutoStore\Domain\Entities\User(
uniqid('user_', true),
$userData['username'],
password_hash($userData['password'], PASSWORD_DEFAULT)
);
$userRepository->save($user);
$logger->info("Created default user: {$userData['username']}");
}
}
$logger->info('Default users initialization completed successfully');
exit(0);
} catch (\Exception $e) {
$logger = $logger ?? new \Monolog\Logger('user-init');
$logger->error('Default users initialization failed: ' . $e->getMessage());
exit(1);
}