added role cards to permission screen (#4401)
* simplify creating new roles by auto-replacing input
This commit is contained in:
@@ -16,6 +16,7 @@ use App\Event\PermissionSectionsEvent;
|
||||
use App\Event\PermissionsEvent;
|
||||
use App\Form\RoleType;
|
||||
use App\Model\PermissionSection;
|
||||
use App\Repository\Query\UserQuery;
|
||||
use App\Repository\RoleRepository;
|
||||
use App\Repository\UserRepository;
|
||||
use App\Security\RolePermissionManager;
|
||||
@@ -46,7 +47,7 @@ final class PermissionController extends AbstractController
|
||||
|
||||
#[Route(path: '', name: 'admin_user_permissions', methods: ['GET', 'POST'])]
|
||||
#[IsGranted('role_permissions')]
|
||||
public function permissions(EventDispatcherInterface $dispatcher, CsrfTokenManagerInterface $csrfTokenManager, RoleService $roleService): Response
|
||||
public function permissions(EventDispatcherInterface $dispatcher, CsrfTokenManagerInterface $csrfTokenManager, RoleService $roleService, UserRepository $userRepository): Response
|
||||
{
|
||||
$all = $this->roleRepository->findAll();
|
||||
$existing = [];
|
||||
@@ -151,7 +152,10 @@ final class PermissionController extends AbstractController
|
||||
$page->setHelp('permissions.html');
|
||||
$page->setActionName('user_permissions');
|
||||
|
||||
$users = $userRepository->getUsersForQuery(new UserQuery());
|
||||
|
||||
return $this->render('permission/permissions.html.twig', [
|
||||
'users' => $users,
|
||||
'page_setup' => $page,
|
||||
'token' => $csrfTokenManager->refreshToken(self::TOKEN_NAME)->getValue(),
|
||||
'roles' => array_values($roles),
|
||||
|
||||
@@ -46,4 +46,9 @@ class Role
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function isUser(): bool
|
||||
{
|
||||
return $this->name === User::ROLE_USER;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,22 +34,43 @@ final class RoleType extends AbstractType
|
||||
]
|
||||
]);
|
||||
|
||||
$replacer = function ($roleName): ?string {
|
||||
if ($roleName === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (\is_string($roleName)) {
|
||||
$roleName = preg_replace('/[^a-zA-Z_]/', '_', $roleName);
|
||||
$roleName = preg_replace('/_+/', '_', $roleName ?? '');
|
||||
$roleName = ltrim($roleName ?? '', '_');
|
||||
$roleName = rtrim($roleName, '_');
|
||||
$roleName = strtoupper($roleName);
|
||||
}
|
||||
|
||||
return $roleName;
|
||||
};
|
||||
|
||||
// help the user to figure out the allowed name
|
||||
$builder->get('name')->addViewTransformer(
|
||||
new CallbackTransformer(
|
||||
function ($roleName) {
|
||||
if (\is_string($roleName)) {
|
||||
$roleName = str_replace(' ', '_', $roleName);
|
||||
$roleName = str_replace('-', '_', $roleName);
|
||||
}
|
||||
|
||||
return $roleName;
|
||||
function ($roleName) use ($replacer) {
|
||||
return $replacer($roleName);
|
||||
},
|
||||
function ($roleName) {
|
||||
return $roleName;
|
||||
}
|
||||
)
|
||||
);
|
||||
$builder->get('name')->addModelTransformer(
|
||||
new CallbackTransformer(
|
||||
function ($roleName) {
|
||||
return $roleName;
|
||||
},
|
||||
function ($roleName) use ($replacer) {
|
||||
return $replacer($roleName);
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver): void
|
||||
|
||||
Reference in New Issue
Block a user