addDefinitions([ // Services PasswordHasher::class => DI\create(BcryptPasswordHasher::class), TokenGenerator::class => DI\create(RandomTokenGenerator::class), Clock::class => DI\create(SystemClock::class), // Repositories UserRepository::class => DI\create(PostgresUserRepository::class), SessionRepository::class => DI\create(PostgresSessionRepository::class), // Use cases AuthenticateUser::class => DI\autowire(), CreateSession::class => DI\autowire(), Logout::class => DI\autowire(), // HTTP layer AuthController::class => DI\autowire(), AuthMiddleware::class => DI\autowire(), ]); return $builder->build();