2016-05-19 15:01:28 +01:00
|
|
|
<?php
|
|
|
|
|
|
2017-03-01 17:37:21 +00:00
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
2016-05-19 15:01:28 +01:00
|
|
|
namespace App\Services;
|
|
|
|
|
|
2017-06-22 15:41:23 +01:00
|
|
|
use App\Jobs\AddClientToDatabase;
|
2026-08-13 16:07:07 +01:00
|
|
|
use App\Models\MicropubToken;
|
2016-05-19 15:01:28 +01:00
|
|
|
|
|
|
|
|
class TokenService
|
|
|
|
|
{
|
|
|
|
|
/**
|
2026-08-13 16:07:07 +01:00
|
|
|
* Generate a new bearer token.
|
2016-05-19 15:01:28 +01:00
|
|
|
*/
|
|
|
|
|
public function getNewToken(array $data): string
|
|
|
|
|
{
|
2026-08-13 16:07:07 +01:00
|
|
|
$token = rtrim(strtr(base64_encode(random_bytes(32)), '+/', '-_'), '=');
|
2020-11-28 18:21:29 +00:00
|
|
|
|
2026-08-13 16:07:07 +01:00
|
|
|
MicropubToken::create([
|
|
|
|
|
'token_hash' => hash('sha256', $token),
|
|
|
|
|
'client_id' => $data['client_id'],
|
|
|
|
|
'me' => $data['me'],
|
|
|
|
|
'scope' => $data['scope'],
|
|
|
|
|
]);
|
2020-11-28 18:21:29 +00:00
|
|
|
|
2017-06-22 15:41:23 +01:00
|
|
|
dispatch(new AddClientToDatabase($data['client_id']));
|
2016-05-19 15:01:28 +01:00
|
|
|
|
2026-08-13 16:07:07 +01:00
|
|
|
return $token;
|
2016-05-19 15:01:28 +01:00
|
|
|
}
|
|
|
|
|
}
|