Implemented dependency resolver.

This commit is contained in:
flash 2025-01-22 00:21:09 +00:00
parent 77954f6281
commit 740a957e1a
2 changed files with 30 additions and 17 deletions

6
composer.lock generated
View file

@ -174,11 +174,11 @@
},
{
"name": "flashwave/index",
"version": "v0.2501.182241",
"version": "v0.2501.220016",
"source": {
"type": "git",
"url": "https://patchii.net/flash/index.git",
"reference": "cab5f480db65f8a720c1ad0852423708bc415446"
"reference": "94107b7130a95e04c35291bdfcae4daeabc40abd"
},
"require": {
"ext-mbstring": "*",
@ -225,7 +225,7 @@
],
"description": "Composer package for the common library for my projects.",
"homepage": "https://railgun.sh/index",
"time": "2025-01-18T22:41:28+00:00"
"time": "2025-01-22T00:16:30+00:00"
},
{
"name": "guzzlehttp/psr7",

View file

@ -4,10 +4,10 @@ namespace Mince;
use RuntimeException;
use Flashii\{FlashiiClient,FlashiiUrls};
use Flashii\Credentials\MisuzuCredentials;
use Index\CsrfToken;
use Index\{CsrfToken,Dependencies};
use Index\Http\Routing\HttpRouter;
use Index\Templating\TplEnvironment;
use Index\Urls\ArrayUrlRegistry;
use Index\Urls\{ArrayUrlRegistry,UrlRegistry};
require_once __DIR__ . '/../mince.php';
@ -18,22 +18,35 @@ $flashii = new FlashiiClient('Mince', new MisuzuCredentials($authToken), new Fla
$cfg->getString('apii:api', FlashiiUrls::PROD_API_URL)
));
$users = new Users($db);
$deps = new Dependencies;
$deps->register($db);
$deps->register(AccountLinks::class);
$deps->register(ArrayUrlRegistry::class);
$deps->register(Authorisations::class);
$deps->register(Capes::class);
$deps->register(Servers::class);
$deps->register(Skins::class);
$deps->register(new TplEnvironment(MCR_DIR_TPL, ['Mince'], debug: MCR_DEBUG));
$deps->register(Users::class);
$deps->register(Verifications::class);
$users = $deps->resolve(Users::class);
try {
$authInfo = $flashii->v1()->me();
$deps->register($authInfo);
$users->syncApiUser($authInfo);
$userInfo = $users->getUser($authInfo->getId());
} catch(RuntimeException $ex) {
$authInfo = $sUserInfo = null;
}
$csrfp = new CsrfToken(
$deps->register($csrfp = new CsrfToken(
$cfg->getString('csrfp:secret', 'wowof'),
$authInfo === null ? $_SERVER['REMOTE_ADDR'] : $authToken
);
));
$templating = new TplEnvironment(MCR_DIR_TPL, ['Mince'], debug: MCR_DEBUG);
$templating = $deps->resolve(TplEnvironment::class);
$templating->addGlobal('globals', [
'title' => 'Flashii Minecraft Servers',
'is_authed' => $userInfo !== null,
@ -41,29 +54,29 @@ $templating->addGlobal('globals', [
'csrfp' => $csrfp->createToken(),
]);
$accountLinks = new AccountLinks($db);
$authorisations = new Authorisations($db);
$accountLinks = $deps->resolve(AccountLinks::class);
$authorisations = $deps->resolve(Authorisations::class);
$authorisations->prune();
$verifications = new Verifications($db);
$verifications = $deps->resolve(Verifications::class);
$verifications->prune();
$urls = new ArrayUrlRegistry;
$urls = $deps->resolve(UrlRegistry::class);
$templating->addFunction('url', $urls->format(...));
$router = new HttpRouter(errorHandler: new RouterErrorHandler($templating));
$router->use('/', function($response, $request) { $response->setPoweredBy('Mince'); });
$router->register(new RpcRoutes($users, $accountLinks, $authorisations, $verifications, $cfg->getString('rpc:secret'), $cfg->getString('urls:clients')));
$router->register($deps->construct(RpcRoutes::class, secretKey: $cfg->getString('rpc:secret'), clientsUrl: $cfg->getString('urls:clients')));
$homeRoutes = new HomeRoutes($templating, $urls, new Servers($db), $authInfo, $cfg->getString('site:login'));
$homeRoutes = $deps->construct(HomeRoutes::class, loginUrl: $cfg->getString('site:login'));
$router->register($homeRoutes);
$urls->register($homeRoutes);
$clientRoutes = new ClientsRoutes($templating, $urls, $accountLinks, $authorisations, $verifications, $csrfp, $authInfo);
$clientRoutes = $deps->construct(ClientsRoutes::class);
$router->register($clientRoutes);
$urls->register($clientRoutes);
$skinsRoutes = new SkinsRoutes($templating, $urls, $accountLinks, new Skins($db), new Capes($db), $csrfp, $authInfo, $cfg->getString('urls:skins_base'));
$skinsRoutes = $deps->construct(SkinsRoutes::class, baseUrl: $cfg->getString('urls:skins_base'));
$router->register($skinsRoutes);
$urls->register($skinsRoutes);