shell bypass 403
<?php
namespace JoeDixon\Translation;
use Illuminate\Filesystem\Filesystem;
use Illuminate\Support\ServiceProvider;
use JoeDixon\Translation\Console\Commands\AddLanguageCommand;
use JoeDixon\Translation\Console\Commands\AddTranslationKeyCommand;
use JoeDixon\Translation\Console\Commands\ListLanguagesCommand;
use JoeDixon\Translation\Console\Commands\ListMissingTranslationKeys;
use JoeDixon\Translation\Console\Commands\SynchroniseMissingTranslationKeys;
use JoeDixon\Translation\Console\Commands\SynchroniseTranslationsCommand;
use JoeDixon\Translation\Drivers\Translation;
class TranslationServiceProvider extends ServiceProvider
{
/**
* Bootstrap the package services.
*
* @return void
*/
public function boot()
{
$this->loadViews();
$this->registerRoutes();
$this->publishConfiguration();
$this->publishAssets();
$this->loadMigrations();
$this->loadTranslations();
$this->registerHelpers();
}
/**
* Register package bindings in the container.
*
* @return void
*/
public function register()
{
$this->mergeConfiguration();
$this->registerCommands();
$this->registerContainerBindings();
}
/**
* Load and publish package views.
*
* @return void
*/
private function loadViews()
{
$this->loadViewsFrom(__DIR__.'/../resources/views', 'translation');
$this->publishes([
__DIR__.'/../resources/views' => resource_path('views/vendor/translation'),
]);
}
/**
* Register package routes.
*
* @return void
*/
private function registerRoutes()
{
$this->loadRoutesFrom(__DIR__.'/../routes/web.php');
}
/**
* Publish package configuration.
*
* @return void
*/
private function publishConfiguration()
{
$this->publishes([
__DIR__.'/../config/translation.php' => config_path('translation.php'),
], 'config');
}
/**
* Merge package configuration.
*
* @return void
*/
private function mergeConfiguration()
{
$this->mergeConfigFrom(__DIR__.'/../config/translation.php', 'translation');
}
/**
* Publish package assets.
*
* @return void
*/
private function publishAssets()
{
$this->publishes([
__DIR__.'/../public/assets' => public_path('vendor/translation'),
], 'assets');
}
/**
* Load package migrations.
*
* @return void
*/
private function loadMigrations()
{
$this->loadMigrationsFrom(__DIR__.'/../database/migrations');
}
/**
* Load package translations.
*
* @return void
*/
private function loadTranslations()
{
$this->loadTranslationsFrom(__DIR__.'/../resources/lang', 'translation');
$this->publishes([
__DIR__.'/../resources/lang' => resource_path('lang/vendor/translation'),
]);
}
/**
* Register package commands.
*
* @return void
*/
private function registerCommands()
{
if ($this->app->runningInConsole()) {
$this->commands([
AddLanguageCommand::class,
AddTranslationKeyCommand::class,
ListLanguagesCommand::class,
ListMissingTranslationKeys::class,
SynchroniseMissingTranslationKeys::class,
SynchroniseTranslationsCommand::class,
]);
}
}
/**
* Register package helper functions.
*
* @return void
*/
private function registerHelpers()
{
require __DIR__.'/../resources/helpers.php';
}
/**
* Register package bindings in the container.
*
* @return void
*/
private function registerContainerBindings()
{
$this->app->singleton(Scanner::class, function () {
$config = $this->app['config']['translation'];
return new Scanner(new Filesystem, $config['scan_paths'], $config['translation_methods']);
});
$this->app->singleton(Translation::class, function ($app) {
return (new TranslationManager($app, $app['config']['translation'], $app->make(Scanner::class)))->resolve();
});
}
}