create temporary token for api authorization
This commit is contained in:
@@ -65,6 +65,8 @@ class HandleInertiaRequests extends Middleware
|
||||
}, $permissions);
|
||||
},
|
||||
'$menus' => fn () => $request->user()?->menus(),
|
||||
|
||||
'$token' => fn () => session('token'),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
49
app/Listeners/CreateTemporaryToken.php
Normal file
49
app/Listeners/CreateTemporaryToken.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
namespace App\Listeners;
|
||||
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class CreateTemporaryToken
|
||||
{
|
||||
/**
|
||||
* Create the event listener.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the event.
|
||||
*
|
||||
* @param object $event
|
||||
* @return void
|
||||
*/
|
||||
public function handle($event)
|
||||
{
|
||||
$user = $event->user;
|
||||
|
||||
$temporaryToken = DB::table('temporary_tokens')
|
||||
->where('user_id', $user->id)
|
||||
->first();
|
||||
|
||||
if ($temporaryToken) {
|
||||
DB::table('personal_access_tokens')->delete($temporaryToken->token_id);
|
||||
}
|
||||
|
||||
$token = $user->createToken(uniqid());
|
||||
|
||||
DB::table('temporary_tokens')
|
||||
->insert([
|
||||
'user_id' => $user->id,
|
||||
'token_id' => $token->accessToken->id,
|
||||
]);
|
||||
|
||||
session()->put('token', $token->plainTextToken);
|
||||
}
|
||||
}
|
||||
39
app/Listeners/DeleteTemporaryToken.php
Normal file
39
app/Listeners/DeleteTemporaryToken.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace App\Listeners;
|
||||
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class DeleteTemporaryToken
|
||||
{
|
||||
/**
|
||||
* Create the event listener.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the event.
|
||||
*
|
||||
* @param object $event
|
||||
* @return void
|
||||
*/
|
||||
public function handle($event)
|
||||
{
|
||||
$user = $event->user;
|
||||
|
||||
$temporaryToken = DB::table('temporary_tokens')->where('user_id', $user->id)->first();
|
||||
|
||||
if ($temporaryToken) {
|
||||
DB::table('personal_access_tokens')->delete($temporaryToken->token_id);
|
||||
}
|
||||
|
||||
session()->remove('token');
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Providers;
|
||||
|
||||
use Illuminate\Auth\Events\Login;
|
||||
use Illuminate\Auth\Events\Logout;
|
||||
use Illuminate\Auth\Events\Registered;
|
||||
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
|
||||
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
|
||||
@@ -21,8 +22,13 @@ class EventServiceProvider extends ServiceProvider
|
||||
],
|
||||
|
||||
Login::class => [
|
||||
\App\Listeners\CreateTemporaryToken::class,
|
||||
\App\Listeners\SaveUserLoginIpBrowserAndPlatform::class,
|
||||
],
|
||||
|
||||
Logout::class => [
|
||||
\App\Listeners\DeleteTemporaryToken::class,
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user