--- /dev/null
+<?php
+
+namespace Drush\Role;
+
+use Drupal\user\Entity\Role;
+
+class Role8 extends Role7 {
+ public function role_create($role_machine_name, $role_human_readable_name = '') {
+ // In D6 and D7, when we create a new role, the role
+ // machine name is specified, and the numeric rid is
+ // auto-assigned (next available id); in D8, when we
+ // create a new role, we need to specify both the rid,
+ // which is now the role machine name, and also a human-readable
+ // role name. If the client did not provide a human-readable
+ // name, then we'll use the role machine name in its place.
+ if (empty($role_human_readable_name)) {
+ $role_human_readable_name = ucfirst($role_machine_name);
+ }
+ $role = new Role(array(
+ 'id' => $role_machine_name,
+ 'label' => $role_human_readable_name,
+ ), 'user_role');
+ $role->save();
+ return $role;
+ }
+
+ public function getPerms() {
+ $role = entity_load('user_role', $this->rid);
+ $perms = $role->getPermissions();
+ // $perms = user_role_permissions(array($this->rid => $this->name));
+ return $perms;
+ }
+
+ public function getAllModulePerms() {
+ $perms = \Drupal::service('user.permissions')->getPermissions();
+ return array_keys($perms);
+ }
+
+ public function getModulePerms($module) {
+ $module_perms = array();
+ $perms = \Drupal::service('user.permissions')->getPermissions();
+ foreach ($perms as $name => $perm) {
+ if ($perm['provider'] == $module) {
+ $module_perms[] = $name;
+ }
+ }
+ return $module_perms;
+ }
+
+ public function delete() {
+ $role = entity_load('user_role', $this->rid);
+ $role->delete();
+ }
+
+ public function grant_permissions($perms) {
+ return drush_op('user_role_grant_permissions', $this->rid, $perms);
+ }
+
+ public function revoke_permissions($perms) {
+ return drush_op('user_role_revoke_permissions', $this->rid, $perms);
+ }
+}