X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fdrupal%2Fconsole%2Fsrc%2FCommand%2FDebug%2FPermissionCommand.php;fp=vendor%2Fdrupal%2Fconsole%2Fsrc%2FCommand%2FDebug%2FPermissionCommand.php;h=99acbb9c6b2a1d652ed2add972627aaa20725f68;hp=0000000000000000000000000000000000000000;hb=9917807b03b64faf00f6a1f29dcb6eafc454efa5;hpb=aea91e65e895364e460983b890e295aa5d5540a5 diff --git a/vendor/drupal/console/src/Command/Debug/PermissionCommand.php b/vendor/drupal/console/src/Command/Debug/PermissionCommand.php new file mode 100644 index 000000000..99acbb9c6 --- /dev/null +++ b/vendor/drupal/console/src/Command/Debug/PermissionCommand.php @@ -0,0 +1,112 @@ +setName('debug:permission') + ->setDescription($this->trans('commands.debug.permission.description')) + ->setHelp($this->trans('commands.debug.permission.help')) + ->addArgument( + 'role', + InputArgument::OPTIONAL, + $this->trans('commands.debug.permission.arguments.role') + )->setAliases(['dp']); + } + + /** + * {@inheritdoc} + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + $role = $input->getArgument('role'); + // No role specified, show a list of ALL permissions. + if (!$role) { + $tableHeader = [ + $this->trans('commands.debug.permission.table-headers.permission-name'), + $this->trans('commands.debug.permission.table-headers.permission-label'), + $this->trans('commands.debug.permission.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); + $this->getIo()->table($tableHeader, array_values($tableRows)); + + return true; + } else { + $tableHeader = [ + $this->trans('commands.debug.permission.table-headers.permission-name'), + $this->trans('commands.debug.permission.table-headers.permission-label') + ]; + $tableRows = []; + $permissions = \Drupal::service('user.permissions')->getPermissions(); + $roles = user_roles(); + if (empty($roles[$role])) { + $message = sprintf($this->trans('commands.debug.permission.messages.role-error'), $role); + $this->getIo()->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); + $this->getIo()->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; + } +}