install
This commit is contained in:
64
app/Modules/BaseLocale/BaseLocaleModule.php
Normal file
64
app/Modules/BaseLocale/BaseLocaleModule.php
Normal file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
namespace App\Modules\BaseLocale;
|
||||
|
||||
use App\Modules\Makeable;
|
||||
use App\Modules\ModuleContract;
|
||||
|
||||
class BaseLocaleModule implements ModuleContract
|
||||
{
|
||||
use Makeable;
|
||||
|
||||
/**
|
||||
* Module is enabled
|
||||
*/
|
||||
protected bool $enabled = true;
|
||||
|
||||
/**
|
||||
* Check if is module enabled
|
||||
*/
|
||||
public function isEnabled(): bool
|
||||
{
|
||||
return $this->enabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable module
|
||||
*/
|
||||
public function disable(): void
|
||||
{
|
||||
$this->enabled = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable module
|
||||
*/
|
||||
public function enable(): void
|
||||
{
|
||||
$this->enabled = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if module has a filament resource
|
||||
*/
|
||||
public function hasFilamentResource(): bool
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get module composer requirements
|
||||
*/
|
||||
public function getComposerRequirements(): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get module composer suggestions
|
||||
*/
|
||||
public function getComposerSuggestions(): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
||||
9
app/Modules/BaseLocale/Configs/base-locale-config.php
Normal file
9
app/Modules/BaseLocale/Configs/base-locale-config.php
Normal file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'locales' => [
|
||||
'tk' => 'Türkmen',
|
||||
'en' => 'English',
|
||||
'ru' => 'Русский',
|
||||
],
|
||||
];
|
||||
21
app/Modules/BaseLocale/Controllers/BaseLocaleController.php
Normal file
21
app/Modules/BaseLocale/Controllers/BaseLocaleController.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Modules\BaseLocale\Controllers;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
|
||||
class BaseLocaleController extends Controller
|
||||
{
|
||||
/**
|
||||
* Invoke the controller
|
||||
*/
|
||||
public function index(string $locale): RedirectResponse
|
||||
{
|
||||
if (array_key_exists($locale, baseLocales())) {
|
||||
session()->put('locale', $locale);
|
||||
}
|
||||
|
||||
return safe_back();
|
||||
}
|
||||
}
|
||||
35
app/Modules/BaseLocale/Middleware/SetLocale.php
Normal file
35
app/Modules/BaseLocale/Middleware/SetLocale.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Modules\BaseLocale\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
class SetLocale
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
|
||||
*/
|
||||
public function handle(Request $request, Closure $next): Response
|
||||
{
|
||||
if (Auth::check()) {
|
||||
/** @var \App\Models\User */
|
||||
$user = $request->user();
|
||||
|
||||
if (array_key_exists($user->locale ?? '', baseLocales())) {
|
||||
app()->setLocale($user->locale);
|
||||
}
|
||||
} else {
|
||||
/** @var string */
|
||||
$locale = session('locale') ?: config()->string('app.locale');
|
||||
|
||||
app()->setLocale($locale);
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
8
app/Modules/BaseLocale/Routes/base-locale-routes.php
Normal file
8
app/Modules/BaseLocale/Routes/base-locale-routes.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
use App\Modules\BaseLocale\Controllers\BaseLocaleController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::name('module.base-locale.')->middleware(['web', 'guest'])->group(function () {
|
||||
Route::get('locale/{locale}', [BaseLocaleController::class, 'index'])->name('set-locale');
|
||||
});
|
||||
35
app/Modules/BaseLocale/base-locale-helpers.php
Normal file
35
app/Modules/BaseLocale/base-locale-helpers.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
|
||||
if (! function_exists('baseLocales')) {
|
||||
/**
|
||||
* Application locales
|
||||
*
|
||||
* @return array<string, string>
|
||||
*/
|
||||
function baseLocales(): array
|
||||
{
|
||||
/** @var array<string, string> */
|
||||
$locales = config()->array('module.base-locale.locales');
|
||||
|
||||
return $locales;
|
||||
}
|
||||
}
|
||||
|
||||
if (! function_exists('safe_back')) {
|
||||
/**
|
||||
* Safe back
|
||||
*/
|
||||
function safe_back(string $fallback = '/'): RedirectResponse
|
||||
{
|
||||
$back = url()->previous();
|
||||
|
||||
// Allow only your own domain
|
||||
if (! str_starts_with($back, config()->string('app.url'))) {
|
||||
return redirect($fallback);
|
||||
}
|
||||
|
||||
return redirect()->to($back);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user