增加 API Token

This commit is contained in:
iVampireSP.com 2023-05-14 18:26:27 +08:00
parent 8459e3ac64
commit 694fb378f0
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132
3 changed files with 73 additions and 3 deletions

View File

@ -16,10 +16,10 @@ DB_USERNAME=root
DB_PASSWORD= DB_PASSWORD=
BROADCAST_DRIVER=log BROADCAST_DRIVER=log
CACHE_DRIVER=file CACHE_DRIVER=redis
FILESYSTEM_DISK=local FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync QUEUE_CONNECTION=redis
SESSION_DRIVER=file SESSION_DRIVER=redis
SESSION_LIFETIME=120 SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1 MEMCACHED_HOST=127.0.0.1
@ -56,3 +56,10 @@ VITE_PUSHER_HOST="${PUSHER_HOST}"
VITE_PUSHER_PORT="${PUSHER_PORT}" VITE_PUSHER_PORT="${PUSHER_PORT}"
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
OAUTH_REDIRECT_URI=http://frp.test/auth/callback
OAUTH_CLIENT_ID=7
OAUTH_CLIENT_SECRET=pkLhb8AwxfrKTqjROcgKbEEgtgTieYRatjlsdbYN
OAUTH_DOMAIN=http://oauth.test
API_TOKEN=123456

View File

@ -0,0 +1,61 @@
<?php
namespace App\Http\Middleware;
use App\Models\User;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Http;
class ApiToken
{
public function handle(Request $request, Closure $next)
{
// add json header
$request->headers->set('Accept', 'application/json');
// bearer token
if (! $request->hasHeader('Authorization')) {
return $this->unauthorized();
}
$token = $request->bearerToken();
$config_token = config('app.api_token');
if ($config_token == null) {
return $this->unauthorized();
}
if ($token !== $config_token) {
return $this->unauthorized();
}
if ($request->user_id) {
$user = User::where('id', $request->user_id)->first();
// if user null
if (! $user) {
$http = Http::remote('remote')->asForm();
$user = $http->get('/users/'.$request->user_id)->json();
$user = User::create([
'id' => $user['id'],
'name' => $user['name'],
'email' => $user['email'],
]);
}
Auth::guard('user')->login($user);
}
return $next($request);
}
public function unauthorized()
{
return response()->json([
'message' => 'Unauthorized.',
], 401);
}
}

View File

@ -18,6 +18,8 @@
'name' => env('APP_NAME', 'Laravel'), 'name' => env('APP_NAME', 'Laravel'),
'display_name' => env('APP_DISPLAY_NAME', 'Laravel'), 'display_name' => env('APP_DISPLAY_NAME', 'Laravel'),
'api_token' => env('API_TOKEN', null),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Application Environment | Application Environment