Block organizer features when Stripe Connect account is not validated
- Hide organizer tabs (events, subaccounts, payouts) if Stripe not ready - Redirect organizer tab content and all organizer routes to /mon-compte - Add requireStripeReady() guard on all ROLE_ORGANIZER routes - Force default tab to 'tickets' when Stripe is not validated - Update test fixtures: approved organizers get Stripe enabled by default - Add tests for blocked tabs and blocked event creation without Stripe Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -217,7 +217,12 @@ class AccountControllerTest extends WebTestCase
|
||||
public function testOrganizerWithoutStripeShowsSetupMessage(): void
|
||||
{
|
||||
$client = static::createClient();
|
||||
$em = static::getContainer()->get(EntityManagerInterface::class);
|
||||
$user = $this->createUser(['ROLE_ORGANIZER'], true);
|
||||
$user->setStripeAccountId(null);
|
||||
$user->setStripeChargesEnabled(false);
|
||||
$user->setStripePayoutsEnabled(false);
|
||||
$em->flush();
|
||||
|
||||
$client->loginUser($user);
|
||||
$crawler = $client->request('GET', '/mon-compte');
|
||||
@@ -232,6 +237,8 @@ class AccountControllerTest extends WebTestCase
|
||||
$em = static::getContainer()->get(EntityManagerInterface::class);
|
||||
$user = $this->createUser(['ROLE_ORGANIZER'], true);
|
||||
$user->setStripeAccountId('acct_pending');
|
||||
$user->setStripeChargesEnabled(false);
|
||||
$user->setStripePayoutsEnabled(false);
|
||||
$em->flush();
|
||||
|
||||
$client->loginUser($user);
|
||||
@@ -241,6 +248,47 @@ class AccountControllerTest extends WebTestCase
|
||||
self::assertSelectorTextContains('body', 'en cours de verification');
|
||||
}
|
||||
|
||||
public function testOrganizerWithoutStripeRedirectsFromOrganizerTabs(): void
|
||||
{
|
||||
$client = static::createClient();
|
||||
$em = static::getContainer()->get(EntityManagerInterface::class);
|
||||
$user = $this->createUser(['ROLE_ORGANIZER'], true);
|
||||
$user->setStripeAccountId(null);
|
||||
$user->setStripeChargesEnabled(false);
|
||||
$user->setStripePayoutsEnabled(false);
|
||||
$em->flush();
|
||||
|
||||
$client->loginUser($user);
|
||||
|
||||
$client->request('GET', '/mon-compte?tab=events');
|
||||
self::assertResponseIsSuccessful();
|
||||
self::assertSelectorTextContains('body', 'Configuration Stripe requise');
|
||||
|
||||
$client->request('GET', '/mon-compte?tab=subaccounts');
|
||||
self::assertResponseIsSuccessful();
|
||||
self::assertSelectorTextContains('body', 'Configuration Stripe requise');
|
||||
|
||||
$client->request('GET', '/mon-compte?tab=payouts');
|
||||
self::assertResponseIsSuccessful();
|
||||
self::assertSelectorTextContains('body', 'Configuration Stripe requise');
|
||||
}
|
||||
|
||||
public function testOrganizerWithoutStripeBlocksEventCreation(): void
|
||||
{
|
||||
$client = static::createClient();
|
||||
$em = static::getContainer()->get(EntityManagerInterface::class);
|
||||
$user = $this->createUser(['ROLE_ORGANIZER'], true);
|
||||
$user->setStripeAccountId(null);
|
||||
$user->setStripeChargesEnabled(false);
|
||||
$user->setStripePayoutsEnabled(false);
|
||||
$em->flush();
|
||||
|
||||
$client->loginUser($user);
|
||||
$client->request('GET', '/mon-compte/evenement/creer');
|
||||
|
||||
self::assertResponseRedirects('/mon-compte');
|
||||
}
|
||||
|
||||
public function testOrganizerWithStripeActiveShowsSuccess(): void
|
||||
{
|
||||
$client = static::createClient();
|
||||
@@ -2170,6 +2218,11 @@ class AccountControllerTest extends WebTestCase
|
||||
|
||||
if ($approved) {
|
||||
$user->setIsApproved(true);
|
||||
if (\in_array('ROLE_ORGANIZER', $roles, true)) {
|
||||
$user->setStripeAccountId('acct_test_'.uniqid());
|
||||
$user->setStripeChargesEnabled(true);
|
||||
$user->setStripePayoutsEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
$em->persist($user);
|
||||
|
||||
Reference in New Issue
Block a user