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:
+
+
+
+
+
+
+@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());
+ }
+}