5 * Contains \Drupal\Console\Command\PermissionDebugCommand.
8 namespace Drupal\Console\Command\Debug;
10 use Symfony\Component\Console\Input\InputInterface;
11 use Symfony\Component\Console\Output\OutputInterface;
12 use Symfony\Component\Console\Input\InputArgument;
13 use Drupal\Console\Core\Command\ContainerAwareCommand;
18 * @package Drupal\Console\Command\Debug
20 class PermissionCommand extends ContainerAwareCommand
25 protected function configure()
27 $this->setName('debug:permission')
28 ->setDescription($this->trans('commands.debug.permission.description'))
29 ->setHelp($this->trans('commands.debug.permission.help'))
32 InputArgument::OPTIONAL,
33 $this->trans('commands.debug.permission.arguments.role')
34 )->setAliases(['dp']);
40 protected function execute(InputInterface $input, OutputInterface $output)
42 $role = $input->getArgument('role');
43 // No role specified, show a list of ALL permissions.
46 $this->trans('commands.debug.permission.table-headers.permission-name'),
47 $this->trans('commands.debug.permission.table-headers.permission-label'),
48 $this->trans('commands.debug.permission.table-headers.permission-role')
51 $permissions = \Drupal::service('user.permissions')->getPermissions();
52 foreach ($permissions as $permission_name => $permission) {
53 $tableRows[$permission_name] = [
55 strip_tags($permission['title']->__toString()),
56 implode(', ', $this->getRolesAssignedByPermission($permission_name))
61 $this->getIo()->table($tableHeader, array_values($tableRows));
66 $this->trans('commands.debug.permission.table-headers.permission-name'),
67 $this->trans('commands.debug.permission.table-headers.permission-label')
70 $permissions = \Drupal::service('user.permissions')->getPermissions();
71 $roles = user_roles();
72 if (empty($roles[$role])) {
73 $message = sprintf($this->trans('commands.debug.permission.messages.role-error'), $role);
74 $this->getIo()->error($message);
77 $user_permission = $roles[$role]->getPermissions();
78 foreach ($permissions as $permission_name => $permission) {
79 if (in_array($permission_name, $user_permission)) {
80 $tableRows[$permission_name] = [
82 strip_tags($permission['title']->__toString())
87 $this->getIo()->table($tableHeader, array_values($tableRows));
93 * Get user roles Assigned by Permission.
95 * @param string $permission_name
99 * User roles filtered by permission else empty array.
101 public function getRolesAssignedByPermission($permission_name)
103 $roles = user_roles();
105 foreach ($roles as $role) {
106 if ($role->hasPermission($permission_name)) {
107 $roles_found[] = $role->getOriginalId();