From e92aa14f0d075274117d84437da5c50c64e35981 Mon Sep 17 00:00:00 2001 From: "iVampireSP.com" Date: Tue, 7 Feb 2023 17:20:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=20=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AuthRequestController.php | 17 +++++++++++++++-- app/Models/User.php | 10 ++++++++++ resources/views/auth/request.blade.php | 17 +++++++++++++++-- routes/api.php | 4 ++++ routes/modules.php | 2 +- routes/public.php | 4 ++++ 6 files changed, 49 insertions(+), 5 deletions(-) rename app/Http/Controllers/{Module => Public}/AuthRequestController.php (69%) diff --git a/app/Http/Controllers/Module/AuthRequestController.php b/app/Http/Controllers/Public/AuthRequestController.php similarity index 69% rename from app/Http/Controllers/Module/AuthRequestController.php rename to app/Http/Controllers/Public/AuthRequestController.php index 7c61e89..359ea20 100644 --- a/app/Http/Controllers/Module/AuthRequestController.php +++ b/app/Http/Controllers/Public/AuthRequestController.php @@ -1,6 +1,6 @@ $request->input('description'), 'token' => $token, - 'module' => $request->user('module')->toArray(), ]; + if ($request->user('module')) { + $data['module'] = $request->user('module')->toArray(); + } + + if ($request->user('application')) { + $data['application'] = $request->user('application')->toArray(); + } + + if ($request->user('sanctum')) { + $data['from_user'] = $request->user('sanctum')->getOnlyPublic([ + 'balance', + ]); + } + Cache::put('auth_request:'.$token, $data, 120); $data['url'] = route('auth_request.show', $token); diff --git a/app/Models/User.php b/app/Models/User.php index e7cdac7..8b1307d 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -17,6 +17,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; +use Illuminate\Support\Arr; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Crypt; use Illuminate\Support\Str; @@ -173,6 +174,15 @@ public function selectPublic(): self|Builder|CachedBuilder return $this->select($this->publics); } + public function getOnlyPublic($excepts = []): array + { + if ($excepts) { + $this->publics = array_diff($this->publics, $excepts); + } + + return Arr::only($this->toArray(), $this->publics); + } + public function prunable(): self|Builder|CachedBuilder { return static::where('deleted_at', '<=', now()->subWeek()); diff --git a/resources/views/auth/request.blade.php b/resources/views/auth/request.blade.php index da50ef3..dddd04d 100644 --- a/resources/views/auth/request.blade.php +++ b/resources/views/auth/request.blade.php @@ -4,7 +4,21 @@ @section('content') -

{{ $data['module']['name'] }} 想要获取你的用户信息。

+

+ + @if (isset($data['module']) && !is_null($data['module'])) + ) + 模块:{{ $data['module']['name'] }} + @endif + @if (isset($data['applications']) && !is_null($data['application'])) + 应用程序:{{ $data['application']['name'] }} + @endif + @if (isset($data['from_user']) && !is_null($data['from_user'])) + 来自用户:{{ $data['from_user']['name'] }} + @endif + + 想要获取你的用户信息。 +

{{ $data['description'] }}

@@ -18,7 +32,6 @@

在继续之前,请先登录注册

- @endauth @endsection diff --git a/routes/api.php b/routes/api.php index e4f21cc..c80878d 100644 --- a/routes/api.php +++ b/routes/api.php @@ -9,6 +9,7 @@ use App\Http\Controllers\Api\TaskController; use App\Http\Controllers\Api\UserController; use App\Http\Controllers\Api\WorkOrderController; +use App\Http\Controllers\Public\AuthRequestController; use Illuminate\Support\Facades\Route; Route::get('/', [IndexController::class, 'index'])->withoutMiddleware('auth:sanctum'); @@ -47,3 +48,6 @@ Route::any('modules/{module}/{path?}', [ModuleController::class, 'call']) ->where('path', '.*'); + +Route::post('auth_request', [AuthRequestController::class, 'store']); +Route::get('auth_request/{token}', [AuthRequestController::class, 'show']); diff --git a/routes/modules.php b/routes/modules.php index 75b8dab..8f8347a 100644 --- a/routes/modules.php +++ b/routes/modules.php @@ -1,6 +1,5 @@ name('real-name.notify'); Route::match(['post', 'get'], 'real_name/process', [RealNameController::class, 'process'])->name('real-name.process'); + +Route::post('auth_request', [AuthRequestController::class, 'store']); +Route::get('auth_request/{token}', [AuthRequestController::class, 'show']);