122 lines
3.2 KiB
PHP
122 lines
3.2 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Modules\Core\Providers;
|
||
|
|
||
|
use Illuminate\Support\Facades\Route;
|
||
|
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
|
||
|
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
|
||
|
|
||
|
class RouteServiceProvider extends ServiceProvider
|
||
|
{
|
||
|
/**
|
||
|
* Define the routes for the application.
|
||
|
*
|
||
|
* @return void
|
||
|
*/
|
||
|
public function map()
|
||
|
{
|
||
|
if (config('app.installed')) {
|
||
|
$this->mapModuleRoutes();
|
||
|
$this->mapThemeRoutes();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Map routes from all enabled modules.
|
||
|
*
|
||
|
* @return void
|
||
|
*/
|
||
|
private function mapModuleRoutes()
|
||
|
{
|
||
|
foreach ($this->app['modules']->allEnabled() as $module) {
|
||
|
$this->groupRoutes("Modules\\{$module->getName()}\\Http\\Controllers", function () use ($module) {
|
||
|
$this->mapAdminRoutes("{$module->getPath()}/Routes/admin.php");
|
||
|
$this->mapPublicRoutes("{$module->getPath()}/Routes/public.php");
|
||
|
$this->mapApiRoutes("{$module->getPath()}/Routes/api.php");
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Map routes from active theme.
|
||
|
*
|
||
|
* @return void
|
||
|
*/
|
||
|
private function mapThemeRoutes()
|
||
|
{
|
||
|
$theme = $this->app['stylist']->get(setting('active_theme'));
|
||
|
|
||
|
$this->groupRoutes("Themes\\{$theme->getName()}\\Http\\Controllers", function () use ($theme) {
|
||
|
$this->mapAdminRoutes("{$theme->getPath()}/routes/admin.php");
|
||
|
$this->mapPublicRoutes("{$theme->getPath()}/routes/public.php");
|
||
|
$this->mapApiRoutes("{$theme->getPath()}/routes/api.php");
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Group routes to common prefix and middleware.
|
||
|
*
|
||
|
* @param string $namespace
|
||
|
* @param \Closure $callback
|
||
|
* @return void
|
||
|
*/
|
||
|
private function groupRoutes($namespace, $callback)
|
||
|
{
|
||
|
Route::group([
|
||
|
'namespace' => $namespace,
|
||
|
'prefix' => LaravelLocalization::setLocale(),
|
||
|
'middleware' => ['localize', 'locale_session_redirect', 'localization_redirect', 'web'],
|
||
|
], function () use ($callback) {
|
||
|
$callback();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Map admin routes.
|
||
|
*
|
||
|
* @return void
|
||
|
*/
|
||
|
private function mapAdminRoutes($path)
|
||
|
{
|
||
|
if (! file_exists($path)) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
Route::group([
|
||
|
'namespace' => 'Admin',
|
||
|
'prefix' => 'admin',
|
||
|
'middleware' => ['admin'],
|
||
|
], function () use ($path) {
|
||
|
require_once $path;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Map public routes.
|
||
|
*
|
||
|
* @param string $path
|
||
|
* @return void
|
||
|
*/
|
||
|
private function mapPublicRoutes($path)
|
||
|
{
|
||
|
if (file_exists($path)) {
|
||
|
require_once $path;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private function mapApiRoutes($path)
|
||
|
{
|
||
|
if (! file_exists($path)) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
Route::group([
|
||
|
'namespace' => 'Api',
|
||
|
'prefix' => 'api',
|
||
|
'middleware' => ['api'],
|
||
|
], function () use ($path) {
|
||
|
require_once $path;
|
||
|
});
|
||
|
}
|
||
|
}
|