From 02003b002dcc661e0143f13687e556fca1bf3447 Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 11:29:34 -0400 Subject: [PATCH 01/34] debugging tiktok --- app/Listeners/GetTikTokUserVideos.php | 56 +++++++++++---------------- 1 file changed, 23 insertions(+), 33 deletions(-) diff --git a/app/Listeners/GetTikTokUserVideos.php b/app/Listeners/GetTikTokUserVideos.php index d6aff134..f54fa479 100644 --- a/app/Listeners/GetTikTokUserVideos.php +++ b/app/Listeners/GetTikTokUserVideos.php @@ -2,7 +2,7 @@ namespace App\Listeners; -//use GuzzleHttp\Client; +use GuzzleHttp\Client; use Illuminate\Support\Facades\DB; class GetTikTokUserVideos @@ -12,39 +12,29 @@ class GetTikTokUserVideos */ public function handle(object $event): void { -// $client = new Client(); - $code = DB::table('tiktok_users')->where(['user_id' => $event->getUser()->getkey()])->first(); + $client = new Client(); + $tiktokUser = DB::table('tiktok_users')->where(['user_id' => $event->getUser()->getkey()])->first(); - dd([ - 'form_params' => [ - 'client_key' => config('services.tiktok.client_id'), - 'client_secret' => config('services.tiktok.client_secret'), - 'code' => $code, - 'grant_type' => 'authorization_code', - 'redirect_uri' => 'https://web.cookbookshq.com/callback/tiktok' - ], - ]); + try { + $response = $client->request('POST', + 'https://open.tiktokapis.com/v2/oauth/token/', + [ + 'form_params' => [ + 'client_key' => config('services.tiktok.client_id'), + 'client_secret' => config('services.tiktok.client_secret'), + 'code' => $tiktokUser->code, + 'grant_type' => 'authorization_code', + 'redirect_uri' => 'https://web.cookbookshq.com/callback/tiktok' + ], + ] + ); -// try { -// $response = $client->request('POST', -// 'https://open.tiktokapis.com/v2/oauth/token/', -// [ -// 'form_params' => [ -// 'client_key' => config('services.tiktok.client_id'), -// 'client_secret' => config('services.tiktok.client_secret'), -// 'code' => $code, -// 'grant_type' => 'authorization_code', -// 'redirect_uri' => 'https://web.cookbookshq.com/callback/tiktok' -// ], -// ] -// ); -// -// dd(json_decode($response->getBody()->getContents(), true)); -// } catch (\Exception $exception) { -// dd([ -// 'e' => $exception, -// 'code' => $code -// ]); -// } + dd(json_decode($response->getBody()->getContents(), true)); + } catch (\Exception $exception) { + dd([ + 'e' => $exception, + 'code' => $tiktokUser->code + ]); + } } } From a4424d2ec20303eb54eb156b955314940f4e8d2d Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 11:39:41 -0400 Subject: [PATCH 02/34] debugging tiktok --- app/Listeners/GetTikTokUserVideos.php | 38 +++++++++++--------------- app/Providers/EventServiceProvider.php | 4 +-- 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/app/Listeners/GetTikTokUserVideos.php b/app/Listeners/GetTikTokUserVideos.php index f54fa479..54cec03f 100644 --- a/app/Listeners/GetTikTokUserVideos.php +++ b/app/Listeners/GetTikTokUserVideos.php @@ -3,7 +3,6 @@ namespace App\Listeners; use GuzzleHttp\Client; -use Illuminate\Support\Facades\DB; class GetTikTokUserVideos { @@ -13,28 +12,23 @@ class GetTikTokUserVideos public function handle(object $event): void { $client = new Client(); - $tiktokUser = DB::table('tiktok_users')->where(['user_id' => $event->getUser()->getkey()])->first(); + $tiktokUser = $event->getUser(); - try { - $response = $client->request('POST', - 'https://open.tiktokapis.com/v2/oauth/token/', - [ - 'form_params' => [ - 'client_key' => config('services.tiktok.client_id'), - 'client_secret' => config('services.tiktok.client_secret'), - 'code' => $tiktokUser->code, - 'grant_type' => 'authorization_code', - 'redirect_uri' => 'https://web.cookbookshq.com/callback/tiktok' - ], - ] - ); + $response = $client->request('POST', + 'https://open.tiktokapis.com/v2/oauth/token/', + [ + 'form_params' => [ + 'client_key' => config('services.tiktok.client_id'), + 'client_secret' => config('services.tiktok.client_secret'), + 'code' => $tiktokUser->getCode(), + 'grant_type' => 'authorization_code', + 'redirect_uri' => 'https://web.cookbookshq.com/callback/tiktok' + ], + ] + ); - dd(json_decode($response->getBody()->getContents(), true)); - } catch (\Exception $exception) { - dd([ - 'e' => $exception, - 'code' => $tiktokUser->code - ]); - } + $decoded = json_decode($response->getBody()->getContents(), true); + + dd(array_merge(['code' => $tiktokUser->getCode()], $decoded)); } } diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index f6607711..08702afe 100755 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -32,9 +32,9 @@ class EventServiceProvider extends ServiceProvider ], TikTokUserIsAuthenticated::class => [ - AddFollowers::class, + GetTikTokUserVideos::class, UpdateOrCreateTikTokUser::class, - GetTikTokUserVideos::class + AddFollowers::class, ] ]; From 0a82ce6faaa49b01ed58ef9c34b1c8502cd12e9a Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 11:46:57 -0400 Subject: [PATCH 03/34] debugging tiktok --- app/Exceptions/Handler.php | 4 ++++ app/Listeners/GetTikTokUserVideos.php | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index c3e9f1e8..9bc944ab 100755 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -44,6 +44,10 @@ public function report(Throwable $exception) */ public function render($request, Throwable $throwable) { + dd([ + 'e' => $throwable, + 'm' => $throwable->getMessage() + ]); if ($throwable instanceof ValidationException) { return response()->json($throwable->errors(), Response::HTTP_UNPROCESSABLE_ENTITY); } diff --git a/app/Listeners/GetTikTokUserVideos.php b/app/Listeners/GetTikTokUserVideos.php index 54cec03f..81fa659d 100644 --- a/app/Listeners/GetTikTokUserVideos.php +++ b/app/Listeners/GetTikTokUserVideos.php @@ -12,7 +12,7 @@ class GetTikTokUserVideos public function handle(object $event): void { $client = new Client(); - $tiktokUser = $event->getUser(); + $tikTokUser = $event->getUser(); $response = $client->request('POST', 'https://open.tiktokapis.com/v2/oauth/token/', @@ -20,7 +20,7 @@ public function handle(object $event): void 'form_params' => [ 'client_key' => config('services.tiktok.client_id'), 'client_secret' => config('services.tiktok.client_secret'), - 'code' => $tiktokUser->getCode(), + 'code' => $tikTokUser->getCode(), 'grant_type' => 'authorization_code', 'redirect_uri' => 'https://web.cookbookshq.com/callback/tiktok' ], @@ -29,6 +29,6 @@ public function handle(object $event): void $decoded = json_decode($response->getBody()->getContents(), true); - dd(array_merge(['code' => $tiktokUser->getCode()], $decoded)); + dd(array_merge(['code' => $tikTokUser->getCode()], $decoded)); } } From 8a90bd11a600d6cf5b4b4c12637d779161e73b43 Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 11:54:45 -0400 Subject: [PATCH 04/34] debugging tiktok --- app/Events/TikTokUserIsAuthenticated.php | 8 -------- app/Exceptions/Handler.php | 5 +++-- app/Listeners/GetTikTokUserVideos.php | 2 +- 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/app/Events/TikTokUserIsAuthenticated.php b/app/Events/TikTokUserIsAuthenticated.php index 3cd0b773..38630a9e 100644 --- a/app/Events/TikTokUserIsAuthenticated.php +++ b/app/Events/TikTokUserIsAuthenticated.php @@ -5,7 +5,6 @@ namespace App\Events; use App\Dtos\TikTokUserDto; -use App\Models\User; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; @@ -14,17 +13,10 @@ class TikTokUserIsAuthenticated { use Dispatchable, InteractsWithSockets, SerializesModels; - protected User $user; - /** * Create a new event instance. */ public function __construct( public TikTokUserDto $tikTokUserDto ) {} - - public function getUser() - { - return User::findOrFail($this->tikTokUserDto->getUserId()); - } } diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 9bc944ab..38637663 100755 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -45,8 +45,9 @@ public function report(Throwable $exception) public function render($request, Throwable $throwable) { dd([ - 'e' => $throwable, - 'm' => $throwable->getMessage() + 'trace' => $throwable->getTraceAsString(), + 'm' => $throwable->getMessage(), + 'prev' => $throwable->getPrevious() ]); if ($throwable instanceof ValidationException) { return response()->json($throwable->errors(), Response::HTTP_UNPROCESSABLE_ENTITY); diff --git a/app/Listeners/GetTikTokUserVideos.php b/app/Listeners/GetTikTokUserVideos.php index 81fa659d..9eff0d2b 100644 --- a/app/Listeners/GetTikTokUserVideos.php +++ b/app/Listeners/GetTikTokUserVideos.php @@ -12,7 +12,7 @@ class GetTikTokUserVideos public function handle(object $event): void { $client = new Client(); - $tikTokUser = $event->getUser(); + $tikTokUser = $event->tikTokUserDto; $response = $client->request('POST', 'https://open.tiktokapis.com/v2/oauth/token/', From 87bf437ab49cf7a4f226e3791f9f93da85ec9295 Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 12:20:49 -0400 Subject: [PATCH 05/34] debugging tiktok --- app/Exceptions/Handler.php | 11 +++++---- app/Exceptions/TikTokException.php | 10 ++++++++ app/Listeners/GetTikTokUserVideos.php | 33 +++++++++++++++----------- app/Providers/EventServiceProvider.php | 2 +- 4 files changed, 36 insertions(+), 20 deletions(-) create mode 100644 app/Exceptions/TikTokException.php diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 38637663..889d9b6e 100755 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -44,11 +44,6 @@ public function report(Throwable $exception) */ public function render($request, Throwable $throwable) { - dd([ - 'trace' => $throwable->getTraceAsString(), - 'm' => $throwable->getMessage(), - 'prev' => $throwable->getPrevious() - ]); if ($throwable instanceof ValidationException) { return response()->json($throwable->errors(), Response::HTTP_UNPROCESSABLE_ENTITY); } @@ -71,6 +66,12 @@ public function render($request, Throwable $throwable) ], $throwable->getContext()), $throwable->getCode()); } + if ($throwable instanceof TikTokException) { + return response()->json(array_merge([ + 'error' => $throwable->getMessage() + ], $throwable->getContext()), $throwable->getCode()); + } + return parent::render($request, $throwable); } } diff --git a/app/Exceptions/TikTokException.php b/app/Exceptions/TikTokException.php new file mode 100644 index 00000000..5087658d --- /dev/null +++ b/app/Exceptions/TikTokException.php @@ -0,0 +1,10 @@ +tikTokUserDto; - $response = $client->request('POST', - 'https://open.tiktokapis.com/v2/oauth/token/', - [ - 'form_params' => [ - 'client_key' => config('services.tiktok.client_id'), - 'client_secret' => config('services.tiktok.client_secret'), - 'code' => $tikTokUser->getCode(), - 'grant_type' => 'authorization_code', - 'redirect_uri' => 'https://web.cookbookshq.com/callback/tiktok' - ], - ] - ); + try { + $response = $client->request('POST', + 'https://open.tiktokapis.com/v2/oauth/token/', + [ + 'form_params' => [ + 'client_key' => config('services.tiktok.client_id'), + 'client_secret' => config('services.tiktok.client_secret'), + 'code' => $tikTokUser->getCode(), + 'grant_type' => 'authorization_code', + 'redirect_uri' => 'https://web.cookbookshq.com/callback/tiktok' + ], + ] + ); - $decoded = json_decode($response->getBody()->getContents(), true); + $decoded = json_decode($response->getBody()->getContents(), true); - dd(array_merge(['code' => $tikTokUser->getCode()], $decoded)); + dd(array_merge(['code' => $tikTokUser->getCode()], $decoded)); + } catch(\Exception $exception) { + throw new TikTokException($exception->getMessage()); + } } } diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 08702afe..6e932ca1 100755 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -33,8 +33,8 @@ class EventServiceProvider extends ServiceProvider TikTokUserIsAuthenticated::class => [ GetTikTokUserVideos::class, - UpdateOrCreateTikTokUser::class, AddFollowers::class, + UpdateOrCreateTikTokUser::class, ] ]; From 7d8d0a1442a91fde74ea41c6e777167d8200da1b Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 12:27:53 -0400 Subject: [PATCH 06/34] debugging tiktok --- app/Exceptions/Handler.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 889d9b6e..c5e48375 100755 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -67,9 +67,7 @@ public function render($request, Throwable $throwable) } if ($throwable instanceof TikTokException) { - return response()->json(array_merge([ - 'error' => $throwable->getMessage() - ], $throwable->getContext()), $throwable->getCode()); + return response()->json( ['error' => $throwable->getMessage()]); } return parent::render($request, $throwable); From 2b904aff840d79d38d35bb4b49288f5475480350 Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 12:30:26 -0400 Subject: [PATCH 07/34] debugging tiktok --- app/Providers/EventServiceProvider.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 6e932ca1..24c033be 100755 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -33,8 +33,8 @@ class EventServiceProvider extends ServiceProvider TikTokUserIsAuthenticated::class => [ GetTikTokUserVideos::class, - AddFollowers::class, - UpdateOrCreateTikTokUser::class, +// AddFollowers::class, +// UpdateOrCreateTikTokUser::class, ] ]; From 5bf25acba008a25a9aef7fff1723f9082746c2cd Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 12:33:28 -0400 Subject: [PATCH 08/34] debugging tiktok --- app/Events/TikTokUserIsAuthenticated.php | 8 ++++++++ app/Providers/EventServiceProvider.php | 4 ---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/Events/TikTokUserIsAuthenticated.php b/app/Events/TikTokUserIsAuthenticated.php index 38630a9e..3cd0b773 100644 --- a/app/Events/TikTokUserIsAuthenticated.php +++ b/app/Events/TikTokUserIsAuthenticated.php @@ -5,6 +5,7 @@ namespace App\Events; use App\Dtos\TikTokUserDto; +use App\Models\User; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; @@ -13,10 +14,17 @@ class TikTokUserIsAuthenticated { use Dispatchable, InteractsWithSockets, SerializesModels; + protected User $user; + /** * Create a new event instance. */ public function __construct( public TikTokUserDto $tikTokUserDto ) {} + + public function getUser() + { + return User::findOrFail($this->tikTokUserDto->getUserId()); + } } diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 24c033be..3b1c6267 100755 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -5,9 +5,7 @@ namespace App\Providers; use App\Events\TikTokUserIsAuthenticated; -use App\Listeners\AddFollowers; use App\Listeners\GetTikTokUserVideos; -use App\Listeners\UpdateOrCreateTikTokUser; use Illuminate\Auth\Events\Registered; use Illuminate\Auth\Listeners\SendEmailVerificationNotification; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; @@ -33,8 +31,6 @@ class EventServiceProvider extends ServiceProvider TikTokUserIsAuthenticated::class => [ GetTikTokUserVideos::class, -// AddFollowers::class, -// UpdateOrCreateTikTokUser::class, ] ]; From 5ac2cf2ae4ac3e9b12498e73dd0087cff7ced362 Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 12:36:10 -0400 Subject: [PATCH 09/34] debugging tiktok --- app/Exceptions/Handler.php | 4 ---- app/Listeners/GetTikTokUserVideos.php | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index c5e48375..c3e9f1e8 100755 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -66,10 +66,6 @@ public function render($request, Throwable $throwable) ], $throwable->getContext()), $throwable->getCode()); } - if ($throwable instanceof TikTokException) { - return response()->json( ['error' => $throwable->getMessage()]); - } - return parent::render($request, $throwable); } } diff --git a/app/Listeners/GetTikTokUserVideos.php b/app/Listeners/GetTikTokUserVideos.php index ca2da45d..cde70a28 100644 --- a/app/Listeners/GetTikTokUserVideos.php +++ b/app/Listeners/GetTikTokUserVideos.php @@ -33,7 +33,7 @@ public function handle(object $event): void dd(array_merge(['code' => $tikTokUser->getCode()], $decoded)); } catch(\Exception $exception) { - throw new TikTokException($exception->getMessage()); + dd($exception->getMessage()); } } } From 6df18af3cb44dc18ca9cc3814462cd3e6941c2de Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 15:11:16 -0400 Subject: [PATCH 10/34] debugging tiktok --- app/Http/Controllers/AuthController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index 5818c8e9..9cb1b8a5 100755 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -220,7 +220,7 @@ public function tikTokHandleCallback(Request $request, Client $client, UserServi TikTokUserIsAuthenticated::dispatch(new TikTokUserDto( $user->getKey(), $userInfo['data']['user']['open_id'], - $code, + $decoded['data']['access_token'], $userInfo['data']['user']['is_verified'], $userInfo['data']['user']['profile_deep_link'], $userInfo['data']['user']['bio_description'], From 80960535ce95c53b02907a8fcf4d92a9ad9ea686 Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 15:20:02 -0400 Subject: [PATCH 11/34] debugging tiktok --- app/Listeners/GetTikTokUserVideos.php | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/app/Listeners/GetTikTokUserVideos.php b/app/Listeners/GetTikTokUserVideos.php index cde70a28..7f2821d6 100644 --- a/app/Listeners/GetTikTokUserVideos.php +++ b/app/Listeners/GetTikTokUserVideos.php @@ -17,15 +17,12 @@ public function handle(object $event): void try { $response = $client->request('POST', - 'https://open.tiktokapis.com/v2/oauth/token/', + 'https://open.tiktokapis.com/v2/video/list/', [ - 'form_params' => [ - 'client_key' => config('services.tiktok.client_id'), - 'client_secret' => config('services.tiktok.client_secret'), - 'code' => $tikTokUser->getCode(), - 'grant_type' => 'authorization_code', - 'redirect_uri' => 'https://web.cookbookshq.com/callback/tiktok' - ], + 'headers' => [ + 'Authorization' => 'Bearer ' . $tikTokUser->getCode(), + 'Content-Type' => 'application/json' + ] ] ); From 366f0e3d789a7b887bf8f40dcab61e86f0a13e10 Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 15:25:43 -0400 Subject: [PATCH 12/34] debugging tiktok --- app/Listeners/GetTikTokUserVideos.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Listeners/GetTikTokUserVideos.php b/app/Listeners/GetTikTokUserVideos.php index 7f2821d6..ab49f9d2 100644 --- a/app/Listeners/GetTikTokUserVideos.php +++ b/app/Listeners/GetTikTokUserVideos.php @@ -17,7 +17,7 @@ public function handle(object $event): void try { $response = $client->request('POST', - 'https://open.tiktokapis.com/v2/video/list/', + 'https://open.tiktokapis.com/v2/video/list/?fields=cover_image_url,id,title', [ 'headers' => [ 'Authorization' => 'Bearer ' . $tikTokUser->getCode(), From 0b0d9de778a5859f9eae0a151ce4e1719047651c Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 16:05:54 -0400 Subject: [PATCH 13/34] debugging tt --- app/Exceptions/TikTokException.php | 5 +++- app/Listeners/GetTikTokUserVideos.php | 16 ++++++++++--- ...08_12_002305_create_tiktok_users_table.php | 24 +++++++++---------- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/app/Exceptions/TikTokException.php b/app/Exceptions/TikTokException.php index 5087658d..9c9b6b39 100644 --- a/app/Exceptions/TikTokException.php +++ b/app/Exceptions/TikTokException.php @@ -6,5 +6,8 @@ class TikTokException extends Exception { - // + public function __construct(string $message = "", int $code = 0, ?Throwable $previous = null) + { + parent::__construct($message, $code, $previous); + } } diff --git a/app/Listeners/GetTikTokUserVideos.php b/app/Listeners/GetTikTokUserVideos.php index ab49f9d2..98f5fecf 100644 --- a/app/Listeners/GetTikTokUserVideos.php +++ b/app/Listeners/GetTikTokUserVideos.php @@ -4,6 +4,7 @@ use App\Exceptions\TikTokException; use GuzzleHttp\Client; +use Illuminate\Support\Facades\DB; class GetTikTokUserVideos { @@ -14,10 +15,11 @@ public function handle(object $event): void { $client = new Client(); $tikTokUser = $event->tikTokUserDto; + $context = []; try { $response = $client->request('POST', - 'https://open.tiktokapis.com/v2/video/list/?fields=cover_image_url,id,title', + 'https://open.tiktokapis.com/v2/video/list/?fields=cover_image_url,id,title.video_description.duration.height.width.title.embed_html.embed_link', [ 'headers' => [ 'Authorization' => 'Bearer ' . $tikTokUser->getCode(), @@ -28,9 +30,17 @@ public function handle(object $event): void $decoded = json_decode($response->getBody()->getContents(), true); - dd(array_merge(['code' => $tikTokUser->getCode()], $decoded)); + if ($decoded['error']['code'] == 'ok') { + $context = $decoded['error']; + } else { + DB::table('tiktok_users') + ->insert([ + 'user_id' => '', + 'videos' => json_encode($decoded['data']['videos']) + ]); + } } catch(\Exception $exception) { - dd($exception->getMessage()); + throw new TikTokException($exception->getMessage(), $context); } } } diff --git a/database/migrations/2023_08_12_002305_create_tiktok_users_table.php b/database/migrations/2023_08_12_002305_create_tiktok_users_table.php index 38b12785..a21dbb3f 100644 --- a/database/migrations/2023_08_12_002305_create_tiktok_users_table.php +++ b/database/migrations/2023_08_12_002305_create_tiktok_users_table.php @@ -13,18 +13,18 @@ public function up(): void { Schema::create('tiktok_users', function (Blueprint $table) { $table->id(); - $table->integer('user_id'); - $table->text('open_id'); - $table->text('code'); - $table->boolean('is_verified'); - $table->text('profile_deep_link'); - $table->text('bio_description'); - $table->text('display_name'); - $table->text('avatar_large_url'); - $table->text('avatar_url_100'); - $table->text('avatar_url'); - $table->text('union_id'); - $table->integer('video_count'); + $table->integer('user_id')->nullable(); + $table->text('open_id')->nullable(); + $table->boolean('is_verified')->default(0); + $table->text('profile_deep_link')->nullable(); + $table->text('bio_description')->nullable(); + $table->text('display_name')->nullable(); + $table->text('avatar_large_url')->nullable(); + $table->text('avatar_url_100')->nullable(); + $table->text('avatar_url')->nullable(); + $table->text('union_id')->nullable(); + $table->integer('video_count')->default(0); + $table->text('videos')->nullable(); $table->timestamps(); }); } From 411757607e879145603a685fdb42b2ed3b342a68 Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 16:09:07 -0400 Subject: [PATCH 14/34] debugging tt --- app/Exceptions/TikTokException.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Exceptions/TikTokException.php b/app/Exceptions/TikTokException.php index 9c9b6b39..6173ce5b 100644 --- a/app/Exceptions/TikTokException.php +++ b/app/Exceptions/TikTokException.php @@ -6,8 +6,9 @@ class TikTokException extends Exception { - public function __construct(string $message = "", int $code = 0, ?Throwable $previous = null) + public function __construct(string $message = "", array $context = []) { + $message = $message . json_encode($context); parent::__construct($message, $code, $previous); } } From c0322b44366ac1c29eddd4633a0c0abe25066d38 Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 16:11:13 -0400 Subject: [PATCH 15/34] debugging tt --- app/Exceptions/TikTokException.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Exceptions/TikTokException.php b/app/Exceptions/TikTokException.php index 6173ce5b..dd3f3f69 100644 --- a/app/Exceptions/TikTokException.php +++ b/app/Exceptions/TikTokException.php @@ -9,6 +9,6 @@ class TikTokException extends Exception public function __construct(string $message = "", array $context = []) { $message = $message . json_encode($context); - parent::__construct($message, $code, $previous); + parent::__construct($message, 400); } } From b5d2f1e209e693d56000f7b9349884806b375e43 Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 16:15:25 -0400 Subject: [PATCH 16/34] debugging tt --- app/Listeners/GetTikTokUserVideos.php | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/app/Listeners/GetTikTokUserVideos.php b/app/Listeners/GetTikTokUserVideos.php index 98f5fecf..89a4a513 100644 --- a/app/Listeners/GetTikTokUserVideos.php +++ b/app/Listeners/GetTikTokUserVideos.php @@ -30,15 +30,11 @@ public function handle(object $event): void $decoded = json_decode($response->getBody()->getContents(), true); - if ($decoded['error']['code'] == 'ok') { - $context = $decoded['error']; - } else { - DB::table('tiktok_users') - ->insert([ - 'user_id' => '', - 'videos' => json_encode($decoded['data']['videos']) - ]); - } + DB::table('tiktok_users') + ->insert([ + 'user_id' => '', + 'videos' => json_encode($decoded['data']['videos']) + ]); } catch(\Exception $exception) { throw new TikTokException($exception->getMessage(), $context); } From bc947c14dcda558a3d5bc5c3cb2caeb3f8bb0aba Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 16:19:47 -0400 Subject: [PATCH 17/34] debugging tt --- app/Listeners/GetTikTokUserVideos.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Listeners/GetTikTokUserVideos.php b/app/Listeners/GetTikTokUserVideos.php index 89a4a513..b709b31f 100644 --- a/app/Listeners/GetTikTokUserVideos.php +++ b/app/Listeners/GetTikTokUserVideos.php @@ -36,7 +36,7 @@ public function handle(object $event): void 'videos' => json_encode($decoded['data']['videos']) ]); } catch(\Exception $exception) { - throw new TikTokException($exception->getMessage(), $context); + dd($exception->getMessage()); } } } From da79e376b25c2e7ff0dea8532fe3dc60dce83b5a Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 16:26:19 -0400 Subject: [PATCH 18/34] debugging tt --- app/Listeners/GetTikTokUserVideos.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/Listeners/GetTikTokUserVideos.php b/app/Listeners/GetTikTokUserVideos.php index b709b31f..d301792d 100644 --- a/app/Listeners/GetTikTokUserVideos.php +++ b/app/Listeners/GetTikTokUserVideos.php @@ -4,6 +4,7 @@ use App\Exceptions\TikTokException; use GuzzleHttp\Client; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\DB; class GetTikTokUserVideos @@ -32,8 +33,10 @@ public function handle(object $event): void DB::table('tiktok_users') ->insert([ - 'user_id' => '', - 'videos' => json_encode($decoded['data']['videos']) + 'user_id' => $event->tikTokUserDto->getUserId(), + 'videos' => json_encode($decoded['data']['videos']), + 'created_at' => Carbon::now(), + 'updated_at' => Carbon::now() ]); } catch(\Exception $exception) { dd($exception->getMessage()); From 089927331c5c165fb30ffa0578ca6dfece3ea3bb Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 16:39:53 -0400 Subject: [PATCH 19/34] debugging tt --- app/Listeners/GetTikTokUserVideos.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Listeners/GetTikTokUserVideos.php b/app/Listeners/GetTikTokUserVideos.php index d301792d..5080b850 100644 --- a/app/Listeners/GetTikTokUserVideos.php +++ b/app/Listeners/GetTikTokUserVideos.php @@ -20,7 +20,7 @@ public function handle(object $event): void try { $response = $client->request('POST', - 'https://open.tiktokapis.com/v2/video/list/?fields=cover_image_url,id,title.video_description.duration.height.width.title.embed_html.embed_link', + 'https://open.tiktokapis.com/v2/video/list/?fields=cover_image_url,id,title,video_description,duration,height,width,title,embed_html,embed_link', [ 'headers' => [ 'Authorization' => 'Bearer ' . $tikTokUser->getCode(), From 4b7f55390dd3ab6897b53181a8e25e5a3bc321ff Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 16:54:29 -0400 Subject: [PATCH 20/34] tt --- app/Listeners/GetTikTokUserVideos.php | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/app/Listeners/GetTikTokUserVideos.php b/app/Listeners/GetTikTokUserVideos.php index 5080b850..ad9f2619 100644 --- a/app/Listeners/GetTikTokUserVideos.php +++ b/app/Listeners/GetTikTokUserVideos.php @@ -17,10 +17,23 @@ public function handle(object $event): void $client = new Client(); $tikTokUser = $event->tikTokUserDto; $context = []; + $claims = [ + 'cover_image_url', + 'id', + 'title', + 'video_description', + 'duration', + 'height', + 'width', + 'title', + 'embed_html', + 'embed_link' + ]; + $endpoint = 'https://open.tiktokapis.com/v2/video/list/?fields='; try { $response = $client->request('POST', - 'https://open.tiktokapis.com/v2/video/list/?fields=cover_image_url,id,title,video_description,duration,height,width,title,embed_html,embed_link', + $endpoint . implode( ',', $claims), [ 'headers' => [ 'Authorization' => 'Bearer ' . $tikTokUser->getCode(), @@ -32,14 +45,15 @@ public function handle(object $event): void $decoded = json_decode($response->getBody()->getContents(), true); DB::table('tiktok_users') - ->insert([ + ->where(['user_id' => $event->tikTokUserDto->getUserId()]) + ->updateOrInsert([ 'user_id' => $event->tikTokUserDto->getUserId(), 'videos' => json_encode($decoded['data']['videos']), 'created_at' => Carbon::now(), 'updated_at' => Carbon::now() ]); } catch(\Exception $exception) { - dd($exception->getMessage()); + throw new TikTokException($exception->getMessage(), $context); } } } From f6416b75be6f761114046eac792df455376965c5 Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 17:23:48 -0400 Subject: [PATCH 21/34] wip --- app/Exceptions/Handler.php | 4 ++++ app/Listeners/GetTikTokUserVideos.php | 15 ++++++++++++--- app/Listeners/UpdateOrCreateTikTokUser.php | 2 ++ app/Providers/EventServiceProvider.php | 6 +++++- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index c3e9f1e8..c5e48375 100755 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -66,6 +66,10 @@ public function render($request, Throwable $throwable) ], $throwable->getContext()), $throwable->getCode()); } + if ($throwable instanceof TikTokException) { + return response()->json( ['error' => $throwable->getMessage()]); + } + return parent::render($request, $throwable); } } diff --git a/app/Listeners/GetTikTokUserVideos.php b/app/Listeners/GetTikTokUserVideos.php index ad9f2619..95b8174a 100644 --- a/app/Listeners/GetTikTokUserVideos.php +++ b/app/Listeners/GetTikTokUserVideos.php @@ -44,14 +44,23 @@ public function handle(object $event): void $decoded = json_decode($response->getBody()->getContents(), true); - DB::table('tiktok_users') - ->where(['user_id' => $event->tikTokUserDto->getUserId()]) - ->updateOrInsert([ + $db = DB::table('tiktok_users'); + + $tiktok_user = $db->where(['user_id' => $event->tikTokUserDto->getUserId()])->first(); + + if ($tiktok_user === null) { + $db->insert([ 'user_id' => $event->tikTokUserDto->getUserId(), 'videos' => json_encode($decoded['data']['videos']), 'created_at' => Carbon::now(), 'updated_at' => Carbon::now() ]); + } else { + $db->update([ + 'videos' => json_encode($decoded['data']['videos']), + ]); + } + } catch(\Exception $exception) { throw new TikTokException($exception->getMessage(), $context); } diff --git a/app/Listeners/UpdateOrCreateTikTokUser.php b/app/Listeners/UpdateOrCreateTikTokUser.php index 40b463b4..b2131e18 100644 --- a/app/Listeners/UpdateOrCreateTikTokUser.php +++ b/app/Listeners/UpdateOrCreateTikTokUser.php @@ -21,6 +21,8 @@ public function handle(TikTokUserIsAuthenticated $event): void "updated_at" => Carbon::now() ]; + unset($attributes['code']); + $data = array_merge($attributes, $timestamps); $tiktok_user = DB::table('tiktok_users')->where(["user_id" => $user_id])->first(); diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 3b1c6267..f6607711 100755 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -5,7 +5,9 @@ namespace App\Providers; use App\Events\TikTokUserIsAuthenticated; +use App\Listeners\AddFollowers; use App\Listeners\GetTikTokUserVideos; +use App\Listeners\UpdateOrCreateTikTokUser; use Illuminate\Auth\Events\Registered; use Illuminate\Auth\Listeners\SendEmailVerificationNotification; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; @@ -30,7 +32,9 @@ class EventServiceProvider extends ServiceProvider ], TikTokUserIsAuthenticated::class => [ - GetTikTokUserVideos::class, + AddFollowers::class, + UpdateOrCreateTikTokUser::class, + GetTikTokUserVideos::class ] ]; From f125cd1555ec96092ce38e2314a150c922336095 Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 17:26:17 -0400 Subject: [PATCH 22/34] wip --- app/Listeners/GetTikTokUserVideos.php | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/app/Listeners/GetTikTokUserVideos.php b/app/Listeners/GetTikTokUserVideos.php index 95b8174a..4a95e70f 100644 --- a/app/Listeners/GetTikTokUserVideos.php +++ b/app/Listeners/GetTikTokUserVideos.php @@ -47,18 +47,17 @@ public function handle(object $event): void $db = DB::table('tiktok_users'); $tiktok_user = $db->where(['user_id' => $event->tikTokUserDto->getUserId()])->first(); + $data = [ + 'videos' => json_encode($decoded['data']['videos']), + 'created_at' => Carbon::now(), + 'updated_at' => Carbon::now() + ]; if ($tiktok_user === null) { - $db->insert([ - 'user_id' => $event->tikTokUserDto->getUserId(), - 'videos' => json_encode($decoded['data']['videos']), - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now() - ]); + $data['user_id'] = $event->tikTokUserDto->getUserId(); + $db->insert($data); } else { - $db->update([ - 'videos' => json_encode($decoded['data']['videos']), - ]); + $db->update($data); } } catch(\Exception $exception) { From 9a62701a2c3cdc85430ed5bd5fd4043b3efa723f Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 17:39:10 -0400 Subject: [PATCH 23/34] append user's tiktok videos --- app/Models/User.php | 11 +++++++++++ app/Services/UserService.php | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/Models/User.php b/app/Models/User.php index 1520ec8a..37638d95 100755 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -297,4 +297,15 @@ public function getTikTokUser() { return DB::table('tiktok_users')->where(['user_id' => $this->getKey()])->first(); } + + public function getTiktokVideosAttribute(): Collection + { + $tikTokUser = DB::table('tiktok_users')->where(['user_id' => $this->getKey()])->first(); + + if ($tikTokUser === null) { + return collect(); + } + + return collect(json_decode($tikTokUser->videos, true)); + } } diff --git a/app/Services/UserService.php b/app/Services/UserService.php index ea4ee3c9..7cbe0791 100755 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -81,7 +81,7 @@ public function show($q) return response( [ 'data' => [ - 'user' => $this->findWhere($q)->get(), + 'user' => $this->findWhere($q)->get()->append(['tiktok_videos']), ], ], Response::HTTP_OK ); From ab0ce8ad7f2d13dd782caa204ed76a1327ed6080 Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 17:55:36 -0400 Subject: [PATCH 24/34] append user's tiktok videos --- app/Http/Controllers/AuthController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index 9cb1b8a5..956f8a3d 100755 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -246,7 +246,7 @@ public function tikTokHandleCallback(Request $request, Client $client, UserServi 'error' => $e->getMessage(), ]); - return redirect('https://web.cookbookshq.com/#/errors/?m=Tiktok is having a hard time processing this request, please try again.'); + return redirect('https://web.cookbookshq.com/#/errors/?m=We are experiencing a technical difficulty logging you in with TikTok, please try again.' . '
See troubleshooting'); } } From 98e65d7eb739f8ced1a84adbf14905f7c422b64d Mon Sep 17 00:00:00 2001 From: fokosun Date: Thu, 17 Aug 2023 18:00:54 -0400 Subject: [PATCH 25/34] append user's tiktok videos --- app/Http/Controllers/AuthController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index 956f8a3d..113db416 100755 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -246,7 +246,7 @@ public function tikTokHandleCallback(Request $request, Client $client, UserServi 'error' => $e->getMessage(), ]); - return redirect('https://web.cookbookshq.com/#/errors/?m=We are experiencing a technical difficulty logging you in with TikTok, please try again.' . '
See troubleshooting'); + return redirect("https://web.cookbookshq.com/#/errors/?m=We are experiencing some technical difficulty logging you in with TikTok, please try again."); } } From a9f4da3e0397ce7c710a97337560cac5b62fc6cf Mon Sep 17 00:00:00 2001 From: fokosun Date: Sun, 20 Aug 2023 19:43:01 -0400 Subject: [PATCH 26/34] generate and validate otp endpoints --- app/Http/Controllers/UserController.php | 20 ++++++++++ composer.json | 3 +- composer.lock | 49 ++++++++++++++++++++++++- config/app.php | 4 +- config/services.php | 4 ++ routes/api.php | 5 +++ 6 files changed, 82 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index ed331e4b..e5426a43 100755 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -17,6 +17,7 @@ use App\Services\TikTok\Videos; use App\Services\UserService; use Carbon\Carbon; +use Ichtrojan\Otp\Otp; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Support\Facades\Crypt; @@ -276,4 +277,23 @@ public function listVideos(HttpRequestRunner $requestRunner) return $this->unauthorizedResponse(); } + + public function generateOtp(Request $request, Otp $otp): object + { + $identifier = (string) $request->get('identifier'); + + return $otp->generate( + $identifier, + config('services.otp.digits'), + config('services.otp.validity') + ); + } + + public function validateOtp(Request $request, Otp $otp): object + { + $identifier = (string) $request->get('identifier'); + $token = (string) $request->get('token'); + + return $otp->validate($identifier, $token); + } } diff --git a/composer.json b/composer.json index d54847e7..1b3460e8 100755 --- a/composer.json +++ b/composer.json @@ -31,7 +31,8 @@ "thedevsaddam/laravel-schema": "^2.0", "sentry/sentry-laravel": "^3.1", "ipinfo/ipinfolaravel": "^2.4", - "spatie/laravel-ignition": "^2.1" + "spatie/laravel-ignition": "^2.1", + "ichtrojan/laravel-otp": "^1.4" }, "require-dev": { "mockery/mockery": "^1.4.2", diff --git a/composer.lock b/composer.lock index 2a3184fa..954dc4f4 100755 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0036a08c17a7175ce5b3f60eb76eebe4", + "content-hash": "c52f58b8d853fbde39289688cf405e1f", "packages": [ { "name": "aws/aws-crt-php", @@ -1714,6 +1714,53 @@ }, "time": "2021-07-21T13:50:14+00:00" }, + { + "name": "ichtrojan/laravel-otp", + "version": "v1.4.1", + "source": { + "type": "git", + "url": "https://github.com/ichtrojan/laravel-otp.git", + "reference": "3fe67dfca3837c924bf968c019c7662caaab3740" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ichtrojan/laravel-otp/zipball/3fe67dfca3837c924bf968c019c7662caaab3740", + "reference": "3fe67dfca3837c924bf968c019c7662caaab3740", + "shasum": "" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Ichtrojan\\Otp\\OtpServiceProvider" + ], + "aliases": { + "Otp": "Ichtrojan\\Otp\\Otp" + } + } + }, + "autoload": { + "psr-4": { + "Ichtrojan\\Otp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Okoh", + "email": "michael@okoh.co.uk" + } + ], + "description": "A simple package to generate and validate OTPs", + "support": { + "issues": "https://github.com/ichtrojan/laravel-otp/issues", + "source": "https://github.com/ichtrojan/laravel-otp/tree/v1.4.1" + }, + "time": "2021-05-13T09:01:34+00:00" + }, { "name": "ipinfo/ipinfo", "version": "v2.3.1", diff --git a/config/app.php b/config/app.php index 74912a00..4e37d085 100755 --- a/config/app.php +++ b/config/app.php @@ -163,6 +163,7 @@ Illuminate\Translation\TranslationServiceProvider::class, Illuminate\Validation\ValidationServiceProvider::class, Illuminate\View\ViewServiceProvider::class, + Ichtrojan\Otp\OtpServiceProvider::class, /* * Package Service Providers... @@ -230,7 +231,8 @@ 'URL' => Illuminate\Support\Facades\URL::class, 'Validator' => Illuminate\Support\Facades\Validator::class, 'View' => Illuminate\Support\Facades\View::class, - 'Socialite' => Laravel\Socialite\Facades\Socialite::class + 'Socialite' => Laravel\Socialite\Facades\Socialite::class, + 'Otp' => Ichtrojan\Otp\Otp::class, ], ]; diff --git a/config/services.php b/config/services.php index 163c5a42..cfb4c53b 100755 --- a/config/services.php +++ b/config/services.php @@ -47,5 +47,9 @@ ], 'faker' => [ 'pass' => env('MAGICLINK_PASS') + ], + 'otp' => [ + 'digits' => 6, + 'validity' => 15 //mins ] ]; diff --git a/routes/api.php b/routes/api.php index 5ceab100..6469ef54 100755 --- a/routes/api.php +++ b/routes/api.php @@ -135,4 +135,9 @@ Route::post('/feedback', [UserController::class, 'addFeedback']); Route::post('/report-recipe', [RecipeController::class, 'report']); + + Route::group(['prefix' => '/otp'], function () { + Route::post('/generate', [UserController::class, 'generateOtp']); + Route::post('/validate', [UserController::class, 'validateOtp']); + }); })->middleware(['api']); From b936dc105a22840bbcc02f5bee622ca3a651025d Mon Sep 17 00:00:00 2001 From: fokosun Date: Sun, 20 Aug 2023 22:01:05 -0400 Subject: [PATCH 27/34] wip send otp email --- .env.example | 5 +- app/Http/Controllers/Controller.php | 8 +- app/Http/Controllers/UserController.php | 12 +- app/Mail/OtpWasGenerated.php | 48 + composer.json | 6 +- composer.lock | 1607 +++++++++++++-------- resources/views/emails/send-otp.blade.php | 405 ++++++ 7 files changed, 1470 insertions(+), 621 deletions(-) create mode 100644 app/Mail/OtpWasGenerated.php create mode 100644 resources/views/emails/send-otp.blade.php diff --git a/.env.example b/.env.example index e4c27f1a..e1a8ffde 100755 --- a/.env.example +++ b/.env.example @@ -48,4 +48,7 @@ PINTEREST_REDIRECT_URI= INSTAGRAM_CLIENT_ID= INSTAGRAM_CLIENT_SECRET= -INSTAGRAM_REDIRECT_URI= \ No newline at end of file +INSTAGRAM_REDIRECT_URI= + +MAILGUN_DOMAIN= +MAILGUN_SECRET= diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 76aae754..70ebcf20 100755 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -16,9 +16,9 @@ class Controller extends BaseController use AuthorizesRequests, DispatchesJobs, ValidatesRequests; - public function successResponse(array $options = []): \Illuminate\Http\JsonResponse + public function successResponse(array $data = []): \Illuminate\Http\JsonResponse { - return response()->json(); + return response()->json($data); } public function noContentResponse(): Response @@ -26,9 +26,9 @@ public function noContentResponse(): Response return response()->noContent(); } - public function errorResponse(array $options = []): \Illuminate\Http\JsonResponse + public function errorResponse(array $data = []): \Illuminate\Http\JsonResponse { - return response()->json(); + return response()->json($data, Response::HTTP_BAD_REQUEST); } public function unauthorizedResponse(): \Illuminate\Http\JsonResponse diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index e5426a43..36e30362 100755 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -22,6 +22,7 @@ use Illuminate\Http\Response; use Illuminate\Support\Facades\Crypt; use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\Mail; use Tymon\JWTAuth\Facades\JWTAuth; /** @@ -278,15 +279,22 @@ public function listVideos(HttpRequestRunner $requestRunner) return $this->unauthorizedResponse(); } - public function generateOtp(Request $request, Otp $otp): object + public function generateOtp(Request $request, Otp $otp) { $identifier = (string) $request->get('identifier'); - return $otp->generate( + $token = $otp->generate( $identifier, config('services.otp.digits'), config('services.otp.validity') ); + + try { + Mail::to($identifier)->send(new \App\Mail\OtpWasGenerated($token->token)); + } catch (\Exception $exception) { + Log::debug('Error sending email', ['e' => $exception]); + return $this->errorResponse(['message' => 'There was an error processing this request. Please try again.']); + } } public function validateOtp(Request $request, Otp $otp): object diff --git a/app/Mail/OtpWasGenerated.php b/app/Mail/OtpWasGenerated.php new file mode 100644 index 00000000..1dc9f382 --- /dev/null +++ b/app/Mail/OtpWasGenerated.php @@ -0,0 +1,48 @@ +token = $token; + } + + public function envelope(): Envelope + { + return new Envelope( + from: new Address('cookbookshq@gmail.com', 'CookbooksHQ'), + subject: 'Your OTP', + ); + } + + /** + * Get the message content definition. + */ + public function content(): Content + { + return new Content( + view: 'emails.send-otp', + with: [ + 'token' => $this->token + ] + ); + } +} diff --git a/composer.json b/composer.json index 1b3460e8..ccc391d5 100755 --- a/composer.json +++ b/composer.json @@ -15,7 +15,7 @@ "guzzlehttp/guzzle": "7.4.5", "symfony/console": "^6.0.3", "doctrine/dbal": "^3.0", - "symfony/http-kernel": "^6.0", + "symfony/http-kernel": "^6.3", "ext-exif": "*", "laravel/tinker": "^2.5", "ext-json": "*", @@ -32,7 +32,9 @@ "sentry/sentry-laravel": "^3.1", "ipinfo/ipinfolaravel": "^2.4", "spatie/laravel-ignition": "^2.1", - "ichtrojan/laravel-otp": "^1.4" + "ichtrojan/laravel-otp": "^1.4", + "symfony/mailgun-mailer": "^6.3", + "symfony/http-client": "^6.3" }, "require-dev": { "mockery/mockery": "^1.4.2", diff --git a/composer.lock b/composer.lock index 954dc4f4..6604e884 100755 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c52f58b8d853fbde39289688cf405e1f", + "content-hash": "cbaa099e6b60953f3d5c207308352615", "packages": [ { "name": "aws/aws-crt-php", - "version": "v1.2.1", + "version": "v1.2.2", "source": { "type": "git", "url": "https://github.com/awslabs/aws-crt-php.git", - "reference": "1926277fc71d253dfa820271ac5987bdb193ccf5" + "reference": "2f1dc7b7eda080498be96a4a6d683a41583030e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/1926277fc71d253dfa820271ac5987bdb193ccf5", - "reference": "1926277fc71d253dfa820271ac5987bdb193ccf5", + "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/2f1dc7b7eda080498be96a4a6d683a41583030e9", + "reference": "2f1dc7b7eda080498be96a4a6d683a41583030e9", "shasum": "" }, "require": { @@ -56,22 +56,22 @@ ], "support": { "issues": "https://github.com/awslabs/aws-crt-php/issues", - "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.1" + "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.2" }, - "time": "2023-03-24T20:22:19+00:00" + "time": "2023-07-20T16:49:55+00:00" }, { "name": "aws/aws-sdk-php", - "version": "3.270.0", + "version": "3.279.2", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "edea7a2b0cc787dafa23b28215f3819362c9dcde" + "reference": "ebd5e47c5be0425bb5cf4f80737850ed74767107" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/edea7a2b0cc787dafa23b28215f3819362c9dcde", - "reference": "edea7a2b0cc787dafa23b28215f3819362c9dcde", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/ebd5e47c5be0425bb5cf4f80737850ed74767107", + "reference": "ebd5e47c5be0425bb5cf4f80737850ed74767107", "shasum": "" }, "require": { @@ -80,11 +80,11 @@ "ext-pcre": "*", "ext-simplexml": "*", "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", - "guzzlehttp/promises": "^1.4.0", + "guzzlehttp/promises": "^1.4.0 || ^2.0", "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", "mtdowling/jmespath.php": "^2.6", - "php": ">=5.5", - "psr/http-message": "^1.0" + "php": ">=7.2.5", + "psr/http-message": "^1.0 || ^2.0" }, "require-dev": { "andrewsville/php-token-reflection": "^1.4", @@ -99,7 +99,7 @@ "ext-sockets": "*", "nette/neon": "^2.3", "paragonie/random_compat": ">= 2", - "phpunit/phpunit": "^4.8.35 || ^5.6.3 || ^9.5", + "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5", "psr/cache": "^1.0", "psr/simple-cache": "^1.0", "sebastian/comparator": "^1.2.3 || ^4.0", @@ -151,9 +151,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.270.0" + "source": "https://github.com/aws/aws-sdk-php/tree/3.279.2" }, - "time": "2023-05-19T18:23:56+00:00" + "time": "2023-08-18T18:13:09+00:00" }, { "name": "brick/math", @@ -446,16 +446,16 @@ }, { "name": "doctrine/dbal", - "version": "3.6.2", + "version": "3.6.6", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "b4bd1cfbd2b916951696d82e57d054394d84864c" + "reference": "63646ffd71d1676d2f747f871be31b7e921c7864" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/b4bd1cfbd2b916951696d82e57d054394d84864c", - "reference": "b4bd1cfbd2b916951696d82e57d054394d84864c", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/63646ffd71d1676d2f747f871be31b7e921c7864", + "reference": "63646ffd71d1676d2f747f871be31b7e921c7864", "shasum": "" }, "require": { @@ -468,13 +468,14 @@ "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "11.1.0", + "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", - "jetbrains/phpstorm-stubs": "2022.3", - "phpstan/phpstan": "1.10.9", + "jetbrains/phpstorm-stubs": "2023.1", + "phpstan/phpstan": "1.10.29", "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.6", + "phpunit/phpunit": "9.6.9", "psalm/plugin-phpunit": "0.18.4", + "slevomat/coding-standard": "8.13.1", "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^5.4|^6.0", "symfony/console": "^4.4|^5.4|^6.0", @@ -538,7 +539,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.6.2" + "source": "https://github.com/doctrine/dbal/tree/3.6.6" }, "funding": [ { @@ -554,29 +555,33 @@ "type": "tidelift" } ], - "time": "2023-04-14T07:25:38+00:00" + "time": "2023-08-17T05:38:17+00:00" }, { "name": "doctrine/deprecations", - "version": "v1.0.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5|^8.5|^9.5", - "psr/log": "^1|^2|^3" + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -595,9 +600,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" }, - "time": "2022-05-02T15:47:09+00:00" + "time": "2023-06-03T09:27:29+00:00" }, { "name": "doctrine/event-manager", @@ -692,28 +697,28 @@ }, { "name": "doctrine/inflector", - "version": "2.0.6", + "version": "2.0.8", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024" + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", - "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^10", + "doctrine/coding-standard": "^11.0", "phpstan/phpstan": "^1.8", "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.3", "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25" + "vimeo/psalm": "^4.25 || ^5.4" }, "type": "library", "autoload": { @@ -763,7 +768,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.6" + "source": "https://github.com/doctrine/inflector/tree/2.0.8" }, "funding": [ { @@ -779,7 +784,7 @@ "type": "tidelift" } ], - "time": "2022-10-20T09:10:12+00:00" + "time": "2023-06-16T13:40:37+00:00" }, { "name": "doctrine/lexer", @@ -860,16 +865,16 @@ }, { "name": "dragonmantank/cron-expression", - "version": "v3.3.2", + "version": "v3.3.3", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8" + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/782ca5968ab8b954773518e9e49a6f892a34b2a8", - "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", "shasum": "" }, "require": { @@ -909,7 +914,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.2" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" }, "funding": [ { @@ -917,7 +922,7 @@ "type": "github" } ], - "time": "2022-09-10T18:51:20+00:00" + "time": "2023-08-10T19:36:49+00:00" }, { "name": "egulias/email-validator", @@ -988,16 +993,16 @@ }, { "name": "filp/whoops", - "version": "2.15.2", + "version": "2.15.3", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "aac9304c5ed61bf7b1b7a6064bf9806ab842ce73" + "reference": "c83e88a30524f9360b11f585f71e6b17313b7187" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/aac9304c5ed61bf7b1b7a6064bf9806ab842ce73", - "reference": "aac9304c5ed61bf7b1b7a6064bf9806ab842ce73", + "url": "https://api.github.com/repos/filp/whoops/zipball/c83e88a30524f9360b11f585f71e6b17313b7187", + "reference": "c83e88a30524f9360b11f585f71e6b17313b7187", "shasum": "" }, "require": { @@ -1047,7 +1052,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.2" + "source": "https://github.com/filp/whoops/tree/2.15.3" }, "funding": [ { @@ -1055,7 +1060,7 @@ "type": "github" } ], - "time": "2023-04-12T12:00:00+00:00" + "time": "2023-07-13T12:00:00+00:00" }, { "name": "fruitcake/php-cors", @@ -1316,16 +1321,16 @@ }, { "name": "guzzlehttp/promises", - "version": "1.5.2", + "version": "1.5.3", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "b94b2807d85443f9719887892882d0329d1e2598" + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598", - "reference": "b94b2807d85443f9719887892882d0329d1e2598", + "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", "shasum": "" }, "require": { @@ -1335,11 +1340,6 @@ "symfony/phpunit-bridge": "^4.4 || ^5.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, "autoload": { "files": [ "src/functions_include.php" @@ -1380,7 +1380,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.2" + "source": "https://github.com/guzzle/promises/tree/1.5.3" }, "funding": [ { @@ -1396,20 +1396,20 @@ "type": "tidelift" } ], - "time": "2022-08-28T14:55:35+00:00" + "time": "2023-05-21T12:31:43+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.5.0", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6" + "reference": "8bd7c33a0734ae1c5d074360512beb716bef3f77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/8bd7c33a0734ae1c5d074360512beb716bef3f77", + "reference": "8bd7c33a0734ae1c5d074360512beb716bef3f77", "shasum": "" }, "require": { @@ -1496,7 +1496,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.5.0" + "source": "https://github.com/guzzle/psr7/tree/2.6.0" }, "funding": [ { @@ -1512,7 +1512,7 @@ "type": "tidelift" } ], - "time": "2023-04-17T16:11:26+00:00" + "time": "2023-08-03T15:06:02+00:00" }, { "name": "guzzlehttp/uri-template", @@ -1763,32 +1763,33 @@ }, { "name": "ipinfo/ipinfo", - "version": "v2.3.1", + "version": "v3.1.1", "source": { "type": "git", "url": "https://github.com/ipinfo/php.git", - "reference": "8a8e85fbc85f10101ef9ce58c0350f31c4a8e3c5" + "reference": "61653a4306019022d1d3273c26ca4e0b8039b9e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ipinfo/php/zipball/8a8e85fbc85f10101ef9ce58c0350f31c4a8e3c5", - "reference": "8a8e85fbc85f10101ef9ce58c0350f31c4a8e3c5", + "url": "https://api.github.com/repos/ipinfo/php/zipball/61653a4306019022d1d3273c26ca4e0b8039b9e9", + "reference": "61653a4306019022d1d3273c26ca4e0b8039b9e9", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/guzzle": "^6.3||^7.0", - "php": ">=7.3", - "sabre/cache": "^1.0" + "php": ">=8.0", + "symfony/cache": "^6.3", + "symfony/http-foundation": "^6.2" }, "require-dev": { - "phpunit/phpunit": ">=8 <10", + "phpunit/phpunit": "^10.0.0", "squizlabs/php_codesniffer": "^3.5.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.1.1-dev" } }, "autoload": { @@ -1812,6 +1813,12 @@ "email": "uman@mslm.io", "homepage": "https://github.com/UmanShahzad", "role": "Developer" + }, + { + "name": "Umar Farooq", + "email": "umar@ipinfo.io", + "homepage": "https://github.com/rm-Umar", + "role": "Developer" } ], "description": "The official PHP library for IPinfo, the most reliable, accurate, and in-depth source of IP address data available anywhere. We process terabytes of data to produce our custom IP geolocation, company, carrier and IP type data sets. Visit our developer docs at https://ipinfo.io/developers.", @@ -1821,27 +1828,27 @@ ], "support": { "issues": "https://github.com/ipinfo/php/issues", - "source": "https://github.com/ipinfo/php/tree/v2.3.1" + "source": "https://github.com/ipinfo/php/tree/v3.1.1" }, - "time": "2022-06-27T12:47:32+00:00" + "time": "2023-08-03T09:18:01+00:00" }, { "name": "ipinfo/ipinfolaravel", - "version": "v2.5.0", + "version": "v2.6.0", "source": { "type": "git", "url": "https://github.com/ipinfo/laravel.git", - "reference": "8559f784986ca8f7a8c4f86a3de3ba6909db6e34" + "reference": "77f184337229e38ffe29de5f2640b52554c04c9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ipinfo/laravel/zipball/8559f784986ca8f7a8c4f86a3de3ba6909db6e34", - "reference": "8559f784986ca8f7a8c4f86a3de3ba6909db6e34", + "url": "https://api.github.com/repos/ipinfo/laravel/zipball/77f184337229e38ffe29de5f2640b52554c04c9c", + "reference": "77f184337229e38ffe29de5f2640b52554c04c9c", "shasum": "" }, "require": { "illuminate/support": ">=7 <11", - "ipinfo/ipinfo": "^2.3.1" + "ipinfo/ipinfo": "^3.1.0" }, "require-dev": { "mockery/mockery": "^1.4.2", @@ -1895,9 +1902,9 @@ ], "support": { "issues": "https://github.com/ipinfo/laravel/issues", - "source": "https://github.com/ipinfo/laravel/tree/v2.5.0" + "source": "https://github.com/ipinfo/laravel/tree/v2.6.0" }, - "time": "2023-03-13T12:16:00+00:00" + "time": "2023-07-31T07:26:00+00:00" }, { "name": "jean85/pretty-package-versions", @@ -1960,16 +1967,16 @@ }, { "name": "laravel/framework", - "version": "v10.11.0", + "version": "v10.19.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "21a5b6d9b669f32c10cc8ba776511b5f62599fea" + "reference": "b8557e4a708a1bd2bc8229bd53feecfa2ac1c6fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/21a5b6d9b669f32c10cc8ba776511b5f62599fea", - "reference": "21a5b6d9b669f32c10cc8ba776511b5f62599fea", + "url": "https://api.github.com/repos/laravel/framework/zipball/b8557e4a708a1bd2bc8229bd53feecfa2ac1c6fb", + "reference": "b8557e4a708a1bd2bc8229bd53feecfa2ac1c6fb", "shasum": "" }, "require": { @@ -1987,11 +1994,12 @@ "ext-tokenizer": "*", "fruitcake/php-cors": "^1.2", "guzzlehttp/uri-template": "^1.0", + "laravel/prompts": "^0.1", "laravel/serializable-closure": "^1.3", "league/commonmark": "^2.2.1", "league/flysystem": "^3.8.0", "monolog/monolog": "^3.0", - "nesbot/carbon": "^2.62.1", + "nesbot/carbon": "^2.67", "nunomaduro/termwind": "^1.13", "php": "^8.1", "psr/container": "^1.1.1|^2.0.1", @@ -2070,7 +2078,6 @@ "mockery/mockery": "^1.5.1", "orchestra/testbench-core": "^8.4", "pda/pheanstalk": "^4.0", - "phpstan/phpdoc-parser": "^1.15", "phpstan/phpstan": "^1.4.7", "phpunit/phpunit": "^10.0.7", "predis/predis": "^2.0.2", @@ -2156,20 +2163,68 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-05-16T13:59:23+00:00" + "time": "2023-08-15T13:42:57+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.1.5", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "d880a909df144a4bf5760ebd09aba114f79d9adc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/d880a909df144a4bf5760ebd09aba114f79d9adc", + "reference": "d880a909df144a4bf5760ebd09aba114f79d9adc", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/collections": "^10.0|^11.0", + "php": "^8.1", + "symfony/console": "^6.2" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.1.5" + }, + "time": "2023-08-15T14:29:44+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.3.0", + "version": "v1.3.1", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37" + "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", - "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/e5a3057a5591e1cfe8183034b0203921abe2c902", + "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902", "shasum": "" }, "require": { @@ -2216,20 +2271,20 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2023-01-30T18:31:20+00:00" + "time": "2023-07-14T13:56:28+00:00" }, { "name": "laravel/socialite", - "version": "v5.6.1", + "version": "v5.8.0", "source": { "type": "git", "url": "https://github.com/laravel/socialite.git", - "reference": "a14a177f2cc71d8add71e2b19e00800e83bdda09" + "reference": "50148edf24b6cd3e428aa9bc06a5d915b24376bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/socialite/zipball/a14a177f2cc71d8add71e2b19e00800e83bdda09", - "reference": "a14a177f2cc71d8add71e2b19e00800e83bdda09", + "url": "https://api.github.com/repos/laravel/socialite/zipball/50148edf24b6cd3e428aa9bc06a5d915b24376bb", + "reference": "50148edf24b6cd3e428aa9bc06a5d915b24376bb", "shasum": "" }, "require": { @@ -2244,6 +2299,7 @@ "require-dev": { "mockery/mockery": "^1.0", "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0", + "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^8.0|^9.3" }, "type": "library", @@ -2285,7 +2341,7 @@ "issues": "https://github.com/laravel/socialite/issues", "source": "https://github.com/laravel/socialite" }, - "time": "2023-01-20T15:42:35+00:00" + "time": "2023-07-14T14:22:58+00:00" }, { "name": "laravel/tinker", @@ -2899,26 +2955,26 @@ }, { "name": "league/mime-type-detection", - "version": "1.11.0", + "version": "1.13.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" + "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/a6dfb1194a2946fcdc1f38219445234f65b35c96", + "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96", "shasum": "" }, "require": { "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.2", "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" }, "type": "library", "autoload": { @@ -2939,7 +2995,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.13.0" }, "funding": [ { @@ -2951,7 +3007,7 @@ "type": "tidelift" } ], - "time": "2022-04-17T13:12:02+00:00" + "time": "2023-08-05T12:09:49+00:00" }, { "name": "league/oauth1-client", @@ -3031,7 +3087,7 @@ }, { "name": "maennchen/zipstream-php", - "version": "v2.4.0", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/maennchen/ZipStream-PHP.git", @@ -3093,7 +3149,7 @@ ], "support": { "issues": "https://github.com/maennchen/ZipStream-PHP/issues", - "source": "https://github.com/maennchen/ZipStream-PHP/tree/v2.4.0" + "source": "https://github.com/maennchen/ZipStream-PHP/tree/2.4.0" }, "funding": [ { @@ -3109,16 +3165,16 @@ }, { "name": "monolog/monolog", - "version": "3.3.1", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "9b5daeaffce5b926cac47923798bba91059e60e2" + "reference": "e2392369686d420ca32df3803de28b5d6f76867d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/9b5daeaffce5b926cac47923798bba91059e60e2", - "reference": "9b5daeaffce5b926cac47923798bba91059e60e2", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/e2392369686d420ca32df3803de28b5d6f76867d", + "reference": "e2392369686d420ca32df3803de28b5d6f76867d", "shasum": "" }, "require": { @@ -3133,7 +3189,7 @@ "doctrine/couchdb": "~1.0@dev", "elasticsearch/elasticsearch": "^7 || ^8", "ext-json": "*", - "graylog2/gelf-php": "^1.4.2 || ^2@dev", + "graylog2/gelf-php": "^1.4.2 || ^2.0", "guzzlehttp/guzzle": "^7.4.5", "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", @@ -3141,7 +3197,7 @@ "phpstan/phpstan": "^1.9", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "^9.5.26", + "phpunit/phpunit": "^10.1", "predis/predis": "^1.1 || ^2", "ruflin/elastica": "^7", "symfony/mailer": "^5.4 || ^6", @@ -3194,7 +3250,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.3.1" + "source": "https://github.com/Seldaek/monolog/tree/3.4.0" }, "funding": [ { @@ -3206,7 +3262,7 @@ "type": "tidelift" } ], - "time": "2023-02-06T13:46:10+00:00" + "time": "2023-06-21T08:46:11+00:00" }, { "name": "mtdowling/jmespath.php", @@ -3401,25 +3457,29 @@ }, { "name": "nesbot/carbon", - "version": "2.66.0", + "version": "2.69.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "496712849902241f04902033b0441b269effe001" + "reference": "4308217830e4ca445583a37d1bf4aff4153fa81c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/496712849902241f04902033b0441b269effe001", - "reference": "496712849902241f04902033b0441b269effe001", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4308217830e4ca445583a37d1bf4aff4153fa81c", + "reference": "4308217830e4ca445583a37d1bf4aff4153fa81c", "shasum": "" }, "require": { "ext-json": "*", "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16", "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" }, + "provide": { + "psr/clock-implementation": "1.0" + }, "require-dev": { "doctrine/dbal": "^2.0 || ^3.1.4", "doctrine/orm": "^2.7", @@ -3499,25 +3559,25 @@ "type": "tidelift" } ], - "time": "2023-01-29T18:53:47+00:00" + "time": "2023-08-03T09:00:52+00:00" }, { "name": "nette/schema", - "version": "v1.2.3", + "version": "v1.2.4", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f" + "reference": "c9ff517a53903b3d4e29ec547fb20feecb05b8ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", - "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", + "url": "https://api.github.com/repos/nette/schema/zipball/c9ff517a53903b3d4e29ec547fb20feecb05b8ab", + "reference": "c9ff517a53903b3d4e29ec547fb20feecb05b8ab", "shasum": "" }, "require": { "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.3" + "php": "7.1 - 8.3" }, "require-dev": { "nette/tester": "^2.3 || ^2.4", @@ -3559,26 +3619,26 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.3" + "source": "https://github.com/nette/schema/tree/v1.2.4" }, - "time": "2022-10-13T01:24:26+00:00" + "time": "2023-08-05T18:56:25+00:00" }, { "name": "nette/utils", - "version": "v4.0.0", + "version": "v4.0.1", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e" + "reference": "9124157137da01b1f5a5a22d6486cb975f26db7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/cacdbf5a91a657ede665c541eda28941d4b09c1e", - "reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e", + "url": "https://api.github.com/repos/nette/utils/zipball/9124157137da01b1f5a5a22d6486cb975f26db7e", + "reference": "9124157137da01b1f5a5a22d6486cb975f26db7e", "shasum": "" }, "require": { - "php": ">=8.0 <8.3" + "php": ">=8.0 <8.4" }, "conflict": { "nette/finder": "<3", @@ -3586,7 +3646,7 @@ }, "require-dev": { "jetbrains/phpstorm-attributes": "dev-master", - "nette/tester": "^2.4", + "nette/tester": "^2.5", "phpstan/phpstan": "^1.0", "tracy/tracy": "^2.9" }, @@ -3646,22 +3706,22 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.0" + "source": "https://github.com/nette/utils/tree/v4.0.1" }, - "time": "2023-02-02T10:41:53+00:00" + "time": "2023-07-30T15:42:21+00:00" }, { "name": "nikic/php-parser", - "version": "v4.15.5", + "version": "v4.17.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e" + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/11e2663a5bc9db5d714eedb4277ee300403b4a9e", - "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", "shasum": "" }, "require": { @@ -3702,46 +3762,43 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.5" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" }, - "time": "2023-05-19T20:20:00+00:00" + "time": "2023-08-13T19:53:39+00:00" }, { "name": "nunomaduro/collision", - "version": "v7.5.2", + "version": "v7.8.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "76b3cabda0aabda455fc3b9db6c3615f5a87c7ff" + "reference": "61553ad3260845d7e3e49121b7074619233d361b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/76b3cabda0aabda455fc3b9db6c3615f5a87c7ff", - "reference": "76b3cabda0aabda455fc3b9db6c3615f5a87c7ff", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/61553ad3260845d7e3e49121b7074619233d361b", + "reference": "61553ad3260845d7e3e49121b7074619233d361b", "shasum": "" }, "require": { - "filp/whoops": "^2.15.2", + "filp/whoops": "^2.15.3", "nunomaduro/termwind": "^1.15.1", "php": "^8.1.0", - "symfony/console": "^6.2.8" - }, - "conflict": { - "phpunit/phpunit": "<10.1.2" + "symfony/console": "^6.3.2" }, "require-dev": { - "brianium/paratest": "^7.1.3", - "laravel/framework": "^10.8.0", - "laravel/pint": "^1.9.0", - "laravel/sail": "^1.21.4", - "laravel/sanctum": "^3.2.1", + "brianium/paratest": "^7.2.4", + "laravel/framework": "^10.17.1", + "laravel/pint": "^1.10.5", + "laravel/sail": "^1.23.1", + "laravel/sanctum": "^3.2.5", "laravel/tinker": "^2.8.1", - "nunomaduro/larastan": "^2.6.0", - "orchestra/testbench-core": "^8.5.0", - "pestphp/pest": "^2.5.2", - "phpunit/phpunit": "^10.1.1", + "nunomaduro/larastan": "^2.6.4", + "orchestra/testbench-core": "^8.5.9", + "pestphp/pest": "^2.12.1", + "phpunit/phpunit": "^10.3.1", "sebastian/environment": "^6.0.1", - "spatie/laravel-ignition": "^2.1.0" + "spatie/laravel-ignition": "^2.2.0" }, "type": "library", "extra": { @@ -3800,7 +3857,7 @@ "type": "patreon" } ], - "time": "2023-04-22T22:12:40+00:00" + "time": "2023-08-07T08:03:21+00:00" }, { "name": "nunomaduro/termwind", @@ -4037,16 +4094,16 @@ }, { "name": "php-http/discovery", - "version": "1.18.1", + "version": "1.19.1", "source": { "type": "git", "url": "https://github.com/php-http/discovery.git", - "reference": "f258b3a1d16acb7b21f3b42d7a2494a733365237" + "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/f258b3a1d16acb7b21f3b42d7a2494a733365237", - "reference": "f258b3a1d16acb7b21f3b42d7a2494a733365237", + "url": "https://api.github.com/repos/php-http/discovery/zipball/57f3de01d32085fea20865f9b16fb0e69347c39e", + "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e", "shasum": "" }, "require": { @@ -4109,9 +4166,9 @@ ], "support": { "issues": "https://github.com/php-http/discovery/issues", - "source": "https://github.com/php-http/discovery/tree/1.18.1" + "source": "https://github.com/php-http/discovery/tree/1.19.1" }, - "time": "2023-05-17T08:53:10+00:00" + "time": "2023-07-11T07:02:26+00:00" }, { "name": "php-http/httplug", @@ -4932,25 +4989,25 @@ }, { "name": "psr/simple-cache", - "version": "1.0.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -4965,7 +5022,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for simple caching", @@ -4977,22 +5034,22 @@ "simple-cache" ], "support": { - "source": "https://github.com/php-fig/simple-cache/tree/master" + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" }, - "time": "2017-10-23T01:57:42+00:00" + "time": "2021-10-29T13:26:27+00:00" }, { "name": "psy/psysh", - "version": "v0.11.17", + "version": "v0.11.20", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "3dc5d4018dabd80bceb8fe1e3191ba8460569f0a" + "reference": "0fa27040553d1d280a67a4393194df5228afea5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/3dc5d4018dabd80bceb8fe1e3191ba8460569f0a", - "reference": "3dc5d4018dabd80bceb8fe1e3191ba8460569f0a", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/0fa27040553d1d280a67a4393194df5228afea5b", + "reference": "0fa27040553d1d280a67a4393194df5228afea5b", "shasum": "" }, "require": { @@ -5053,9 +5110,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.17" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.20" }, - "time": "2023-05-05T20:02:42+00:00" + "time": "2023-07-31T14:32:22+00:00" }, { "name": "ralouphie/getallheaders", @@ -5282,86 +5339,23 @@ ], "time": "2023-04-15T23:01:58+00:00" }, - { - "name": "sabre/cache", - "version": "1.0.4", - "source": { - "type": "git", - "url": "https://github.com/sabre-io/cache.git", - "reference": "be9b6a2aa3bf07098ea12bf758ef62b3eade8101" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sabre-io/cache/zipball/be9b6a2aa3bf07098ea12bf758ef62b3eade8101", - "reference": "be9b6a2aa3bf07098ea12bf758ef62b3eade8101", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "psr/simple-cache": "^1.0" - }, - "provide": { - "psr/simple-cache-implementation": "~1.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2.17.1", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Sabre\\Cache\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Evert Pot", - "email": "me@evertpot.com", - "homepage": "https://evertpot.com/", - "role": "Developer" - } - ], - "description": "Simple cache abstraction layer implementing PSR-16", - "homepage": "http://sabre.io/dav/", - "keywords": [ - "apc", - "apcu", - "cache", - "memcache", - "memcached", - "psr-16", - "sabre", - "simple-cache" - ], - "support": { - "forum": "https://groups.google.com/group/sabredav-discuss", - "issues": "https://github.com/sabre-io/cache/issues", - "source": "https://github.com/fruux/sabre-skel" - }, - "time": "2022-06-24T09:25:13+00:00" - }, { "name": "sentry/sdk", - "version": "3.3.0", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-php-sdk.git", - "reference": "d0678fc7274dbb03046ed05cb24eb92945bedf8e" + "reference": "cd91b752f07c4bab9fb3b173f81af68a78a78d6d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/d0678fc7274dbb03046ed05cb24eb92945bedf8e", - "reference": "d0678fc7274dbb03046ed05cb24eb92945bedf8e", + "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/cd91b752f07c4bab9fb3b173f81af68a78a78d6d", + "reference": "cd91b752f07c4bab9fb3b173f81af68a78a78d6d", "shasum": "" }, "require": { "http-interop/http-factory-guzzle": "^1.0", - "sentry/sentry": "^3.9", + "sentry/sentry": "^3.19", "symfony/http-client": "^4.3|^5.0|^6.0" }, "type": "metapackage", @@ -5388,7 +5382,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-php-sdk/issues", - "source": "https://github.com/getsentry/sentry-php-sdk/tree/3.3.0" + "source": "https://github.com/getsentry/sentry-php-sdk/tree/3.5.0" }, "funding": [ { @@ -5400,26 +5394,26 @@ "type": "custom" } ], - "time": "2022-10-11T09:05:00+00:00" + "time": "2023-06-12T17:50:36+00:00" }, { "name": "sentry/sentry", - "version": "3.18.2", + "version": "3.21.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-php.git", - "reference": "c634615c09a69bfdc3bb5f6ffeee78db3711167c" + "reference": "624aafc22b84b089ffa43b71fb01e0096505ec4f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/c634615c09a69bfdc3bb5f6ffeee78db3711167c", - "reference": "c634615c09a69bfdc3bb5f6ffeee78db3711167c", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/624aafc22b84b089ffa43b71fb01e0096505ec4f", + "reference": "624aafc22b84b089ffa43b71fb01e0096505ec4f", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", - "guzzlehttp/promises": "^1.4", + "guzzlehttp/promises": "^1.5.3|^2.0", "jean85/pretty-package-versions": "^1.5|^2.0.4", "php": "^7.2|^8.0", "php-http/async-client-implementation": "^1.0", @@ -5457,11 +5451,6 @@ "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler." }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.13.x-dev" - } - }, "autoload": { "files": [ "src/functions.php" @@ -5493,7 +5482,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-php/issues", - "source": "https://github.com/getsentry/sentry-php/tree/3.18.2" + "source": "https://github.com/getsentry/sentry-php/tree/3.21.0" }, "funding": [ { @@ -5505,28 +5494,28 @@ "type": "custom" } ], - "time": "2023-05-17T10:56:54+00:00" + "time": "2023-07-31T15:31:24+00:00" }, { "name": "sentry/sentry-laravel", - "version": "3.4.0", + "version": "3.7.3", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-laravel.git", - "reference": "50ec5eae5d09d182d2d048981d0b45c24579a7f7" + "reference": "2aee4ad217be8ef04ffcde6e9f7dd17af5a3b0bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/50ec5eae5d09d182d2d048981d0b45c24579a7f7", - "reference": "50ec5eae5d09d182d2d048981d0b45c24579a7f7", + "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/2aee4ad217be8ef04ffcde6e9f7dd17af5a3b0bf", + "reference": "2aee4ad217be8ef04ffcde6e9f7dd17af5a3b0bf", "shasum": "" }, "require": { "illuminate/support": "^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0", "nyholm/psr7": "^1.0", "php": "^7.2 | ^8.0", - "sentry/sdk": "^3.3", - "sentry/sentry": "^3.16", + "sentry/sdk": "^3.4", + "sentry/sentry": "^3.20.1", "symfony/psr-http-message-bridge": "^1.0 | ^2.0" }, "require-dev": { @@ -5534,6 +5523,7 @@ "laravel/framework": "^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0", "mockery/mockery": "^1.3", "orchestra/testbench": "^4.7 | ^5.1 | ^6.0 | ^7.0 | ^8.0", + "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^8.4 | ^9.3" }, "type": "library", @@ -5583,7 +5573,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-laravel/issues", - "source": "https://github.com/getsentry/sentry-laravel/tree/3.4.0" + "source": "https://github.com/getsentry/sentry-laravel/tree/3.7.3" }, "funding": [ { @@ -5595,7 +5585,7 @@ "type": "custom" } ], - "time": "2023-05-08T14:15:56+00:00" + "time": "2023-08-03T10:10:23+00:00" }, { "name": "socialiteproviders/instagram", @@ -5813,21 +5803,21 @@ }, { "name": "socialiteproviders/twitter", - "version": "4.1.1", + "version": "4.1.2", "source": { "type": "git", "url": "https://github.com/SocialiteProviders/Twitter.git", - "reference": "e5edf2b6e3f37e64be6488111629ed5e41e645ad" + "reference": "54ddc36c1475bbdc111a89edee1468e3c9cf1229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SocialiteProviders/Twitter/zipball/e5edf2b6e3f37e64be6488111629ed5e41e645ad", - "reference": "e5edf2b6e3f37e64be6488111629ed5e41e645ad", + "url": "https://api.github.com/repos/SocialiteProviders/Twitter/zipball/54ddc36c1475bbdc111a89edee1468e3c9cf1229", + "reference": "54ddc36c1475bbdc111a89edee1468e3c9cf1229", "shasum": "" }, "require": { "ext-json": "*", - "php": "^7.2 || ^8.0", + "php": "^7.4 || ^8.0", "socialiteproviders/manager": "~4.0" }, "type": "library", @@ -5847,23 +5837,32 @@ } ], "description": "Twitter OAuth1 Provider for Laravel Socialite", + "keywords": [ + "laravel", + "oauth", + "provider", + "socialite", + "twitter" + ], "support": { - "source": "https://github.com/SocialiteProviders/Twitter/tree/4.1.1" + "docs": "https://socialiteproviders.com/twitter", + "issues": "https://github.com/socialiteproviders/providers/issues", + "source": "https://github.com/socialiteproviders/providers" }, - "time": "2021-01-29T05:41:11+00:00" + "time": "2023-05-25T23:12:53+00:00" }, { "name": "spatie/backtrace", - "version": "1.4.0", + "version": "1.5.3", "source": { "type": "git", "url": "https://github.com/spatie/backtrace.git", - "reference": "ec4dd16476b802dbdc6b4467f84032837e316b8c" + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/ec4dd16476b802dbdc6b4467f84032837e316b8c", - "reference": "ec4dd16476b802dbdc6b4467f84032837e316b8c", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/483f76a82964a0431aa836b6ed0edde0c248e3ab", + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab", "shasum": "" }, "require": { @@ -5900,7 +5899,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/backtrace/tree/1.4.0" + "source": "https://github.com/spatie/backtrace/tree/1.5.3" }, "funding": [ { @@ -5912,26 +5911,27 @@ "type": "other" } ], - "time": "2023-03-04T08:57:24+00:00" + "time": "2023-06-28T12:59:17+00:00" }, { "name": "spatie/flare-client-php", - "version": "1.3.6", + "version": "1.4.2", "source": { "type": "git", "url": "https://github.com/spatie/flare-client-php.git", - "reference": "530ac81255af79f114344286e4275f8869c671e2" + "reference": "5f2c6a7a0d2c1d90c12559dc7828fd942911a544" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/530ac81255af79f114344286e4275f8869c671e2", - "reference": "530ac81255af79f114344286e4275f8869c671e2", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5f2c6a7a0d2c1d90c12559dc7828fd942911a544", + "reference": "5f2c6a7a0d2c1d90c12559dc7828fd942911a544", "shasum": "" }, "require": { "illuminate/pipeline": "^8.0|^9.0|^10.0", + "nesbot/carbon": "^2.62.1", "php": "^8.0", - "spatie/backtrace": "^1.2", + "spatie/backtrace": "^1.5.2", "symfony/http-foundation": "^5.0|^6.0", "symfony/mime": "^5.2|^6.0", "symfony/process": "^5.2|^6.0", @@ -5948,7 +5948,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1.x-dev" + "dev-main": "1.3.x-dev" } }, "autoload": { @@ -5973,7 +5973,7 @@ ], "support": { "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.3.6" + "source": "https://github.com/spatie/flare-client-php/tree/1.4.2" }, "funding": [ { @@ -5981,28 +5981,28 @@ "type": "github" } ], - "time": "2023-04-12T07:57:12+00:00" + "time": "2023-07-28T08:07:24+00:00" }, { "name": "spatie/ignition", - "version": "1.7.0", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "f747d83c6d7cb6229b462f3ddbb3a82dc0db0f78" + "reference": "de24ff1e01814d5043bd6eb4ab36a5a852a04973" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/f747d83c6d7cb6229b462f3ddbb3a82dc0db0f78", - "reference": "f747d83c6d7cb6229b462f3ddbb3a82dc0db0f78", + "url": "https://api.github.com/repos/spatie/ignition/zipball/de24ff1e01814d5043bd6eb4ab36a5a852a04973", + "reference": "de24ff1e01814d5043bd6eb4ab36a5a852a04973", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", "php": "^8.0", - "spatie/backtrace": "^1.4", - "spatie/flare-client-php": "^1.1", + "spatie/backtrace": "^1.5.3", + "spatie/flare-client-php": "^1.4.0", "symfony/console": "^5.4|^6.0", "symfony/var-dumper": "^5.4|^6.0" }, @@ -6014,7 +6014,7 @@ "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", "psr/simple-cache-implementation": "*", - "symfony/cache": "^6.2", + "symfony/cache": "^6.0", "symfony/process": "^5.4|^6.0", "vlucas/phpdotenv": "^5.5" }, @@ -6064,20 +6064,20 @@ "type": "github" } ], - "time": "2023-05-04T13:20:26+00:00" + "time": "2023-06-28T13:24:59+00:00" }, { "name": "spatie/laravel-ignition", - "version": "2.1.2", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "2f99fa6b732a6049e78ed34e4608ce589605ae54" + "reference": "dd15fbe82ef5392798941efae93c49395a87d943" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/2f99fa6b732a6049e78ed34e4608ce589605ae54", - "reference": "2f99fa6b732a6049e78ed34e4608ce589605ae54", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/dd15fbe82ef5392798941efae93c49395a87d943", + "reference": "dd15fbe82ef5392798941efae93c49395a87d943", "shasum": "" }, "require": { @@ -6087,7 +6087,7 @@ "illuminate/support": "^10.0", "php": "^8.1", "spatie/flare-client-php": "^1.3.5", - "spatie/ignition": "^1.5.0", + "spatie/ignition": "^1.9", "symfony/console": "^6.2.3", "symfony/var-dumper": "^6.2.3" }, @@ -6156,27 +6156,199 @@ "type": "github" } ], - "time": "2023-05-09T07:19:31+00:00" + "time": "2023-06-28T13:51:52+00:00" + }, + { + "name": "symfony/cache", + "version": "v6.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "d176b97600860df13e851538c2df2ad88e9e5ca9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/d176b97600860df13e851538c2df2ad88e9e5ca9", + "reference": "d176b97600860df13e851538c2df2ad88e9e5ca9", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/cache": "^2.0|^3.0", + "psr/log": "^1.1|^2|^3", + "symfony/cache-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3", + "symfony/var-exporter": "^6.2.10" + }, + "conflict": { + "doctrine/dbal": "<2.13.1", + "symfony/dependency-injection": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/var-dumper": "<5.4" + }, + "provide": { + "psr/cache-implementation": "2.0|3.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0", + "symfony/cache-implementation": "1.1|2.0|3.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/dbal": "^2.13.1|^3.0", + "predis/predis": "^1.1|^2.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/filesystem": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/messenger": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Cache\\": "" + }, + "classmap": [ + "Traits/ValueWrapper.php" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", + "homepage": "https://symfony.com", + "keywords": [ + "caching", + "psr6" + ], + "support": { + "source": "https://github.com/symfony/cache/tree/v6.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-27T16:19:14+00:00" + }, + { + "name": "symfony/cache-contracts", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "ad945640ccc0ae6e208bcea7d7de4b39b569896b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/ad945640ccc0ae6e208bcea7d7de4b39b569896b", + "reference": "ad945640ccc0ae6e208bcea7d7de4b39b569896b", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/cache": "^3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Cache\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to caching", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/cache-contracts/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/console", - "version": "v6.2.10", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "12288d9f4500f84a4d02254d4aa968b15488476f" + "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/12288d9f4500f84a4d02254d4aa968b15488476f", - "reference": "12288d9f4500f84a4d02254d4aa968b15488476f", + "url": "https://api.github.com/repos/symfony/console/zipball/aa5d64ad3f63f2e48964fc81ee45cb318a723898", + "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/string": "^5.4|^6.0" }, "conflict": { @@ -6198,12 +6370,6 @@ "symfony/process": "^5.4|^6.0", "symfony/var-dumper": "^5.4|^6.0" }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, "type": "library", "autoload": { "psr-4": { @@ -6236,7 +6402,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.2.10" + "source": "https://github.com/symfony/console/tree/v6.3.2" }, "funding": [ { @@ -6252,20 +6418,20 @@ "type": "tidelift" } ], - "time": "2023-04-28T13:37:43+00:00" + "time": "2023-07-19T20:17:28+00:00" }, { "name": "symfony/css-selector", - "version": "v6.2.7", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "aedf3cb0f5b929ec255d96bbb4909e9932c769e0" + "reference": "883d961421ab1709877c10ac99451632a3d6fa57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/aedf3cb0f5b929ec255d96bbb4909e9932c769e0", - "reference": "aedf3cb0f5b929ec255d96bbb4909e9932c769e0", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/883d961421ab1709877c10ac99451632a3d6fa57", + "reference": "883d961421ab1709877c10ac99451632a3d6fa57", "shasum": "" }, "require": { @@ -6301,7 +6467,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.2.7" + "source": "https://github.com/symfony/css-selector/tree/v6.3.2" }, "funding": [ { @@ -6317,20 +6483,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:44:56+00:00" + "time": "2023-07-12T16:00:22+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { @@ -6339,7 +6505,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -6368,7 +6534,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" }, "funding": [ { @@ -6384,20 +6550,20 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:25:55+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/error-handler", - "version": "v6.2.10", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "8b7e9f124640cb0611624a9383176c3e5f7d8cfb" + "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/8b7e9f124640cb0611624a9383176c3e5f7d8cfb", - "reference": "8b7e9f124640cb0611624a9383176c3e5f7d8cfb", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/85fd65ed295c4078367c784e8a5a6cee30348b7a", + "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a", "shasum": "" }, "require": { @@ -6405,8 +6571,11 @@ "psr/log": "^1|^2|^3", "symfony/var-dumper": "^5.4|^6.0" }, + "conflict": { + "symfony/deprecation-contracts": "<2.5" + }, "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-kernel": "^5.4|^6.0", "symfony/serializer": "^5.4|^6.0" }, @@ -6439,7 +6608,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.2.10" + "source": "https://github.com/symfony/error-handler/tree/v6.3.2" }, "funding": [ { @@ -6455,28 +6624,29 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:46:08+00:00" + "time": "2023-07-16T17:05:46+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.2.8", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339" + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/04046f35fd7d72f9646e721fc2ecb8f9c67d3339", - "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/event-dispatcher-contracts": "^2|^3" + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4" + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", @@ -6489,13 +6659,9 @@ "symfony/error-handler": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/stopwatch": "^5.4|^6.0" }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, "type": "library", "autoload": { "psr-4": { @@ -6522,7 +6688,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.8" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" }, "funding": [ { @@ -6538,33 +6704,30 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:06:02+00:00" + "time": "2023-07-06T06:56:43+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd" + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", - "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", "shasum": "" }, "require": { "php": ">=8.1", "psr/event-dispatcher": "^1" }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -6601,7 +6764,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" }, "funding": [ { @@ -6617,20 +6780,20 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/finder", - "version": "v6.2.7", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb" + "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb", - "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb", + "url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e", + "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e", "shasum": "" }, "require": { @@ -6665,7 +6828,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.2.7" + "source": "https://github.com/symfony/finder/tree/v6.3.3" }, "funding": [ { @@ -6681,28 +6844,32 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:57:23+00:00" + "time": "2023-07-31T08:31:44+00:00" }, { "name": "symfony/http-client", - "version": "v6.2.10", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "3f5545a91c8e79dedd1a06c4b04e1682c80c42f9" + "reference": "15f9f4bad62bfcbe48b5dedd866f04a08fc7ff00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/3f5545a91c8e79dedd1a06c4b04e1682c80c42f9", - "reference": "3f5545a91c8e79dedd1a06c4b04e1682c80c42f9", + "url": "https://api.github.com/repos/symfony/http-client/zipball/15f9f4bad62bfcbe48b5dedd866f04a08fc7ff00", + "reference": "15f9f4bad62bfcbe48b5dedd866f04a08fc7ff00", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-client-contracts": "^3", - "symfony/service-contracts": "^1.0|^2|^3" + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "php-http/discovery": "<1.15", + "symfony/http-foundation": "<6.3" }, "provide": { "php-http/async-client-implementation": "*", @@ -6753,7 +6920,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.2.10" + "source": "https://github.com/symfony/http-client/tree/v6.3.2" }, "funding": [ { @@ -6769,32 +6936,29 @@ "type": "tidelift" } ], - "time": "2023-04-20T13:12:48+00:00" + "time": "2023-07-05T08:41:27+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "df2ecd6cb70e73c1080e6478aea85f5f4da2c48b" + "reference": "3b66325d0176b4ec826bffab57c9037d759c31fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/df2ecd6cb70e73c1080e6478aea85f5f4da2c48b", - "reference": "df2ecd6cb70e73c1080e6478aea85f5f4da2c48b", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/3b66325d0176b4ec826bffab57c9037d759c31fb", + "reference": "3b66325d0176b4ec826bffab57c9037d759c31fb", "shasum": "" }, "require": { "php": ">=8.1" }, - "suggest": { - "symfony/http-client-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -6834,7 +6998,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.3.0" }, "funding": [ { @@ -6850,32 +7014,34 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.2.10", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "49adbb92bcb4e3c2943719d2756271e8b9602acc" + "reference": "43ed99d30f5f466ffa00bdac3f5f7aa9cd7617c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/49adbb92bcb4e3c2943719d2756271e8b9602acc", - "reference": "49adbb92bcb4e3c2943719d2756271e8b9602acc", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/43ed99d30f5f466ffa00bdac3f5f7aa9cd7617c3", + "reference": "43ed99d30f5f466ffa00bdac3f5f7aa9cd7617c3", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" }, "conflict": { "symfony/cache": "<6.2" }, "require-dev": { - "predis/predis": "~1.0", + "doctrine/dbal": "^2.13.1|^3.0", + "predis/predis": "^1.1|^2.0", "symfony/cache": "^5.4|^6.0", "symfony/dependency-injection": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", @@ -6883,9 +7049,6 @@ "symfony/mime": "^5.4|^6.0", "symfony/rate-limiter": "^5.2|^6.0" }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, "type": "library", "autoload": { "psr-4": { @@ -6912,7 +7075,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.2.10" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.2" }, "funding": [ { @@ -6928,29 +7091,29 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:46:08+00:00" + "time": "2023-07-23T21:58:39+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.2.10", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "81064a65a5496f17d2b6984f6519406f98864215" + "reference": "d3b567f0addf695e10b0c6d57564a9bea2e058ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/81064a65a5496f17d2b6984f6519406f98864215", - "reference": "81064a65a5496f17d2b6984f6519406f98864215", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d3b567f0addf695e10b0c6d57564a9bea2e058ee", + "reference": "d3b567f0addf695e10b0c6d57564a9bea2e058ee", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^6.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.3", "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4.21|^6.2.7", + "symfony/http-foundation": "^6.2.7", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -6958,15 +7121,18 @@ "symfony/cache": "<5.4", "symfony/config": "<6.1", "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.2", + "symfony/dependency-injection": "<6.3", "symfony/doctrine-bridge": "<5.4", "symfony/form": "<5.4", "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", "symfony/mailer": "<5.4", "symfony/messenger": "<5.4", "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", "symfony/twig-bridge": "<5.4", "symfony/validator": "<5.4", + "symfony/var-dumper": "<6.3", "twig/twig": "<2.13" }, "provide": { @@ -6975,28 +7141,27 @@ "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", "symfony/browser-kit": "^5.4|^6.0", + "symfony/clock": "^6.2", "symfony/config": "^6.1", "symfony/console": "^5.4|^6.0", "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.2", + "symfony/dependency-injection": "^6.3", "symfony/dom-crawler": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/http-client-contracts": "^2.5|^3", "symfony/process": "^5.4|^6.0", + "symfony/property-access": "^5.4.5|^6.0.5", "symfony/routing": "^5.4|^6.0", + "symfony/serializer": "^6.3", "symfony/stopwatch": "^5.4|^6.0", "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", + "symfony/translation-contracts": "^2.5|^3", "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^6.3", + "symfony/var-exporter": "^6.2", "twig/twig": "^2.13|^3.0.4" }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, "type": "library", "autoload": { "psr-4": { @@ -7023,7 +7188,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.2.10" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.3" }, "funding": [ { @@ -7039,20 +7204,20 @@ "type": "tidelift" } ], - "time": "2023-04-28T13:50:28+00:00" + "time": "2023-07-31T10:33:00+00:00" }, { "name": "symfony/mailer", - "version": "v6.2.8", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "bfcfa015c67e19c6fdb7ca6fe70700af1e740a17" + "reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/bfcfa015c67e19c6fdb7ca6fe70700af1e740a17", - "reference": "bfcfa015c67e19c6fdb7ca6fe70700af1e740a17", + "url": "https://api.github.com/repos/symfony/mailer/zipball/7b03d9be1dea29bfec0a6c7b603f5072a4c97435", + "reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435", "shasum": "" }, "require": { @@ -7062,9 +7227,10 @@ "psr/log": "^1|^2|^3", "symfony/event-dispatcher": "^5.4|^6.0", "symfony/mime": "^6.2", - "symfony/service-contracts": "^1.1|^2|^3" + "symfony/service-contracts": "^2.5|^3" }, "conflict": { + "symfony/http-client-contracts": "<2.5", "symfony/http-kernel": "<5.4", "symfony/messenger": "<6.2", "symfony/mime": "<6.2", @@ -7102,7 +7268,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.2.8" + "source": "https://github.com/symfony/mailer/tree/v6.3.0" }, "funding": [ { @@ -7118,24 +7284,94 @@ "type": "tidelift" } ], - "time": "2023-03-14T15:00:05+00:00" + "time": "2023-05-29T12:49:39+00:00" + }, + { + "name": "symfony/mailgun-mailer", + "version": "v6.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailgun-mailer.git", + "reference": "df371e42a4c2a78a28c8de910f96949040e308fd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/df371e42a4c2a78a28c8de910f96949040e308fd", + "reference": "df371e42a4c2a78a28c8de910f96949040e308fd", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/mailer": "^5.4.21|^6.2.7" + }, + "conflict": { + "symfony/http-foundation": "<6.2" + }, + "require-dev": { + "symfony/http-client": "^5.4|^6.0", + "symfony/webhook": "^6.3" + }, + "type": "symfony-mailer-bridge", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\Bridge\\Mailgun\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Mailgun Mailer Bridge", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailgun-mailer/tree/v6.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-20T10:26:17+00:00" }, { "name": "symfony/mime", - "version": "v6.2.10", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "b6c137fc53a9f7c4c951cd3f362b3734c7a97723" + "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/b6c137fc53a9f7c4c951cd3f362b3734c7a97723", - "reference": "b6c137fc53a9f7c4c951cd3f362b3734c7a97723", + "url": "https://api.github.com/repos/symfony/mime/zipball/9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", + "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -7144,7 +7380,7 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/mailer": "<5.4", - "symfony/serializer": "<6.2" + "symfony/serializer": "<6.2.13|>=6.3,<6.3.2" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", @@ -7153,7 +7389,7 @@ "symfony/dependency-injection": "^5.4|^6.0", "symfony/property-access": "^5.4|^6.0", "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^6.2" + "symfony/serializer": "~6.2.13|^6.3.2" }, "type": "library", "autoload": { @@ -7185,7 +7421,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.2.10" + "source": "https://github.com/symfony/mime/tree/v6.3.3" }, "funding": [ { @@ -7201,25 +7437,25 @@ "type": "tidelift" } ], - "time": "2023-04-19T09:54:16+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "symfony/options-resolver", - "version": "v6.2.7", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "aa0e85b53bbb2b4951960efd61d295907eacd629" + "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/aa0e85b53bbb2b4951960efd61d295907eacd629", - "reference": "aa0e85b53bbb2b4951960efd61d295907eacd629", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd", + "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3" + "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -7252,7 +7488,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.2.7" + "source": "https://github.com/symfony/options-resolver/tree/v6.3.0" }, "funding": [ { @@ -7268,7 +7504,7 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:44:56+00:00" + "time": "2023-05-12T14:21:09+00:00" }, { "name": "symfony/polyfill-ctype", @@ -7914,6 +8150,83 @@ ], "time": "2022-11-03T14:55:06+00:00" }, + { + "name": "symfony/polyfill-php83", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "508c652ba3ccf69f8c97f251534f229791b52a57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/508c652ba3ccf69f8c97f251534f229791b52a57", + "reference": "508c652ba3ccf69f8c97f251534f229791b52a57", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, { "name": "symfony/polyfill-uuid", "version": "v1.27.0", @@ -7998,16 +8311,16 @@ }, { "name": "symfony/process", - "version": "v6.2.10", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e" + "reference": "c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e", - "reference": "b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e", + "url": "https://api.github.com/repos/symfony/process/zipball/c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d", + "reference": "c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d", "shasum": "" }, "require": { @@ -8039,7 +8352,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.2.10" + "source": "https://github.com/symfony/process/tree/v6.3.2" }, "funding": [ { @@ -8055,25 +8368,26 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:56:57+00:00" + "time": "2023-07-12T16:00:22+00:00" }, { "name": "symfony/psr-http-message-bridge", - "version": "v2.2.0", + "version": "v2.3.1", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "28a732c05bbad801304ad5a5c674cf2970508993" + "reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/28a732c05bbad801304ad5a5c674cf2970508993", - "reference": "28a732c05bbad801304ad5a5c674cf2970508993", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/581ca6067eb62640de5ff08ee1ba6850a0ee472e", + "reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/http-message": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0", "symfony/http-foundation": "^5.4 || ^6.0" }, "require-dev": { @@ -8092,7 +8406,7 @@ "type": "symfony-bridge", "extra": { "branch-alias": { - "dev-main": "2.2-dev" + "dev-main": "2.3-dev" } }, "autoload": { @@ -8127,7 +8441,7 @@ ], "support": { "issues": "https://github.com/symfony/psr-http-message-bridge/issues", - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.2.0" + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.3.1" }, "funding": [ { @@ -8143,24 +8457,25 @@ "type": "tidelift" } ], - "time": "2023-04-21T08:40:19+00:00" + "time": "2023-07-26T11:53:26+00:00" }, { "name": "symfony/routing", - "version": "v6.2.8", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "69062e2823f03b82265d73a966999660f0e1e404" + "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/69062e2823f03b82265d73a966999660f0e1e404", - "reference": "69062e2823f03b82265d73a966999660f0e1e404", + "url": "https://api.github.com/repos/symfony/routing/zipball/e7243039ab663822ff134fbc46099b5fdfa16f6a", + "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "doctrine/annotations": "<1.12", @@ -8177,12 +8492,6 @@ "symfony/http-foundation": "^5.4|^6.0", "symfony/yaml": "^5.4|^6.0" }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, "type": "library", "autoload": { "psr-4": { @@ -8215,7 +8524,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.2.8" + "source": "https://github.com/symfony/routing/tree/v6.3.3" }, "funding": [ { @@ -8231,20 +8540,20 @@ "type": "tidelift" } ], - "time": "2023-03-14T15:00:05+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a" + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", "shasum": "" }, "require": { @@ -8254,13 +8563,10 @@ "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -8300,7 +8606,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" }, "funding": [ { @@ -8316,20 +8622,20 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/string", - "version": "v6.2.8", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef" + "reference": "53d1a83225002635bca3482fcbf963001313fb68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/193e83bbd6617d6b2151c37fff10fa7168ebddef", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef", + "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", + "reference": "53d1a83225002635bca3482fcbf963001313fb68", "shasum": "" }, "require": { @@ -8340,13 +8646,13 @@ "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": "<2.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { "symfony/error-handler": "^5.4|^6.0", "symfony/http-client": "^5.4|^6.0", "symfony/intl": "^6.2", - "symfony/translation-contracts": "^2.0|^3.0", + "symfony/translation-contracts": "^2.5|^3.0", "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", @@ -8386,7 +8692,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.2.8" + "source": "https://github.com/symfony/string/tree/v6.3.2" }, "funding": [ { @@ -8402,32 +8708,35 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:06:02+00:00" + "time": "2023-07-05T08:41:27+00:00" }, { "name": "symfony/translation", - "version": "v6.2.8", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "817535dbb1721df8b3a8f2489dc7e50bcd6209b5" + "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/817535dbb1721df8b3a8f2489dc7e50bcd6209b5", - "reference": "817535dbb1721df8b3a8f2489dc7e50bcd6209b5", + "url": "https://api.github.com/repos/symfony/translation/zipball/3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", + "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" + "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { "symfony/config": "<5.4", "symfony/console": "<5.4", "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", "symfony/twig-bundle": "<5.4", "symfony/yaml": "<5.4" }, @@ -8441,20 +8750,14 @@ "symfony/console": "^5.4|^6.0", "symfony/dependency-injection": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", + "symfony/http-client-contracts": "^2.5|^3.0", "symfony/http-kernel": "^5.4|^6.0", "symfony/intl": "^5.4|^6.0", "symfony/polyfill-intl-icu": "^1.21", "symfony/routing": "^5.4|^6.0", - "symfony/service-contracts": "^1.1.2|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/yaml": "^5.4|^6.0" }, - "suggest": { - "nikic/php-parser": "To use PhpAstExtractor", - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, "type": "library", "autoload": { "files": [ @@ -8484,7 +8787,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.2.8" + "source": "https://github.com/symfony/translation/tree/v6.3.3" }, "funding": [ { @@ -8500,32 +8803,29 @@ "type": "tidelift" } ], - "time": "2023-03-31T09:14:44+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8" + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dfec258b9dd17a6b24420d464c43bffe347441c8", - "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86", + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86", "shasum": "" }, "require": { "php": ">=8.1" }, - "suggest": { - "symfony/translation-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -8565,7 +8865,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0" }, "funding": [ { @@ -8581,20 +8881,20 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2023-05-30T17:17:10+00:00" }, { "name": "symfony/uid", - "version": "v6.2.7", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "d30c72a63897cfa043e1de4d4dd2ffa9ecefcdc0" + "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/d30c72a63897cfa043e1de4d4dd2ffa9ecefcdc0", - "reference": "d30c72a63897cfa043e1de4d4dd2ffa9ecefcdc0", + "url": "https://api.github.com/repos/symfony/uid/zipball/01b0f20b1351d997711c56f1638f7a8c3061e384", + "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384", "shasum": "" }, "require": { @@ -8639,7 +8939,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.2.7" + "source": "https://github.com/symfony/uid/tree/v6.3.0" }, "funding": [ { @@ -8655,42 +8955,38 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:44:56+00:00" + "time": "2023-04-08T07:25:02+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.2.10", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "41a750a23412ca76fdbbf5096943b4134272c1ab" + "reference": "77fb4f2927f6991a9843633925d111147449ee7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/41a750a23412ca76fdbbf5096943b4134272c1ab", - "reference": "41a750a23412ca76fdbbf5096943b4134272c1ab", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/77fb4f2927f6991a9843633925d111147449ee7a", + "reference": "77fb4f2927f6991a9843633925d111147449ee7a", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "phpunit/phpunit": "<5.4.3", "symfony/console": "<5.4" }, "require-dev": { "ext-iconv": "*", "symfony/console": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", "symfony/process": "^5.4|^6.0", "symfony/uid": "^5.4|^6.0", "twig/twig": "^2.13|^3.0.4" }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, "bin": [ "Resources/bin/var-dump-server" ], @@ -8727,7 +9023,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.2.10" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.3" }, "funding": [ { @@ -8743,7 +9039,81 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:46:08+00:00" + "time": "2023-07-31T07:08:24+00:00" + }, + { + "name": "symfony/var-exporter", + "version": "v6.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "3400949782c0cb5b3e73aa64cfd71dde000beccc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/3400949782c0cb5b3e73aa64cfd71dde000beccc", + "reference": "3400949782c0cb5b3e73aa64cfd71dde000beccc", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "symfony/var-dumper": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "homepage": "https://symfony.com", + "keywords": [ + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "lazy-loading", + "proxy", + "serialize" + ], + "support": { + "source": "https://github.com/symfony/var-exporter/tree/v6.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-26T17:39:03+00:00" }, { "name": "thedevsaddam/laravel-schema", @@ -9267,16 +9637,16 @@ }, { "name": "laravel/sail", - "version": "v1.22.0", + "version": "v1.23.4", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "923e1e112b6a8598664dbb0ee79dd3137f1c9d56" + "reference": "cfa1ad579349110a87f9412eb65ecba94d682ac2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/923e1e112b6a8598664dbb0ee79dd3137f1c9d56", - "reference": "923e1e112b6a8598664dbb0ee79dd3137f1c9d56", + "url": "https://api.github.com/repos/laravel/sail/zipball/cfa1ad579349110a87f9412eb65ecba94d682ac2", + "reference": "cfa1ad579349110a87f9412eb65ecba94d682ac2", "shasum": "" }, "require": { @@ -9328,42 +9698,44 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2023-05-04T14:52:56+00:00" + "time": "2023-08-17T12:49:32+00:00" }, { "name": "mockery/mockery", - "version": "1.5.1", + "version": "1.6.6", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e" + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/e92dcc83d5a51851baf5f5591d32cb2b16e3684e", - "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e", + "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e", + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e", "shasum": "" }, "require": { "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" + "php": ">=7.3" }, "conflict": { "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" + "phpunit/phpunit": "^8.5 || ^9.6.10", + "psalm/plugin-phpunit": "^0.18.4", + "symplify/easy-coding-standard": "^11.5.0", + "vimeo/psalm": "^4.30" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, "autoload": { - "psr-0": { - "Mockery": "library/" + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" } }, "notification-url": "https://packagist.org/downloads/", @@ -9374,12 +9746,20 @@ { "name": "Pádraic Brady", "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" + "homepage": "https://github.com/padraic", + "role": "Author" }, { "name": "Dave Marshall", "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" } ], "description": "Mockery is a simple yet flexible PHP mock object framework", @@ -9397,10 +9777,13 @@ "testing" ], "support": { + "docs": "https://docs.mockery.io/", "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.1" + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" }, - "time": "2022-09-07T15:32:08+00:00" + "time": "2023-08-09T00:03:52+00:00" }, { "name": "myclabs/deep-copy", @@ -9463,16 +9846,16 @@ }, { "name": "nunomaduro/larastan", - "version": "v2.6.0", + "version": "v2.6.4", "source": { "type": "git", "url": "https://github.com/nunomaduro/larastan.git", - "reference": "ccac5b25949576807862cf32ba1fce1769c06c42" + "reference": "6c5e8820f3db6397546f3ce48520af9d312aed27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/larastan/zipball/ccac5b25949576807862cf32ba1fce1769c06c42", - "reference": "ccac5b25949576807862cf32ba1fce1769c06c42", + "url": "https://api.github.com/repos/nunomaduro/larastan/zipball/6c5e8820f3db6397546f3ce48520af9d312aed27", + "reference": "6c5e8820f3db6397546f3ce48520af9d312aed27", "shasum": "" }, "require": { @@ -9535,7 +9918,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/larastan/issues", - "source": "https://github.com/nunomaduro/larastan/tree/v2.6.0" + "source": "https://github.com/nunomaduro/larastan/tree/v2.6.4" }, "funding": [ { @@ -9555,7 +9938,7 @@ "type": "patreon" } ], - "time": "2023-04-20T12:40:01+00:00" + "time": "2023-07-29T12:13:13+00:00" }, { "name": "phar-io/manifest", @@ -9670,16 +10053,16 @@ }, { "name": "phpmyadmin/sql-parser", - "version": "5.7.0", + "version": "5.8.0", "source": { "type": "git", "url": "https://github.com/phpmyadmin/sql-parser.git", - "reference": "0f5895aab2b6002d00b6831b60983523dea30bff" + "reference": "db1b3069b5dbc220d393d67ff911e0ae76732755" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/0f5895aab2b6002d00b6831b60983523dea30bff", - "reference": "0f5895aab2b6002d00b6831b60983523dea30bff", + "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/db1b3069b5dbc220d393d67ff911e0ae76732755", + "reference": "db1b3069b5dbc220d393d67ff911e0ae76732755", "shasum": "" }, "require": { @@ -9753,20 +10136,20 @@ "type": "other" } ], - "time": "2023-01-25T10:43:40+00:00" + "time": "2023-06-05T18:19:38+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.15", + "version": "1.10.29", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "762c4dac4da6f8756eebb80e528c3a47855da9bd" + "reference": "ee5d8f2d3977fb09e55603eee6fb53bdd76ee9c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/762c4dac4da6f8756eebb80e528c3a47855da9bd", - "reference": "762c4dac4da6f8756eebb80e528c3a47855da9bd", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ee5d8f2d3977fb09e55603eee6fb53bdd76ee9c1", + "reference": "ee5d8f2d3977fb09e55603eee6fb53bdd76ee9c1", "shasum": "" }, "require": { @@ -9815,20 +10198,20 @@ "type": "tidelift" } ], - "time": "2023-05-09T15:28:01+00:00" + "time": "2023-08-14T13:24:11+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "10.1.1", + "version": "10.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "884a0da7f9f46f28b2cb69134217fd810b793974" + "reference": "be1fe461fdc917de2a29a452ccf2657d325b443d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/884a0da7f9f46f28b2cb69134217fd810b793974", - "reference": "884a0da7f9f46f28b2cb69134217fd810b793974", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/be1fe461fdc917de2a29a452ccf2657d325b443d", + "reference": "be1fe461fdc917de2a29a452ccf2657d325b443d", "shasum": "" }, "require": { @@ -9885,7 +10268,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.1" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.3" }, "funding": [ { @@ -9893,7 +10276,7 @@ "type": "github" } ], - "time": "2023-04-17T12:15:40+00:00" + "time": "2023-07-26T13:45:28+00:00" }, { "name": "phpunit/php-file-iterator", @@ -10139,16 +10522,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.1.3", + "version": "10.3.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "2379ebafc1737e71cdc84f402acb6b7f04198b9d" + "reference": "0dafb1175c366dd274eaa9a625e914451506bcd1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2379ebafc1737e71cdc84f402acb6b7f04198b9d", - "reference": "2379ebafc1737e71cdc84f402acb6b7f04198b9d", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0dafb1175c366dd274eaa9a625e914451506bcd1", + "reference": "0dafb1175c366dd274eaa9a625e914451506bcd1", "shasum": "" }, "require": { @@ -10173,7 +10556,7 @@ "sebastian/diff": "^5.0", "sebastian/environment": "^6.0", "sebastian/exporter": "^5.0", - "sebastian/global-state": "^6.0", + "sebastian/global-state": "^6.0.1", "sebastian/object-enumerator": "^5.0", "sebastian/recursion-context": "^5.0", "sebastian/type": "^4.0", @@ -10188,7 +10571,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.1-dev" + "dev-main": "10.3-dev" } }, "autoload": { @@ -10220,7 +10603,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.1.3" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.2" }, "funding": [ { @@ -10236,7 +10619,7 @@ "type": "tidelift" } ], - "time": "2023-05-11T05:16:22+00:00" + "time": "2023-08-15T05:34:23+00:00" }, { "name": "sebastian/cli-parser", @@ -10407,16 +10790,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c" + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/72f01e6586e0caf6af81297897bd112eb7e9627c", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", "shasum": "" }, "require": { @@ -10427,7 +10810,7 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.3" }, "type": "library", "extra": { @@ -10471,7 +10854,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" }, "funding": [ { @@ -10479,7 +10863,7 @@ "type": "github" } ], - "time": "2023-02-03T07:07:16+00:00" + "time": "2023-08-14T13:18:12+00:00" }, { "name": "sebastian/complexity", @@ -10748,16 +11132,16 @@ }, { "name": "sebastian/global-state", - "version": "6.0.0", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "aab257c712de87b90194febd52e4d184551c2d44" + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/aab257c712de87b90194febd52e4d184551c2d44", - "reference": "aab257c712de87b90194febd52e4d184551c2d44", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", "shasum": "" }, "require": { @@ -10797,7 +11181,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.0" + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" }, "funding": [ { @@ -10805,7 +11190,7 @@ "type": "github" } ], - "time": "2023-02-03T07:07:38+00:00" + "time": "2023-07-19T07:19:23+00:00" }, { "name": "sebastian/lines-of-code", @@ -11150,20 +11535,21 @@ }, { "name": "symfony/yaml", - "version": "v6.2.10", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "61916f3861b1e9705b18cfde723921a71dd1559d" + "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/61916f3861b1e9705b18cfde723921a71dd1559d", - "reference": "61916f3861b1e9705b18cfde723921a71dd1559d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e23292e8c07c85b971b44c1c4b87af52133e2add", + "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -11172,9 +11558,6 @@ "require-dev": { "symfony/console": "^5.4|^6.0" }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, "bin": [ "Resources/bin/yaml-lint" ], @@ -11204,7 +11587,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.2.10" + "source": "https://github.com/symfony/yaml/tree/v6.3.3" }, "funding": [ { @@ -11220,7 +11603,7 @@ "type": "tidelift" } ], - "time": "2023-04-28T13:25:36+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "theseer/tokenizer", diff --git a/resources/views/emails/send-otp.blade.php b/resources/views/emails/send-otp.blade.php new file mode 100644 index 00000000..f8ddbff3 --- /dev/null +++ b/resources/views/emails/send-otp.blade.php @@ -0,0 +1,405 @@ + + + + + + Welcome to CookbooksHQ + + + +This is preheader text. Some clients will show this text as a preview. + + + + + + + + + From 93ec551562aa095d1355d34cac90a3b08f479dc3 Mon Sep 17 00:00:00 2001 From: fokosun Date: Sun, 20 Aug 2023 22:08:05 -0400 Subject: [PATCH 28/34] debug tiktok --- app/Http/Controllers/AuthController.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index 113db416..7069ce4d 100755 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -183,6 +183,7 @@ public function tikTokHandleCallback(Request $request, Client $client, UserServi ], ] ); + dd($userInfo); $userInfo = json_decode($userInfoResponse->getBody()->getContents(), true); From f396b0702da08c8a6997e4c0c92e0d9b96aca801 Mon Sep 17 00:00:00 2001 From: fokosun Date: Sun, 20 Aug 2023 22:11:02 -0400 Subject: [PATCH 29/34] debug tiktok again --- app/Http/Controllers/AuthController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index 7069ce4d..f9b22694 100755 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -183,7 +183,6 @@ public function tikTokHandleCallback(Request $request, Client $client, UserServi ], ] ); - dd($userInfo); $userInfo = json_decode($userInfoResponse->getBody()->getContents(), true); @@ -243,6 +242,7 @@ public function tikTokHandleCallback(Request $request, Client $client, UserServi return redirect('https://web.cookbookshq.com/#/errors/?m=Hey, it looks like your tiktok account is Private. Please login using a public account.'); } } catch (\Exception $e) { + dd($e->getMessage()); Log::debug('There was an error', [ 'error' => $e->getMessage(), ]); From 1d8bc9d0b3ef8a687bb08976a284cc180b1c808e Mon Sep 17 00:00:00 2001 From: fokosun Date: Sun, 20 Aug 2023 22:13:18 -0400 Subject: [PATCH 30/34] debug tiktok again --- app/Http/Controllers/AuthController.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index f9b22694..7c4749e7 100755 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -243,11 +243,11 @@ public function tikTokHandleCallback(Request $request, Client $client, UserServi } } catch (\Exception $e) { dd($e->getMessage()); - Log::debug('There was an error', [ - 'error' => $e->getMessage(), - ]); - - return redirect("https://web.cookbookshq.com/#/errors/?m=We are experiencing some technical difficulty logging you in with TikTok, please try again."); +// Log::debug('There was an error', [ +// 'error' => $e->getMessage(), +// ]); +// +// return redirect("https://web.cookbookshq.com/#/errors/?m=We are experiencing some technical difficulty logging you in with TikTok, please try again."); } } From 46cda9f4a215e8a1eababc05a2f89052e1760a29 Mon Sep 17 00:00:00 2001 From: fokosun Date: Sun, 20 Aug 2023 22:21:14 -0400 Subject: [PATCH 31/34] debug tiktok again --- app/Http/Controllers/AuthController.php | 220 ++++++++++++------------ bootstrap/cache/services.php | 33 ++-- 2 files changed, 129 insertions(+), 124 deletions(-) diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index 7c4749e7..6ca80ae0 100755 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -134,121 +134,121 @@ public function loginViaMagicLink(Request $request, LocationService $locationSer */ public function tikTokHandleCallback(Request $request, Client $client, UserService $service) { - try { - $code = $request->get('code'); - $errCode = $request->get('errCode'); - - if ($errCode === self::TIKTOK_CANCELLATION_CODE) { - return redirect('https://web.cookbookshq.com/#/signin'); - } - - $response = $client->request('POST', - 'https://open-api.tiktok.com/oauth/access_token/', - [ - 'form_params' => [ - 'client_key' => config('services.tiktok.client_id'), - 'client_secret' => config('services.tiktok.client_secret'), - 'code' => $code, - 'grant_type' => 'authorization_code', - ], - ] - ); - - $decoded = json_decode($response->getBody()->getContents(), true); - - if ($decoded['message'] === 'error') { - throw new \Exception(json_encode($decoded)); - } - - $userInfoResponse = $client->request('POST', - 'https://open-api.tiktok.com/user/info/', - [ - 'json' => [ - 'open_id' => $decoded['data']['open_id'], - 'access_token' => $decoded['data']['access_token'], - 'fields' => [ - 'open_id', - 'avatar_url', - 'display_name', - 'avatar_url_100', - 'is_verified', - 'profile_deep_link', - 'bio_description', - 'display_name', - 'avatar_large_url', - 'avatar_url_100', - 'union_id', - 'video_count' - ], - ], - ] - ); - - $userInfo = json_decode($userInfoResponse->getBody()->getContents(), true); - - if (!empty($userInfo['data']['user'])) { - $tiktokEmail = $userInfo['data']['user']['open_id'] . '@tiktok.com'; - - $user = User::where(['email' => $tiktokEmail])->first(); - - if (!$user instanceof User) { - $response = $service->store(new Request([ - 'name' => $userInfo['data']['user']['display_name'], - 'email' => $tiktokEmail, - 'password' => 'fakePass', - ])); - - $decoded = json_decode($response->getContent(), true); - $data = $decoded['response']['data']; - $user = User::where(['email' => $data['email']])->first(); - } - - $user->update([ - 'avatar' => $userInfo['data']['user']['avatar_url'], - 'pronouns' => 'They/Them', - ]); - - $credentials = [ - 'email' => $user->email, - 'password' => 'fakePass', - ]; - - if (!$token = Auth::attempt($credentials)) { - return redirect('https://web.cookbookshq.com/#/errors/?m=there was an error processing this request, please try again.'); - } - - TikTokUserIsAuthenticated::dispatch(new TikTokUserDto( - $user->getKey(), - $userInfo['data']['user']['open_id'], - $decoded['data']['access_token'], - $userInfo['data']['user']['is_verified'], - $userInfo['data']['user']['profile_deep_link'], - $userInfo['data']['user']['bio_description'], - $userInfo['data']['user']['display_name'], - $userInfo['data']['user']['avatar_large_url'], - $userInfo['data']['user']['avatar_url_100'], - $userInfo['data']['user']['avatar_url'], - $userInfo['data']['user']['union_id'], - $userInfo['data']['user']['video_count'] - )); - - $to = 'https://web.cookbookshq.com/#/tiktok/?' . http_build_query([ - 'token' => $token, - '_d' => $user->getSlug(), - ]); - - return redirect($to); - } else { - return redirect('https://web.cookbookshq.com/#/errors/?m=Hey, it looks like your tiktok account is Private. Please login using a public account.'); - } - } catch (\Exception $e) { - dd($e->getMessage()); + dd($code = $request->get('code')); +// try { +// $code = $request->get('code'); +// $errCode = $request->get('errCode'); +// +// if ($errCode === self::TIKTOK_CANCELLATION_CODE) { +// return redirect('https://web.cookbookshq.com/#/signin'); +// } +// +// $response = $client->request('POST', +// 'https://open-api.tiktok.com/oauth/access_token/', +// [ +// 'form_params' => [ +// 'client_key' => config('services.tiktok.client_id'), +// 'client_secret' => config('services.tiktok.client_secret'), +// 'code' => $code, +// 'grant_type' => 'authorization_code', +// ], +// ] +// ); +// +// $decoded = json_decode($response->getBody()->getContents(), true); +// +// if ($decoded['message'] === 'error') { +// throw new \Exception(json_encode($decoded)); +// } +// +// $userInfoResponse = $client->request('POST', +// 'https://open-api.tiktok.com/user/info/', +// [ +// 'json' => [ +// 'open_id' => $decoded['data']['open_id'], +// 'access_token' => $decoded['data']['access_token'], +// 'fields' => [ +// 'open_id', +// 'avatar_url', +// 'display_name', +// 'avatar_url_100', +// 'is_verified', +// 'profile_deep_link', +// 'bio_description', +// 'display_name', +// 'avatar_large_url', +// 'avatar_url_100', +// 'union_id', +// 'video_count' +// ], +// ], +// ] +// ); +// +// $userInfo = json_decode($userInfoResponse->getBody()->getContents(), true); +// +// if (!empty($userInfo['data']['user'])) { +// $tiktokEmail = $userInfo['data']['user']['open_id'] . '@tiktok.com'; +// +// $user = User::where(['email' => $tiktokEmail])->first(); +// +// if (!$user instanceof User) { +// $response = $service->store(new Request([ +// 'name' => $userInfo['data']['user']['display_name'], +// 'email' => $tiktokEmail, +// 'password' => 'fakePass', +// ])); +// +// $decoded = json_decode($response->getContent(), true); +// $data = $decoded['response']['data']; +// $user = User::where(['email' => $data['email']])->first(); +// } +// +// $user->update([ +// 'avatar' => $userInfo['data']['user']['avatar_url'], +// 'pronouns' => 'They/Them', +// ]); +// +// $credentials = [ +// 'email' => $user->email, +// 'password' => 'fakePass', +// ]; +// +// if (!$token = Auth::attempt($credentials)) { +// return redirect('https://web.cookbookshq.com/#/errors/?m=there was an error processing this request, please try again.'); +// } +// +// TikTokUserIsAuthenticated::dispatch(new TikTokUserDto( +// $user->getKey(), +// $userInfo['data']['user']['open_id'], +// $decoded['data']['access_token'], +// $userInfo['data']['user']['is_verified'], +// $userInfo['data']['user']['profile_deep_link'], +// $userInfo['data']['user']['bio_description'], +// $userInfo['data']['user']['display_name'], +// $userInfo['data']['user']['avatar_large_url'], +// $userInfo['data']['user']['avatar_url_100'], +// $userInfo['data']['user']['avatar_url'], +// $userInfo['data']['user']['union_id'], +// $userInfo['data']['user']['video_count'] +// )); +// +// $to = 'https://web.cookbookshq.com/#/tiktok/?' . http_build_query([ +// 'token' => $token, +// '_d' => $user->getSlug(), +// ]); +// +// return redirect($to); +// } else { +// return redirect('https://web.cookbookshq.com/#/errors/?m=Hey, it looks like your tiktok account is Private. Please login using a public account.'); +// } +// } catch (\Exception $e) { // Log::debug('There was an error', [ // 'error' => $e->getMessage(), // ]); // // return redirect("https://web.cookbookshq.com/#/errors/?m=We are experiencing some technical difficulty logging you in with TikTok, please try again."); - } +// } } /** diff --git a/bootstrap/cache/services.php b/bootstrap/cache/services.php index e159275b..1b915976 100755 --- a/bootstrap/cache/services.php +++ b/bootstrap/cache/services.php @@ -37,14 +37,15 @@ 33 => 'SocialiteProviders\\Manager\\ServiceProvider', 34 => 'Spatie\\LaravelIgnition\\IgnitionServiceProvider', 35 => 'Tymon\\JWTAuth\\Providers\\LaravelServiceProvider', - 36 => 'App\\Providers\\AppServiceProvider', - 37 => 'App\\Providers\\AuthServiceProvider', - 38 => 'App\\Providers\\EventServiceProvider', - 39 => 'App\\Providers\\RouteServiceProvider', - 40 => 'Laravel\\Socialite\\SocialiteServiceProvider', - 41 => 'SocialiteProviders\\Manager\\ServiceProvider', - 42 => 'Thedevsaddam\\LaravelSchema\\LaravelSchemaServiceProvider', - 43 => 'Sentry\\Laravel\\ServiceProvider', + 36 => 'Ichtrojan\\Otp\\OtpServiceProvider', + 37 => 'App\\Providers\\AppServiceProvider', + 38 => 'App\\Providers\\AuthServiceProvider', + 39 => 'App\\Providers\\EventServiceProvider', + 40 => 'App\\Providers\\RouteServiceProvider', + 41 => 'Laravel\\Socialite\\SocialiteServiceProvider', + 42 => 'SocialiteProviders\\Manager\\ServiceProvider', + 43 => 'Thedevsaddam\\LaravelSchema\\LaravelSchemaServiceProvider', + 44 => 'Sentry\\Laravel\\ServiceProvider', ), 'eager' => array ( @@ -68,12 +69,13 @@ 17 => 'Sentry\\Laravel\\Tracing\\ServiceProvider', 18 => 'Spatie\\LaravelIgnition\\IgnitionServiceProvider', 19 => 'Tymon\\JWTAuth\\Providers\\LaravelServiceProvider', - 20 => 'App\\Providers\\AppServiceProvider', - 21 => 'App\\Providers\\AuthServiceProvider', - 22 => 'App\\Providers\\EventServiceProvider', - 23 => 'App\\Providers\\RouteServiceProvider', - 24 => 'Thedevsaddam\\LaravelSchema\\LaravelSchemaServiceProvider', - 25 => 'Sentry\\Laravel\\ServiceProvider', + 20 => 'Ichtrojan\\Otp\\OtpServiceProvider', + 21 => 'App\\Providers\\AppServiceProvider', + 22 => 'App\\Providers\\AuthServiceProvider', + 23 => 'App\\Providers\\EventServiceProvider', + 24 => 'App\\Providers\\RouteServiceProvider', + 25 => 'Thedevsaddam\\LaravelSchema\\LaravelSchemaServiceProvider', + 26 => 'Sentry\\Laravel\\ServiceProvider', ), 'deferred' => array ( @@ -97,6 +99,7 @@ 'Illuminate\\Auth\\Console\\ClearResetsCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'Illuminate\\Foundation\\Console\\ConfigCacheCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'Illuminate\\Foundation\\Console\\ConfigClearCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ConfigShowCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'Illuminate\\Database\\Console\\DbCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'Illuminate\\Database\\Console\\MonitorCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'Illuminate\\Database\\Console\\PruneCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', @@ -138,6 +141,7 @@ 'Illuminate\\Console\\Scheduling\\ScheduleClearCacheCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'Illuminate\\Console\\Scheduling\\ScheduleTestCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'Illuminate\\Console\\Scheduling\\ScheduleWorkCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Console\\Scheduling\\ScheduleInterruptCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'Illuminate\\Database\\Console\\ShowModelCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'Illuminate\\Foundation\\Console\\StorageLinkCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'Illuminate\\Foundation\\Console\\UpCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', @@ -211,6 +215,7 @@ 'translation.loader' => 'Illuminate\\Translation\\TranslationServiceProvider', 'validator' => 'Illuminate\\Validation\\ValidationServiceProvider', 'validation.presence' => 'Illuminate\\Validation\\ValidationServiceProvider', + 'Illuminate\\Contracts\\Validation\\UncompromisedVerifier' => 'Illuminate\\Validation\\ValidationServiceProvider', 'Laravel\\Sail\\Console\\InstallCommand' => 'Laravel\\Sail\\SailServiceProvider', 'Laravel\\Sail\\Console\\PublishCommand' => 'Laravel\\Sail\\SailServiceProvider', 'Laravel\\Socialite\\Contracts\\Factory' => 'SocialiteProviders\\Manager\\ServiceProvider', From b758a24c41e04129caf4084b3950235f0fb35a98 Mon Sep 17 00:00:00 2001 From: fokosun Date: Sun, 20 Aug 2023 22:25:49 -0400 Subject: [PATCH 32/34] debug tiktok again --- app/Http/Controllers/AuthController.php | 60 ++++++++++++------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index 6ca80ae0..91eda130 100755 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -134,29 +134,29 @@ public function loginViaMagicLink(Request $request, LocationService $locationSer */ public function tikTokHandleCallback(Request $request, Client $client, UserService $service) { - dd($code = $request->get('code')); -// try { -// $code = $request->get('code'); -// $errCode = $request->get('errCode'); -// -// if ($errCode === self::TIKTOK_CANCELLATION_CODE) { -// return redirect('https://web.cookbookshq.com/#/signin'); -// } -// -// $response = $client->request('POST', -// 'https://open-api.tiktok.com/oauth/access_token/', -// [ -// 'form_params' => [ -// 'client_key' => config('services.tiktok.client_id'), -// 'client_secret' => config('services.tiktok.client_secret'), -// 'code' => $code, -// 'grant_type' => 'authorization_code', -// ], -// ] -// ); -// -// $decoded = json_decode($response->getBody()->getContents(), true); -// + try { + $code = $request->get('code'); + $errCode = $request->get('errCode'); + + if ($errCode === self::TIKTOK_CANCELLATION_CODE) { + return redirect('https://web.cookbookshq.com/#/signin'); + } + + $response = $client->request('POST', + 'https://open-api.tiktok.com/oauth/access_token/', + [ + 'form_params' => [ + 'client_key' => config('services.tiktok.client_id'), + 'client_secret' => config('services.tiktok.client_secret'), + 'code' => $code, + 'grant_type' => 'authorization_code', + ], + ] + ); + + $decoded = json_decode($response->getBody()->getContents(), true); + dd($decoded); + // if ($decoded['message'] === 'error') { // throw new \Exception(json_encode($decoded)); // } @@ -242,13 +242,13 @@ public function tikTokHandleCallback(Request $request, Client $client, UserServi // } else { // return redirect('https://web.cookbookshq.com/#/errors/?m=Hey, it looks like your tiktok account is Private. Please login using a public account.'); // } -// } catch (\Exception $e) { -// Log::debug('There was an error', [ -// 'error' => $e->getMessage(), -// ]); -// -// return redirect("https://web.cookbookshq.com/#/errors/?m=We are experiencing some technical difficulty logging you in with TikTok, please try again."); -// } + } catch (\Exception $e) { + Log::debug('There was an error', [ + 'error' => $e->getMessage(), + ]); + + return redirect("https://web.cookbookshq.com/#/errors/?m=We are experiencing some technical difficulty logging you in with TikTok, please try again."); + } } /** From f0dce08926ed336960526c19c1bb5b4dcaaef7c9 Mon Sep 17 00:00:00 2001 From: fokosun Date: Sun, 20 Aug 2023 22:33:43 -0400 Subject: [PATCH 33/34] debug tiktok again --- app/Http/Controllers/AuthController.php | 145 ++++++++++++------------ 1 file changed, 72 insertions(+), 73 deletions(-) diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index 91eda130..a2929ea7 100755 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -155,69 +155,68 @@ public function tikTokHandleCallback(Request $request, Client $client, UserServi ); $decoded = json_decode($response->getBody()->getContents(), true); - dd($decoded); - -// if ($decoded['message'] === 'error') { -// throw new \Exception(json_encode($decoded)); -// } -// -// $userInfoResponse = $client->request('POST', -// 'https://open-api.tiktok.com/user/info/', -// [ -// 'json' => [ -// 'open_id' => $decoded['data']['open_id'], -// 'access_token' => $decoded['data']['access_token'], -// 'fields' => [ -// 'open_id', -// 'avatar_url', -// 'display_name', -// 'avatar_url_100', -// 'is_verified', -// 'profile_deep_link', -// 'bio_description', -// 'display_name', -// 'avatar_large_url', -// 'avatar_url_100', -// 'union_id', -// 'video_count' -// ], -// ], -// ] -// ); -// -// $userInfo = json_decode($userInfoResponse->getBody()->getContents(), true); -// -// if (!empty($userInfo['data']['user'])) { -// $tiktokEmail = $userInfo['data']['user']['open_id'] . '@tiktok.com'; -// -// $user = User::where(['email' => $tiktokEmail])->first(); -// -// if (!$user instanceof User) { -// $response = $service->store(new Request([ -// 'name' => $userInfo['data']['user']['display_name'], -// 'email' => $tiktokEmail, -// 'password' => 'fakePass', -// ])); -// -// $decoded = json_decode($response->getContent(), true); -// $data = $decoded['response']['data']; -// $user = User::where(['email' => $data['email']])->first(); -// } -// -// $user->update([ -// 'avatar' => $userInfo['data']['user']['avatar_url'], -// 'pronouns' => 'They/Them', -// ]); -// -// $credentials = [ -// 'email' => $user->email, -// 'password' => 'fakePass', -// ]; -// -// if (!$token = Auth::attempt($credentials)) { -// return redirect('https://web.cookbookshq.com/#/errors/?m=there was an error processing this request, please try again.'); -// } -// + + if ($decoded['message'] === 'error') { + throw new \Exception(json_encode($decoded)); + } + + $userInfoResponse = $client->request('POST', + 'https://open-api.tiktok.com/user/info/', + [ + 'json' => [ + 'open_id' => $decoded['data']['open_id'], + 'access_token' => $decoded['data']['access_token'], + 'fields' => [ + 'open_id', + 'avatar_url', + 'display_name', + 'avatar_url_100', + 'is_verified', + 'profile_deep_link', + 'bio_description', + 'display_name', + 'avatar_large_url', + 'avatar_url_100', + 'union_id', + 'video_count' + ], + ], + ] + ); + + $userInfo = json_decode($userInfoResponse->getBody()->getContents(), true); + + if (!empty($userInfo['data']['user'])) { + $tiktokEmail = $userInfo['data']['user']['open_id'] . '@tiktok.com'; + + $user = User::where(['email' => $tiktokEmail])->first(); + + if (!$user instanceof User) { + $response = $service->store(new Request([ + 'name' => $userInfo['data']['user']['display_name'], + 'email' => $tiktokEmail, + 'password' => 'fakePass', + ])); + + $decoded = json_decode($response->getContent(), true); + $data = $decoded['response']['data']; + $user = User::where(['email' => $data['email']])->first(); + } + + $user->update([ + 'avatar' => $userInfo['data']['user']['avatar_url'], + 'pronouns' => 'They/Them', + ]); + + $credentials = [ + 'email' => $user->email, + 'password' => 'fakePass', + ]; + + if (!$token = Auth::attempt($credentials)) { + return redirect('https://web.cookbookshq.com/#/errors/?m=there was an error processing this request, please try again.'); + } + // TikTokUserIsAuthenticated::dispatch(new TikTokUserDto( // $user->getKey(), // $userInfo['data']['user']['open_id'], @@ -232,16 +231,16 @@ public function tikTokHandleCallback(Request $request, Client $client, UserServi // $userInfo['data']['user']['union_id'], // $userInfo['data']['user']['video_count'] // )); -// -// $to = 'https://web.cookbookshq.com/#/tiktok/?' . http_build_query([ -// 'token' => $token, -// '_d' => $user->getSlug(), -// ]); -// -// return redirect($to); -// } else { -// return redirect('https://web.cookbookshq.com/#/errors/?m=Hey, it looks like your tiktok account is Private. Please login using a public account.'); -// } + + $to = 'https://web.cookbookshq.com/#/tiktok/?' . http_build_query([ + 'token' => $token, + '_d' => $user->getSlug(), + ]); + + return redirect($to); + } else { + return redirect('https://web.cookbookshq.com/#/errors/?m=Hey, it looks like your tiktok account is Private. Please login using a public account.'); + } } catch (\Exception $e) { Log::debug('There was an error', [ 'error' => $e->getMessage(), From b0e6cf9c5c06f84b40eb7784dcd74bb68e08c361 Mon Sep 17 00:00:00 2001 From: fokosun Date: Sun, 20 Aug 2023 22:44:54 -0400 Subject: [PATCH 34/34] debug tiktok again --- app/Http/Controllers/AuthController.php | 28 ++++++++++++------------- app/Listeners/GetTikTokUserVideos.php | 3 ++- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index a2929ea7..113db416 100755 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -217,20 +217,20 @@ public function tikTokHandleCallback(Request $request, Client $client, UserServi return redirect('https://web.cookbookshq.com/#/errors/?m=there was an error processing this request, please try again.'); } -// TikTokUserIsAuthenticated::dispatch(new TikTokUserDto( -// $user->getKey(), -// $userInfo['data']['user']['open_id'], -// $decoded['data']['access_token'], -// $userInfo['data']['user']['is_verified'], -// $userInfo['data']['user']['profile_deep_link'], -// $userInfo['data']['user']['bio_description'], -// $userInfo['data']['user']['display_name'], -// $userInfo['data']['user']['avatar_large_url'], -// $userInfo['data']['user']['avatar_url_100'], -// $userInfo['data']['user']['avatar_url'], -// $userInfo['data']['user']['union_id'], -// $userInfo['data']['user']['video_count'] -// )); + TikTokUserIsAuthenticated::dispatch(new TikTokUserDto( + $user->getKey(), + $userInfo['data']['user']['open_id'], + $decoded['data']['access_token'], + $userInfo['data']['user']['is_verified'], + $userInfo['data']['user']['profile_deep_link'], + $userInfo['data']['user']['bio_description'], + $userInfo['data']['user']['display_name'], + $userInfo['data']['user']['avatar_large_url'], + $userInfo['data']['user']['avatar_url_100'], + $userInfo['data']['user']['avatar_url'], + $userInfo['data']['user']['union_id'], + $userInfo['data']['user']['video_count'] + )); $to = 'https://web.cookbookshq.com/#/tiktok/?' . http_build_query([ 'token' => $token, diff --git a/app/Listeners/GetTikTokUserVideos.php b/app/Listeners/GetTikTokUserVideos.php index 4a95e70f..cf4c0a7d 100644 --- a/app/Listeners/GetTikTokUserVideos.php +++ b/app/Listeners/GetTikTokUserVideos.php @@ -61,7 +61,8 @@ public function handle(object $event): void } } catch(\Exception $exception) { - throw new TikTokException($exception->getMessage(), $context); + dd($exception->getMessage()); +// throw new TikTokException($exception->getMessage(), $context); } } }