改进 拿的 Token 具有全部权限
This commit is contained in:
parent
777e028aea
commit
3f3d6efe61
@ -6,15 +6,14 @@
|
|||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Notifications\User\UserNotification;
|
use App\Notifications\User\UserNotification;
|
||||||
use App\Rules\Domain;
|
|
||||||
use function back;
|
|
||||||
use function config;
|
|
||||||
use Illuminate\Http\RedirectResponse;
|
use Illuminate\Http\RedirectResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Carbon;
|
use Illuminate\Support\Carbon;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
use Illuminate\View\View;
|
use Illuminate\View\View;
|
||||||
|
use function back;
|
||||||
|
use function config;
|
||||||
use function redirect;
|
use function redirect;
|
||||||
use function session;
|
use function session;
|
||||||
use function view;
|
use function view;
|
||||||
@ -34,13 +33,13 @@ public function index(Request $request): View|RedirectResponse
|
|||||||
$dashboardHost = parse_url(config('settings.dashboard.base_url'), PHP_URL_HOST);
|
$dashboardHost = parse_url(config('settings.dashboard.base_url'), PHP_URL_HOST);
|
||||||
|
|
||||||
if ($callbackHost === $dashboardHost) {
|
if ($callbackHost === $dashboardHost) {
|
||||||
if (! $request->user('web')->isRealNamed()) {
|
if (!$request->user('web')->isRealNamed()) {
|
||||||
return redirect()->route('real_name.create')->with('status', '重定向已被打断,需要先实人认证。');
|
return redirect()->route('real_name.create')->with('status', '重定向已被打断,需要先实人认证。');
|
||||||
}
|
}
|
||||||
|
|
||||||
$token = $request->user()->createToken('Dashboard')->plainTextToken;
|
$token = $request->user()->createToken('Dashboard')->plainTextToken;
|
||||||
|
|
||||||
return redirect($callback.'?token='.$token);
|
return redirect($callback . '?token=' . $token);
|
||||||
}
|
}
|
||||||
|
|
||||||
session(['referer.domain' => parse_url($request->header('referer'), PHP_URL_HOST)]);
|
session(['referer.domain' => parse_url($request->header('referer'), PHP_URL_HOST)]);
|
||||||
@ -85,18 +84,10 @@ public function newToken(Request $request): RedirectResponse
|
|||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'name' => 'required|string|max:255',
|
'name' => 'required|string|max:255',
|
||||||
'domain' => ['nullable', 'string', 'max:255', new Domain],
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$abilities = [];
|
|
||||||
|
|
||||||
if ($request->has('domain')) {
|
|
||||||
$abilities = ['domain-access:'.$request->input('domain')];
|
|
||||||
}
|
|
||||||
|
|
||||||
$token = $request->user()->createToken(
|
$token = $request->user()->createToken(
|
||||||
$request->input('name'),
|
$request->input('name'),
|
||||||
$abilities
|
|
||||||
);
|
);
|
||||||
|
|
||||||
return back()->with('token', $token->plainTextToken);
|
return back()->with('token', $token->plainTextToken);
|
||||||
@ -130,7 +121,7 @@ public function exitSudo(): RedirectResponse
|
|||||||
|
|
||||||
public function showAuthRequest($token): View|RedirectResponse
|
public function showAuthRequest($token): View|RedirectResponse
|
||||||
{
|
{
|
||||||
$data = Cache::get('auth_request:'.$token);
|
$data = Cache::get('auth_request:' . $token);
|
||||||
|
|
||||||
if (empty($data)) {
|
if (empty($data)) {
|
||||||
return redirect()->route('index')->with('error', '登录请求的 Token 不存在或已过期。');
|
return redirect()->route('index')->with('error', '登录请求的 Token 不存在或已过期。');
|
||||||
@ -154,7 +145,7 @@ public function storeAuthRequest(Request $request): RedirectResponse
|
|||||||
'token' => 'required|string|max:128',
|
'token' => 'required|string|max:128',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$data = Cache::get('auth_request:'.$request->input('token'));
|
$data = Cache::get('auth_request:' . $request->input('token'));
|
||||||
|
|
||||||
if (empty($data)) {
|
if (empty($data)) {
|
||||||
return back()->with('error', '登录请求的 Token 不存在或已过期。');
|
return back()->with('error', '登录请求的 Token 不存在或已过期。');
|
||||||
@ -178,7 +169,7 @@ public function storeAuthRequest(Request $request): RedirectResponse
|
|||||||
$data['token'] = $user->createToken($data['meta']['description'] ?? Carbon::now()->toDateString(), $abilities)->plainTextToken;
|
$data['token'] = $user->createToken($data['meta']['description'] ?? Carbon::now()->toDateString(), $abilities)->plainTextToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
Cache::put('auth_request:'.$request->input('token'), $data, 60);
|
Cache::put('auth_request:' . $request->input('token'), $data, 60);
|
||||||
|
|
||||||
return redirect()->route('index')->with('success', '登录请求已确认。');
|
return redirect()->route('index')->with('success', '登录请求已确认。');
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
@php
|
@php
|
||||||
session()->forget('callback');
|
session()->forget('callback');
|
||||||
session()->forget('referer.domain');
|
// session()->forget('referer.domain');
|
||||||
@endphp
|
@endphp
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@ -40,9 +40,9 @@
|
|||||||
<input type="hidden" name="name" placeholder="Token 名字"
|
<input type="hidden" name="name" placeholder="Token 名字"
|
||||||
value="自动登录 - {{ date('Y-m-d H:i:s') }}"/>
|
value="自动登录 - {{ date('Y-m-d H:i:s') }}"/>
|
||||||
|
|
||||||
@if($referer_host)
|
{{-- @if($referer_host)--}}
|
||||||
<input type="hidden" name="domain" value="{{ $referer_host }}"/>
|
{{-- <input type="hidden" name="domain" value="{{ $referer_host }}"/>--}}
|
||||||
@endif
|
{{-- @endif--}}
|
||||||
|
|
||||||
<button type="submit" class="btn btn-primary">授权</button>
|
<button type="submit" class="btn btn-primary">授权</button>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user