From f7097a8a7c98ea88a0116e2ee45f2ebb51db0c83 Mon Sep 17 00:00:00 2001 From: DariusIII Date: Sat, 16 Dec 2023 23:50:51 +0100 Subject: [PATCH] CS fixes (cherry picked from commit b5b3feba5fa1bf29f176af954b1d422ebb2d5f71) --- routes/web.php | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/routes/web.php b/routes/web.php index 34865ac7d..61dd17072 100644 --- a/routes/web.php +++ b/routes/web.php @@ -69,6 +69,8 @@ use App\Http\Controllers\RssController; use App\Http\Controllers\SearchController; use App\Http\Controllers\SeriesController; use App\Http\Controllers\TermsController; +use App\Models\User; + Auth::routes(); @@ -375,4 +377,45 @@ Route::post('2faVerify', function () { return redirect()->to(URL()->previous()); })->name('2faVerify')->middleware('2fa'); -Route::webhooks('btcpay/webhook'); +Route::post('btcpay/webhook', function (Illuminate\Http\Request $request) { + $payload = json_decode($request->getContent(), true); + if (! empty($payload)) { + // We have received a payment for an invoice and user should be upgraded to a paid plan based on order + if ($payload['type'] === 'InvoiceReceivedPayment') { + preg_match('/(?P\w+(\+\+)?)[ ](?P\d+)/i', $payload['metadata']['itemDesc'], $matches); + $user = User::query()->where('email', '=', $payload['metadata']['buyerEmail'])->first(); + if ($user) { + User::updateUserRole($user->id, $matches['role']); + User::updateUserRoleChangeDate($user->id, null, $matches['addYears']); + Log::info('User upgraded to '.$matches['role'].' for BTCPay webhook: '.$payload['metadata']['buyerEmail']); + } else { + Log::error('User not found for BTCPay webhook: '.$payload['metadata']['buyerEmail']); + } + } + + return response('OK', 200); + } + + return response('OK', 200); +}); +Route::get('btcpay/webhook', function (Illuminate\Http\Request $request) { + $payload = json_decode($request->getContent(), true); + if (! empty($payload)) { + // We have received a payment for an invoice and user should be upgraded to a paid plan based on order + if ($payload['type'] === 'InvoiceReceivedPayment') { + preg_match('/(?P\w+(\+\+)?)[ ](?P\d+)/i', $payload['metadata']['itemDesc'], $matches); + $user = User::query()->where('email', '=', $payload['metadata']['buyerEmail'])->first(); + if ($user) { + User::updateUserRole($user->id, $matches['role']); + User::updateUserRoleChangeDate($user->id, null, $matches['addYears']); + Log::info('User upgraded to '.$matches['role'].' for BTCPay webhook: '.$payload['metadata']['buyerEmail']); + } else { + Log::error('User not found for BTCPay webhook: '.$payload['metadata']['buyerEmail']); + } + } + + return response('OK', 200); + } + + return response('OK', 200); +});