133 lines
4.0 KiB
PHP
133 lines
4.0 KiB
PHP
<?php
|
|
|
|
namespace Lucent;
|
|
|
|
use Illuminate\Routing\Router;
|
|
use Illuminate\Support\Facades\Blade;
|
|
use Illuminate\Support\Facades\View;
|
|
use Illuminate\Support\ServiceProvider;
|
|
use Intervention\Image\ImageManager;
|
|
use Lucent\Account\AuthService;
|
|
use Lucent\Account\AuthServiceLunar;
|
|
use Lucent\Account\AuthServiceLucent;
|
|
use Lucent\Account\UserRepo;
|
|
use Lucent\Account\UserRepoLucent;
|
|
use Lucent\Account\UserRepoLunar;
|
|
use Lucent\Channel\ChannelService;
|
|
use Lucent\Commands\CompileSchemas;
|
|
use Lucent\Commands\GenerateCollectionSchema;
|
|
use Lucent\Commands\LiveLink;
|
|
use Lucent\Commands\RebuildThumbnails;
|
|
use Lucent\Commands\RemoveOrphanEdges;
|
|
use Lucent\Commands\SetupDatabase;
|
|
use Lucent\Commands\Export;
|
|
use Lucent\Commands\Import;
|
|
use Lucent\Commands\Setup;
|
|
use Lucent\Data\ChannelAuth;
|
|
use Lucent\File\FileService;
|
|
use Lucent\Query\DatabaseGraph\DatabaseGraph;
|
|
use Lucent\Query\DatabaseGraph\PgsqlDatabaseGraph;
|
|
|
|
class LucentServiceProvider extends ServiceProvider
|
|
{
|
|
/**
|
|
* Register any application services.
|
|
*/
|
|
public function register(): void
|
|
{
|
|
$this->app->singleton(ChannelService::class, function () {
|
|
return ChannelService::fromConfig();
|
|
});
|
|
|
|
$this->app->bind(ImageManager::class, function () {
|
|
return new ImageManager(["driver" => "imagick"]);
|
|
});
|
|
|
|
$this->app->bind(DatabaseGraph::class, function () {
|
|
return new PgsqlDatabaseGraph();
|
|
});
|
|
|
|
$this->app->bind(UserRepo::class, function ($app) {
|
|
return match ($app->make(ChannelService::class)->channel->auth) {
|
|
ChannelAuth::LUNAR => new UserRepoLunar(),
|
|
ChannelAuth::LUCENT => new UserRepoLucent(),
|
|
};
|
|
});
|
|
|
|
$this->app->bind(AuthService::class, function ($app) {
|
|
return match ($app->make(ChannelService::class)->channel->auth) {
|
|
ChannelAuth::LUNAR => $app->make(AuthServiceLunar::class),
|
|
ChannelAuth::LUCENT => $app->make(AuthServiceLucent::class),
|
|
};
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Bootstrap any package services.
|
|
*/
|
|
public function boot(Router $router): void
|
|
{
|
|
$manifestPath = public_path("vendor/lucent/dist/manifest.json");
|
|
$manifest = null;
|
|
if (file_exists($manifestPath)) {
|
|
$manifest = json_decode(
|
|
file_get_contents(
|
|
public_path("vendor/lucent/dist/manifest.json"),
|
|
),
|
|
true,
|
|
);
|
|
}
|
|
|
|
$router->aliasMiddleware(
|
|
"lucent.auth",
|
|
\Lucent\Http\Middleware\AuthMiddleware::class,
|
|
);
|
|
$router->aliasMiddleware(
|
|
"lucent.guest",
|
|
\Lucent\Http\Middleware\GuestMiddleware::class,
|
|
);
|
|
|
|
$this->loadViewsFrom(__DIR__ . "/../front/views", "lucent");
|
|
$this->loadRoutesFrom(__DIR__ . "/Http/web.php");
|
|
$this->loadRoutesFrom(__DIR__ . "/Http/api.php");
|
|
|
|
if ($this->app->runningInConsole()) {
|
|
$this->commands([
|
|
CompileSchemas::class,
|
|
RebuildThumbnails::class,
|
|
LiveLink::class,
|
|
RemoveOrphanEdges::class,
|
|
SetupDatabase::class,
|
|
GenerateCollectionSchema::class,
|
|
Export::class,
|
|
Import::class,
|
|
Setup::class,
|
|
]);
|
|
}
|
|
|
|
View::share("manifest", $manifest);
|
|
View::share("file", app()->make(FileService::class));
|
|
Blade::anonymousComponentPath(
|
|
__DIR__ . "../front/views/components",
|
|
"lucent",
|
|
);
|
|
|
|
$this->publishes(
|
|
[
|
|
__DIR__ . "/Config/main.php" => config_path("lucent.php"),
|
|
],
|
|
"lucent-config",
|
|
);
|
|
|
|
$this->publishes(
|
|
[
|
|
__DIR__ . "/../front/dist" => public_path("vendor/lucent/dist"),
|
|
__DIR__ . "/../front/public" => public_path(
|
|
"vendor/lucent/public",
|
|
),
|
|
],
|
|
"lucent",
|
|
);
|
|
}
|
|
}
|