From 962b76dd8b692725dc42940892f3a4083244b056 Mon Sep 17 00:00:00 2001 From: Peter Papp Date: Thu, 13 Aug 2020 10:57:29 +0200 Subject: [PATCH] fix email setup --- app/Http/Controllers/SettingController.php | 97 +++++++++++++------ public/mix-manifest.json | 4 +- .../AppSettings/AppSettingsTabs/Payments.vue | 2 +- routes/api.php | 1 + 4 files changed, 70 insertions(+), 34 deletions(-) diff --git a/app/Http/Controllers/SettingController.php b/app/Http/Controllers/SettingController.php index 65a33a3b..6ef88af1 100644 --- a/app/Http/Controllers/SettingController.php +++ b/app/Http/Controllers/SettingController.php @@ -5,7 +5,10 @@ namespace App\Http\Controllers; use App\Http\Tools\Demo; use App\Setting; use Artisan; +use Stripe; +use Cartalyst\Stripe\Exception\UnauthorizedException; use Illuminate\Http\Request; +use Symfony\Component\HttpKernel\Exception\HttpException; class SettingController extends Controller { @@ -77,42 +80,74 @@ class SettingController extends Controller return Demo::response_204(); } - // Get options - $mail = collect([ - [ - 'name' => 'MAIL_DRIVER', - 'value' => $request->input('driver'), - ], - [ - 'name' => 'MAIL_HOST', - 'value' => $request->input('host'), - ], - [ - 'name' => 'MAIL_PORT', - 'value' => $request->input('port'), - ], - [ - 'name' => 'MAIL_USERNAME', - 'value' => $request->input('username'), - ], - [ - 'name' => 'MAIL_PASSWORD', - 'value' => $request->input('password'), - ], - [ - 'name' => 'MAIL_ENCRYPTION', - 'value' => $request->input('encryption'), - ], + setEnvironmentValue([ + 'MAIL_DRIVER' => $request->input('driver'), + 'MAIL_HOST' => $request->input('host'), + 'MAIL_PORT' => $request->input('port'), + 'MAIL_USERNAME' => $request->input('username'), + 'MAIL_PASSWORD' => $request->input('password'), + 'MAIL_ENCRYPTION' => $request->input('encryption'), ]); - // Store mail options - $mail->each(function ($col) { - setEnvironmentValue($col['name'], $col['value']); - }); - // Clear config cache Artisan::call('config:clear'); return response('Done', 204); } + + /** + * Configure stripe additionally + * + * @param Request $request + */ + public function set_stripe(Request $request) + { + // Get stripe status + $is_stripe = get_setting('payments_configured'); + + // Check setup status + if ($is_stripe) abort(401, 'Gone'); + + // Create stripe instance + $stripe = Stripe::make($request->secret, '2020-03-02'); + + // Try to get stripe account details + try { + $stripe->account()->details(); + } catch (UnauthorizedException $e) { + throw new HttpException(401, $e->getMessage()); + } + + // Get options + $settings = collect([ + [ + 'name' => 'stripe_currency', + 'value' => $request->currency, + ], + [ + 'name' => 'payments_configured', + 'value' => 1, + ], + [ + 'name' => 'payments_active', + 'value' => 1, + ], + ]); + + // Store options + $settings->each(function ($col) { + Setting::updateOrCreate(['name' => $col['name']], $col); + }); + + // Set stripe credentials to .env + setEnvironmentValue([ + 'CASHIER_CURRENCY' => $request->currency, + 'STRIPE_KEY' => $request->key, + 'STRIPE_SECRET' => $request->secret, + 'STRIPE_WEBHOOK_SECRET' => $request->webhookSecret, + ]); + + // Clear cache + Artisan::call('config:cache'); + } } diff --git a/public/mix-manifest.json b/public/mix-manifest.json index a8f9f4b4..5b118ca9 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,6 +1,6 @@ { "/js/main.js": "/js/main.js", "/css/app.css": "/css/app.css", - "/js/main.856279ed3bfe1397fae7.hot-update.js": "/js/main.856279ed3bfe1397fae7.hot-update.js", - "/js/main.9cab67db450838c320d4.hot-update.js": "/js/main.9cab67db450838c320d4.hot-update.js" + "/js/main.b8036b7a9b7c277bad46.hot-update.js": "/js/main.b8036b7a9b7c277bad46.hot-update.js", + "/js/main.83350fd29c57dbfa9818.hot-update.js": "/js/main.83350fd29c57dbfa9818.hot-update.js" } diff --git a/resources/js/views/Admin/AppSettings/AppSettingsTabs/Payments.vue b/resources/js/views/Admin/AppSettings/AppSettingsTabs/Payments.vue index fd036368..991837a6 100644 --- a/resources/js/views/Admin/AppSettings/AppSettingsTabs/Payments.vue +++ b/resources/js/views/Admin/AppSettings/AppSettingsTabs/Payments.vue @@ -710,7 +710,7 @@ // Send request to get verify account axios - .post('/api/setup/stripe-credentials', this.stripeCredentials) + .put('/api/settings/stripe', this.stripeCredentials) .then(() => { // End loading diff --git a/routes/api.php b/routes/api.php index d0026078..233cde7b 100644 --- a/routes/api.php +++ b/routes/api.php @@ -164,6 +164,7 @@ Route::group(['middleware' => ['auth:api', 'auth.master', 'auth.admin', 'scope:m // Settings Route::put('/settings/email', 'SettingController@set_email'); + Route::put('/settings/stripe', 'SettingController@set_stripe'); Route::patch('/settings', 'SettingController@update'); Route::get('/settings', 'SettingController@show'); });