+++ /dev/null
-<?php
-
-/**
- * @file
- * Contains \Drupal\Console\Command\PermissionDebugCommand.
- */
-
-namespace Drupal\Console\Command;
-
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Command\Command;
-use Drupal\Console\Core\Command\Shared\ContainerAwareCommandTrait;
-use Drupal\Console\Core\Style\DrupalStyle;
-
-/**
- * Class DebugCommand
- *
- * @package Drupal\Console\Command
- */
-class PermissionDebugCommand extends Command
-{
- use ContainerAwareCommandTrait;
- /**
- * {@inheritdoc}
- */
- protected function configure()
- {
- $this->setName('permission:debug')
- ->setDescription($this->trans('commands.permission.debug.description'))
- ->setHelp($this->trans('commands.permission.debug.help'))
- ->addArgument(
- 'role',
- InputArgument::OPTIONAL,
- $this->trans('commands.permission.debug.arguments.role')
- );
- }
-
- /**
- * {@inheritdoc}
- */
- protected function execute(InputInterface $input, OutputInterface $output)
- {
- $io = new DrupalStyle($input, $output);
-
- $role = $input->getArgument('role');
- // No role specified, show a list of ALL permissions.
- if (!$role) {
- $tableHeader = [
- $this->trans('commands.permission.debug.table-headers.permission-name'),
- $this->trans('commands.permission.debug.table-headers.permission-label'),
- $this->trans('commands.permission.debug.table-headers.permission-role')
- ];
- $tableRows = [];
- $permissions = \Drupal::service('user.permissions')->getPermissions();
- foreach ($permissions as $permission_name => $permission) {
- $tableRows[$permission_name] = [
- $permission_name,
- strip_tags($permission['title']->__toString()),
- implode(', ', $this->getRolesAssignedByPermission($permission_name))
- ];
- }
-
- ksort($tableRows);
- $io->table($tableHeader, array_values($tableRows));
-
- return true;
- } else {
- $tableHeader = [
- $this->trans('commands.permission.debug.table-headers.permission-name'),
- $this->trans('commands.permission.debug.table-headers.permission-label')
- ];
- $tableRows = [];
- $permissions = \Drupal::service('user.permissions')->getPermissions();
- $roles = user_roles();
- if (empty($roles[$role])) {
- $message = sprintf($this->trans('commands.permission.debug.messages.role-error'), $role);
- $io->error($message);
- return true;
- }
- $user_permission = $roles[$role]->getPermissions();
- foreach ($permissions as $permission_name => $permission) {
- if (in_array($permission_name, $user_permission)) {
- $tableRows[$permission_name] = [
- $permission_name,
- strip_tags($permission['title']->__toString())
- ];
- }
- }
- ksort($tableRows);
- $io->table($tableHeader, array_values($tableRows));
- return true;
- }
- }
-
- /**
- * Get user roles Assigned by Permission.
- *
- * @param string $permission_name
- * Permission Name.
- *
- * @return array
- * User roles filtered by permission else empty array.
- */
- public function getRolesAssignedByPermission($permission_name)
- {
- $roles = user_roles();
- $roles_found = [];
- foreach ($roles as $role) {
- if ($role->hasPermission($permission_name)) {
- $roles_found[] = $role->getOriginalId();
- }
- }
- return $roles_found;
- }
-}