2
0
Fork 0
forked from flashii/eeprom
eeprom-nabucco/src/EEPROMContext.php

76 lines
1.9 KiB
PHP

<?php
namespace EEPROM;
use Index\Data\IDbConnection;
use Syokuhou\IConfig;
use EEPROM\Auth\AuthInfo;
class EEPROMContext {
private IConfig $config;
private DatabaseContext $dbCtx;
private AuthInfo $authInfo;
private Apps\AppsContext $appsCtx;
private Uploads\UploadsContext $uploadsCtx;
private Users\UsersContext $usersCtx;
public function __construct(IConfig $config, IDbConnection $dbConn) {
$this->config = $config;
$this->dbCtx = new DatabaseContext($dbConn);
$this->authInfo = new AuthInfo;
$this->appsCtx = new Apps\AppsContext($dbConn);
$this->uploadsCtx = new Uploads\UploadsContext($config, $dbConn);
$this->usersCtx = new Users\UsersContext($dbConn);
}
public function getConfig(): IConfig {
return $this->config;
}
public function getDatabase(): DatabaseContext {
return $this->dbCtx;
}
public function getAuthInfo(): AuthInfo {
return $this->authInfo;
}
public function getAppsContext(): Apps\AppsContext {
return $this->appsCtx;
}
public function getUploadsContext(): Uploads\UploadsContext {
return $this->uploadsCtx;
}
public function getUsersContext(): Users\UsersContext {
return $this->usersCtx;
}
public function createRouting(bool $isApiDomain): RoutingContext {
$routingCtx = new RoutingContext($this->config->scopeTo('cors'));
if($isApiDomain) {
$routingCtx->register(new Auth\AuthRoutes(
$this->config->scopeTo('auth'),
$this->authInfo,
$this->usersCtx
));
$routingCtx->register(new LandingRoutes($this->dbCtx));
}
$routingCtx->register(new Uploads\UploadsRoutes(
$this->authInfo,
$this->appsCtx,
$this->uploadsCtx,
$isApiDomain
));
return $routingCtx;
}
}