diff --git a/app/Http/Controllers/Backstage/StripeConnectController.php b/app/Http/Controllers/Backstage/StripeConnectController.php index 6670470..dbe4f7f 100644 --- a/app/Http/Controllers/Backstage/StripeConnectController.php +++ b/app/Http/Controllers/Backstage/StripeConnectController.php @@ -9,6 +9,11 @@ use Illuminate\Support\Facades\Auth; class StripeConnectController extends Controller { + public function connect() + { + return view('backstage.stripe-connect.connect'); + } + public function authorizeRedirect() { $url = vsprintf('%s?%s', [ diff --git a/app/Http/Middleware/ForceStripeAccount.php b/app/Http/Middleware/ForceStripeAccount.php new file mode 100644 index 0000000..74f4b98 --- /dev/null +++ b/app/Http/Middleware/ForceStripeAccount.php @@ -0,0 +1,25 @@ +stripe_account_id === null) { + return redirect()->route('backstage.stripe-connect.connect'); + } + + // return $next($request); + } +} diff --git a/resources/views/backstage/stripe-connect/connect.blade.php b/resources/views/backstage/stripe-connect/connect.blade.php new file mode 100644 index 0000000..01bd0bf --- /dev/null +++ b/resources/views/backstage/stripe-connect/connect.blade.php @@ -0,0 +1,22 @@ +@extends('layouts.master') + +@section('body') +
+
+
+
+

Connect your Stripe account

+

+ Good news, TicketBeast now integrates directly with your Stripe account! +

+

+ To continue, connect your Stripe account by clicking the button below: +

+
+ Connect with Stripe +
+
+
+
+
+@endsection diff --git a/routes/web.php b/routes/web.php index 26aeba1..613d3a1 100644 --- a/routes/web.php +++ b/routes/web.php @@ -36,7 +36,8 @@ Route::group(['middleware' => 'auth', 'prefix' => 'backstage', 'namespace' => 'B Route::get('/concerts/{id}/messages/new', 'ConcertMessagesController@create')->name('backstage.concert-messages.new'); Route::post('/concerts/{id}/messages', 'ConcertMessagesController@store')->name('backstage.concert-messages.store'); - Route::get('/stripe-connect/authorize', 'StripeConnectController@authorizeRedirect'); - Route::get('/stripe-connect/redirect', 'StripeConnectController@redirect'); + Route::get('/stripe-connect/connect', 'StripeConnectController@connect')->name('backstage.stripe-connect.connect'); + Route::get('/stripe-connect/authorize', 'StripeConnectController@authorizeRedirect')->name('backstage.stripe-connect.authorize'); + Route::get('/stripe-connect/redirect', 'StripeConnectController@redirect')->name('backstage.stripe-connect.redirect'); }); diff --git a/tests/Browser/ConnectWithStripeTest.php b/tests/Browser/ConnectWithStripeTest.php index 5f8e48f..6881b06 100644 --- a/tests/Browser/ConnectWithStripeTest.php +++ b/tests/Browser/ConnectWithStripeTest.php @@ -21,7 +21,8 @@ class ConnectWithStripeTest extends DuskTestCase $this->browse(function (Browser $browser) use ($user) { $browser->loginAs($user) - ->visit('/backstage/stripe-connect/authorize') + ->visit('/backstage/stripe-connect/connect') + ->clickLink('Connect with Stripe') ->assertUrlIs('https://connect.stripe.com/oauth/authorize') ->assertQueryStringHas('response_type', 'code') ->assertQueryStringHas('scope', 'read_write') diff --git a/tests/Unit/Http/Middleware/ForceStripeAccountTest.php b/tests/Unit/Http/Middleware/ForceStripeAccountTest.php new file mode 100644 index 0000000..6f23f74 --- /dev/null +++ b/tests/Unit/Http/Middleware/ForceStripeAccountTest.php @@ -0,0 +1,33 @@ +be(factory(User::class)->create([ + 'stripe_account_id' => null, + ])); + + $middleware = new ForceStripeAccount; + + $response = $middleware->handle(new Request, function ($request) { + $this->fail("Next middleware was called when it should not have been."); + }); + + $this->assertInstanceOf(RedirectResponse::class, $response); + $this->assertEquals(route('backstage.stripe-connect.connect'), $response->getTargetUrl()); + } +}