Skip to content

Commit b8abec6

Browse files
authored
Given the same permissions between users and admins (#72)
1 parent f0438b1 commit b8abec6

File tree

5 files changed

+9
-117
lines changed

5 files changed

+9
-117
lines changed

src/Controller/Admin/BackupCrudController.php

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
use App\Entity\Backup;
99
use App\Entity\User;
1010
use App\Helper\FlysystemHelper;
11-
use App\Security\Voter\BackupVoter;
1211
use Doctrine\ORM\EntityManagerInterface;
1312
use Doctrine\ORM\QueryBuilder;
1413
use EasyCorp\Bundle\EasyAdminBundle\Collection\FieldCollection;
@@ -65,10 +64,6 @@ public function configureFilters(Filters $filters): Filters
6564
public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): QueryBuilder
6665
{
6766
return $this->container->get(EntityRepository::class)->createQueryBuilder($searchDto, $entityDto, $fields, $filters)
68-
->join('entity.database', 'database')
69-
->join('database.owner', 'owner')
70-
->andWhere('owner.id = :user')
71-
->setParameter('user', $this->getUser()->getId())
7267
->orderBy('entity.createdAt', 'DESC');
7368
}
7469

@@ -96,8 +91,6 @@ public function configureActions(Actions $actions): Actions
9691

9792
return $actions
9893
->add(Crud::PAGE_INDEX, $downloadBackupAction)
99-
->setPermission('downloadBackup', BackupVoter::CAN_SHOW_BACKUP)
100-
->setPermission(Action::DELETE, BackupVoter::CAN_SHOW_BACKUP)
10194
->remove(Crud::PAGE_INDEX, Action::NEW)
10295
->remove(Crud::PAGE_INDEX, Action::EDIT)
10396
->disable(Action::NEW, Action::EDIT)

src/Controller/Admin/DatabaseCrudController.php

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
use App\Entity\Enum\BackupTaskPeriodicity;
1313
use App\Entity\User;
1414
use App\Helper\DatabaseHelper;
15-
use App\Security\Voter\DatabaseVoter;
1615
use App\Service\BackupService;
1716
use App\Service\BackupStatus;
1817
use DateTime;
@@ -84,16 +83,12 @@ public function configureFilters(Filters $filters): Filters
8483
public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): QueryBuilder
8584
{
8685
return $this->container->get(EntityRepository::class)->createQueryBuilder($searchDto, $entityDto, $fields, $filters)
87-
->join('entity.owner', 'owner')
88-
->andWhere('owner.id = :user')
89-
->setParameter('user', $this->getUser()->getId())
9086
->orderBy('entity.createdAt', 'DESC');
9187
}
9288

9389
public function launchBackupAction(AdminContext $context): Response
9490
{
9591
$database = $context->getEntity()->getInstance();
96-
$this->denyAccessUnlessGranted(DatabaseVoter::CAN_SHOW_DATABASE, $database);
9792

9893
$backupStatus = $this->backupService->backup($database, Backup::CONTEXT_MANUAL);
9994
$this->backupService->clean($database);
@@ -115,7 +110,6 @@ public function showDatabaseBackupsAction(AdminContext $context): Response
115110
{
116111
/** @var Database $database */
117112
$database = $context->getEntity()->getInstance();
118-
$this->denyAccessUnlessGranted(DatabaseVoter::CAN_SHOW_DATABASE, $database);
119113

120114
$url = $this->adminUrlGenerator->setController(BackupCrudController::class)
121115
->setAction(Action::INDEX)
@@ -135,7 +129,6 @@ public function checkConnection(AdminContext $context): Response
135129
{
136130
/** @var Database $database */
137131
$database = $context->getEntity()->getInstance();
138-
$this->denyAccessUnlessGranted(DatabaseVoter::CAN_SHOW_DATABASE, $database);
139132

140133
if ($this->databaseHelper->isConnectionOk($database)) {
141134
$this->addFlash('success', new TranslatableMessage('database.check_connection.flash_success', ['%database%' => $database->getName()]));
@@ -191,11 +184,6 @@ public function configureActions(Actions $actions): Actions
191184
->add(Crud::PAGE_INDEX, $launchBackupAction)
192185
->add(Crud::PAGE_INDEX, $showDatabaseBackupsAction)
193186
->add(Crud::PAGE_INDEX, $checkConnectionAction)
194-
->setPermission(Action::DELETE, DatabaseVoter::CAN_SHOW_DATABASE)
195-
->setPermission(Action::EDIT, DatabaseVoter::CAN_SHOW_DATABASE)
196-
->setPermission('launchBackup', DatabaseVoter::CAN_SHOW_DATABASE)
197-
->setPermission('showDatabaseBackups', DatabaseVoter::CAN_SHOW_DATABASE)
198-
->setPermission('checkConnection', DatabaseVoter::CAN_SHOW_DATABASE)
199187
->remove(Crud::PAGE_NEW, Action::SAVE_AND_ADD_ANOTHER)
200188
->update(Crud::PAGE_INDEX, Action::NEW, function (Action $action) {
201189
return $action->setLabel('database.action.new');

src/Security/Voter/BackupVoter.php

Lines changed: 0 additions & 47 deletions
This file was deleted.

src/Security/Voter/DatabaseVoter.php

Lines changed: 0 additions & 47 deletions
This file was deleted.

tests/Controller/Admin/DatabaseCrudControllerTest.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public function testEdit(): void
1717

1818
$this->loginAsAdmin();
1919
self::$client->request('GET', $url);
20-
self::assertResponseStatusCodeSame(403);
20+
self::assertResponseIsSuccessful();
2121

2222
$this->loginAsUser();
2323
self::$client->request('GET', $url);
@@ -33,7 +33,7 @@ public function testShowDatabaseBackupsAction(): void
3333

3434
$this->loginAsAdmin();
3535
self::$client->request('GET', $url);
36-
self::assertResponseStatusCodeSame(403);
36+
self::assertResponseRedirects();
3737

3838
$this->loginAsUser();
3939
self::$client->request('GET', $url);
@@ -49,7 +49,9 @@ public function testCheckConnection(): void
4949

5050
$this->loginAsUser();
5151
self::$client->request('GET', $url);
52-
self::assertResponseStatusCodeSame(403);
52+
self::assertResponseRedirects();
53+
$crawler = self::$client->followRedirect();
54+
self::assertCount(1, $crawler->filter('.alert-danger'));
5355

5456
$this->loginAsAdmin();
5557
self::$client->request('GET', $url);
@@ -68,7 +70,10 @@ public function testLaunchBackupAction(): void
6870

6971
$this->loginAsUser();
7072
self::$client->request('GET', $url);
71-
self::assertResponseStatusCodeSame(403);
73+
self::assertResponseRedirects();
74+
// We expect an error as parameters are randomized with fixtures.
75+
$crawler = self::$client->followRedirect();
76+
self::assertCount(1, $crawler->filter('.alert-danger'));
7277

7378
$this->loginAsAdmin();
7479
self::$client->request('GET', $url);

0 commit comments

Comments
 (0)