Introduce filament

This commit is contained in:
xiaomlove
2022-06-27 01:39:01 +08:00
parent aae45835ee
commit 1aca20070d
92 changed files with 3535 additions and 83 deletions
+1
View File
@@ -58,6 +58,7 @@ class Kernel extends HttpKernel
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'auth.nexus' => \App\Http\Middleware\NexusAuth::class,
'auth.filament' => \Filament\Http\Middleware\Authenticate::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
+6 -1
View File
@@ -12,6 +12,11 @@ class EncryptCookies extends Middleware
* @var array
*/
protected $except = [
//
'c_secure_pass',
'c_secure_uid',
'c_secure_login',
'c_secure_ssl',
'c_secure_tracker_ssl',
];
}
+19
View File
@@ -0,0 +1,19 @@
<?php
namespace App\Http\Middleware;
use Filament\Http\Middleware\Authenticate;
class Filament extends Authenticate
{
/**
* Get the path the user should be redirected to when they are not authenticated.
*
* @param \Illuminate\Http\Request $request
* @return string|null
*/
protected function redirectTo($request): string
{
return getSchemeAndHttpHost() . '/login.php';
}
}
+11 -7
View File
@@ -4,6 +4,7 @@ namespace App\Http\Middleware;
use Carbon\Carbon;
use Closure;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\App;
@@ -26,15 +27,18 @@ class Locale
public function handle(Request $request, Closure $next)
{
$user = $request->user();
$language = $user->language;
$locale = self::$languageMaps[$language->site_lang_folder] ?? 'en';
do_log("user: {$user->id}, language: {$language->id}, set locale: $locale");
App::setLocale($locale);
Carbon::setLocale($locale);
if ($user) {
$language = $user->language;
$locale = self::$languageMaps[$language->site_lang_folder] ?? 'en';
do_log("user: {$user->id}, language: {$language->id}, set locale: $locale");
App::setLocale($locale);
Carbon::setLocale($locale);
}
/** @var Response $response */
$response = $next($request);
$response->header('Request-Id', nexus()->getRequestId())->header('Running-In-Octane', RUNNING_IN_OCTANE ? 1 : 0);
if ($response instanceof Response || $response instanceof JsonResponse) {
$response->header('Request-Id', nexus()->getRequestId())->header('Running-In-Octane', RUNNING_IN_OCTANE ? 1 : 0);
}
return $response;
}
+2 -48
View File
@@ -26,9 +26,9 @@ class ExamResource extends JsonResource
'duration' => $this->duration ?: '',
'duration_text' => $this->duration_text,
'filters' => $this->normalizeFilters($this->resource),
'filters_formatted' => $this->formatFilters($this->resource),
'filters_formatted' => $this->filterFormatted,
'indexes' => $this->indexes,
'indexes_formatted' => $this->formatIndexes($this->resource),
'indexes_formatted' => $this->indexFormatted,
'status' => $this->status,
'status_text' => $this->statusText,
'is_discovered' => $this->is_discovered,
@@ -48,50 +48,4 @@ class ExamResource extends JsonResource
return $filters;
}
private function formatFilters(Exam $exam)
{
$currentFilters = $exam->filters;
$arr = [];
$filter = Exam::FILTER_USER_CLASS;
if (!empty($currentFilters->{$filter})) {
$classes = collect(User::$classes)->only($currentFilters->{$filter});
$arr[] = sprintf('%s: %s', Exam::$filters[$filter]['name'], $classes->pluck('text')->implode(', '));
}
$filter = Exam::FILTER_USER_REGISTER_TIME_RANGE;
if (!empty($currentFilters->{$filter})) {
$range = $currentFilters->{$filter};
$arr[] = sprintf(
"%s: \n%s ~ %s",
Exam::$filters[$filter]['name'],
$range[0] ? Carbon::parse($range[0])->toDateTimeString() : '-',
$range[1] ? Carbon::parse($range[1])->toDateTimeString() : '-'
);
}
$filter = Exam::FILTER_USER_DONATE;
if (!empty($currentFilters->{$filter})) {
$donateStatus = $classes = collect(User::$donateStatus)->only($currentFilters->{$filter});
$arr[] = sprintf('%s: %s', Exam::$filters[$filter]['name'], $donateStatus->pluck('text')->implode(', '));
}
return implode("\n", $arr);
}
private function formatIndexes(Exam $exam)
{
$indexes = $exam->indexes;
$arr = [];
foreach ($indexes as $index) {
if (isset($index['checked']) && $index['checked']) {
$arr[] = sprintf(
'%s: %s %s',
Exam::$indexes[$index['index']]['name'] ?? '',
$index['require_value'],
Exam::$indexes[$index['index']]['unit'] ?? ''
);
}
}
return implode("\n", $arr);
}
}