diff --git a/app/Http/Controllers/ProjectsController.php b/app/Http/Controllers/ProjectsController.php index 9eec38b..0c3cd88 100644 --- a/app/Http/Controllers/ProjectsController.php +++ b/app/Http/Controllers/ProjectsController.php @@ -22,15 +22,6 @@ class ProjectsController extends Controller return view('projects.index', ['projects' => $projects]); } - public function WpAutoLogin(Request $request) - { - $url = $request->url; - $login = $request->login; - $pwd = $request->pwd; - - return view('projects.wp-auto-login', ['url' => $url, 'login' => $login, 'pwd' => $pwd]); - } - public function add(Request $request) { $dev_db_server = Servers::where([ diff --git a/app/Models/Projects.php b/app/Models/Projects.php index 5e16f6c..f31030a 100644 --- a/app/Models/Projects.php +++ b/app/Models/Projects.php @@ -7,6 +7,16 @@ use Illuminate\Database\Eloquent\Model; class Projects extends Model { + /** + * The attributes that should be cast. + * + * @var array + */ + protected $casts = [ + 'dev_login' => 'array', + 'prod_login' => 'array' + ]; + public function getDevWebIpAttribute() { $value = Servers::find($this->dev_web_server_id); if ($value) diff --git a/app/Providers/TranslationServiceProvider.php b/app/Providers/TranslationServiceProvider.php new file mode 100644 index 0000000..816aaa6 --- /dev/null +++ b/app/Providers/TranslationServiceProvider.php @@ -0,0 +1,77 @@ +collectLocalesStrings() as $locale) { + // * Suported locales + Cache::rememberForever(sprintf('translations.%s', $locale), function () use ($locale) { + $translations = [ + 'php' => $this->phpTranslations($locale), + 'json' => $this->jsonTranslations($locale), + ]; + return $translations; + }); + } + } + + /** + * Gather provided langs checking from files + * + * @return Collection + */ + private function collectLocalesStrings(): Collection + { + return collect(File::allFiles(resource_path('lang/')))->flatMap(function ($file) { + if ($file->getRelativePath()) { + return [$file->getRelativePath() => '']; + } + })->keys(); + } + + /** + * Gather all php translations + * + * @param string $locale + * @return array + */ + private function phpTranslations(string $locale): array + { + $path = resource_path("lang/$locale"); + + return collect(File::allFiles($path))->flatMap(function ($file) use ($locale) { + $translation = $file->getBasename('.php'); + return [$translation => trans($translation, [], $locale)]; + })->all(); + } + + /** + * Gather json translations + * + * @param string $locale + * @return array + */ + private function jsonTranslations(string $locale): array + { + $path = resource_path("lang/$locale.json"); + + if (is_string($path) && is_readable($path)) { + return json_decode(file_get_contents($path), true) ?? []; + } + + return []; + } +} diff --git a/config/app.php b/config/app.php index beb4f78..055b48b 100644 --- a/config/app.php +++ b/config/app.php @@ -174,6 +174,7 @@ return [ // App\Providers\BroadcastServiceProvider::class, App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, + App\Providers\TranslationServiceProvider::class, App\Providers\MailjetSmsServiceProvider::class, ], diff --git a/resources/ts/components/LoginIDComponent.vue b/resources/ts/components/LoginIdComponent.vue similarity index 86% rename from resources/ts/components/LoginIDComponent.vue rename to resources/ts/components/LoginIdComponent.vue index 929fa61..1495bcd 100644 --- a/resources/ts/components/LoginIDComponent.vue +++ b/resources/ts/components/LoginIdComponent.vue @@ -31,14 +31,13 @@ >
- +
+ + + +
diff --git a/resources/ts/components/WPAutoLoginComponent.vue b/resources/ts/components/WPAutoLoginComponent.vue deleted file mode 100644 index d6dc955..0000000 --- a/resources/ts/components/WPAutoLoginComponent.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - diff --git a/resources/ts/index.d.ts b/resources/ts/index.d.ts index a7464d0..e5eac6e 100644 --- a/resources/ts/index.d.ts +++ b/resources/ts/index.d.ts @@ -35,5 +35,14 @@ declare global { interface Window { axios: AxiosStatic; Swal: Function; + __SYSTEM: { + _asset: string; + _locale: string; + _routes: Record; + _translations: { + json: NestedStringList; + php: NestedStringList; + }; + }; } } diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index d68c3c0..3058f36 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -78,7 +78,12 @@
@yield('content')
- + + @stack('scriptsConstants') + @include('modules.scriptConstants') + + + @stack('scripts') diff --git a/resources/views/modules/scriptConstants.blade.php b/resources/views/modules/scriptConstants.blade.php new file mode 100644 index 0000000..924af22 --- /dev/null +++ b/resources/views/modules/scriptConstants.blade.php @@ -0,0 +1,11 @@ + diff --git a/resources/views/projects/form-inputs.blade.php b/resources/views/projects/form-inputs.blade.php index 6364407..f6ba08a 100644 --- a/resources/views/projects/form-inputs.blade.php +++ b/resources/views/projects/form-inputs.blade.php @@ -71,10 +71,26 @@
- + @php + $data = [ + 'name' => 'dev_login', + 'url' => $project->dev_bo_url ?? '', + 'type' => $project->type ?? '', + 'dataList' => old('dev_login', optional($project)->dev_login ?? '[]') + ]; + @endphp +
- + @php + $data = [ + 'name' => 'prod_login', + 'url' => $project->prod_bo_url ?? '', + 'type' => $project->type ?? '', + 'dataList' => old('prod_login', optional($project)->prod_login ?? '[]') + ]; + @endphp +
@endif diff --git a/resources/views/projects/wp-auto-login.blade.php b/resources/views/projects/wp-auto-login.blade.php index 27b7f39..b098f55 100644 --- a/resources/views/projects/wp-auto-login.blade.php +++ b/resources/views/projects/wp-auto-login.blade.php @@ -1,11 +1,19 @@ @extends('layouts.app') @section('content') - + @php + $data = [ + 'name' => 'dev_login', + 'url' => $url, + 'login' => $login, + 'pwd' => $pwd + ]; + @endphp +
-

Connexion en cours...

+

{{ __('Connexion en cours') }}...

diff --git a/routes/web.php b/routes/web.php index b4a4eb5..6a5aad1 100644 --- a/routes/web.php +++ b/routes/web.php @@ -32,7 +32,6 @@ Route::group(['middleware' => ['auth']], function () { Route::post('/projects/{uuid}/force-delete', 'ProjectsController@forceDelete'); Route::get('/projects/add', 'ProjectsController@add'); Route::post('/projects/store', 'ProjectsController@store'); - Route::get('/projects/wp-auto-login', 'ProjectsController@WpAutoLogin')->name('projects.wp-auto-login'); /* SERVERS */ Route::get('/servers', 'ServersController@index')->name('servers.index'); Route::post('/servers/store', 'ServersController@store')->name('servers.store');