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']);