5 * Contains \Drupal\Console\Command\PermissionDebugCommand.
8 namespace Drupal\Console\Command;
10 use Symfony\Component\Console\Input\InputInterface;
11 use Symfony\Component\Console\Output\OutputInterface;
12 use Symfony\Component\Console\Input\InputArgument;
13 use Symfony\Component\Console\Command\Command;
14 use Drupal\Console\Core\Command\Shared\ContainerAwareCommandTrait;
15 use Drupal\Console\Core\Style\DrupalStyle;
20 * @package Drupal\Console\Command
22 class PermissionDebugCommand extends Command
24 use ContainerAwareCommandTrait;
28 protected function configure()
30 $this->setName('permission:debug')
31 ->setDescription($this->trans('commands.permission.debug.description'))
32 ->setHelp($this->trans('commands.permission.debug.help'))
35 InputArgument::OPTIONAL,
36 $this->trans('commands.permission.debug.arguments.role')
43 protected function execute(InputInterface $input, OutputInterface $output)
45 $io = new DrupalStyle($input, $output);
47 $role = $input->getArgument('role');
48 // No role specified, show a list of ALL permissions.
51 $this->trans('commands.permission.debug.table-headers.permission-name'),
52 $this->trans('commands.permission.debug.table-headers.permission-label'),
53 $this->trans('commands.permission.debug.table-headers.permission-role')
56 $permissions = \Drupal::service('user.permissions')->getPermissions();
57 foreach ($permissions as $permission_name => $permission) {
58 $tableRows[$permission_name] = [
60 strip_tags($permission['title']->__toString()),
61 implode(', ', $this->getRolesAssignedByPermission($permission_name))
66 $io->table($tableHeader, array_values($tableRows));
71 $this->trans('commands.permission.debug.table-headers.permission-name'),
72 $this->trans('commands.permission.debug.table-headers.permission-label')
75 $permissions = \Drupal::service('user.permissions')->getPermissions();
76 $roles = user_roles();
77 if (empty($roles[$role])) {
78 $message = sprintf($this->trans('commands.permission.debug.messages.role-error'), $role);
82 $user_permission = $roles[$role]->getPermissions();
83 foreach ($permissions as $permission_name => $permission) {
84 if (in_array($permission_name, $user_permission)) {
85 $tableRows[$permission_name] = [
87 strip_tags($permission['title']->__toString())
92 $io->table($tableHeader, array_values($tableRows));
98 * Get user roles Assigned by Permission.
100 * @param string $permission_name
104 * User roles filtered by permission else empty array.
106 public function getRolesAssignedByPermission($permission_name)
108 $roles = user_roles();
110 foreach ($roles as $role) {
111 if ($role->hasPermission($permission_name)) {
112 $roles_found[] = $role->getOriginalId();