diff --git a/core/modules/user/lib/Drupal/user/Access/RoleDeleteAccessCheck.php b/core/modules/user/lib/Drupal/user/Access/RoleDeleteAccessCheck.php deleted file mode 100644 index 1efc872..0000000 --- a/core/modules/user/lib/Drupal/user/Access/RoleDeleteAccessCheck.php +++ /dev/null @@ -1,35 +0,0 @@ -getRequirements()); - } - - /** - * Implements AccessCheckInterface::access(). - */ - public function access(Route $route, Request $request) { - if ($user_role = $request->attributes->get('user_role')) { - return $user_role->access('delete'); - } - return FALSE; - } -} diff --git a/core/modules/user/lib/Drupal/user/Form/UserRoleDelete.php b/core/modules/user/lib/Drupal/user/Form/UserRoleDelete.php deleted file mode 100644 index 969d89f..0000000 --- a/core/modules/user/lib/Drupal/user/Form/UserRoleDelete.php +++ /dev/null @@ -1,71 +0,0 @@ - $this->user_role->label())); - } - - /** - * Implements \Drupal\Core\Form\ConfirmFormBase::getCancelPath(). - */ - protected function getCancelPath() { - return 'admin/people/roles'; - } - - /** - * Implements \Drupal\Core\Form\ConfirmFormBase::getConfirmText(). - */ - protected function getConfirmText() { - return t('Delete'); - } - - /** - * Implements \Drupal\Core\Form\FormInterface::buildForm(). - */ - public function buildForm(array $form, array &$form_state, Role $user_role = NULL) { - $this->user_role = $user_role; - return parent::buildForm($form, $form_state); - } - - /** - * Implements \Drupal\Core\Form\FormInterface::submitForm(). - */ - public function submitForm(array &$form, array &$form_state) { - $this->user_role->delete(); - watchdog('user', 'The role %name has been deleted.', array('%name' => $this->user_role->label())); - drupal_set_message(t('The role %name has been deleted.', array('%name' => $this->user_role->label()))); - $form_state['redirect'] = 'admin/people/roles'; - } - -} diff --git a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/Role.php b/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/Role.php index 20c41df..f64955c 100644 --- a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/Role.php +++ b/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/Role.php @@ -19,7 +19,6 @@ * label = @Translation("Role"), * module = "user", * controller_class = "Drupal\user\RoleStorageController", - * access_controller_class = "Drupal\user\RoleAccessController", * config_prefix = "user.role", * entity_keys = { * "id" = "id", diff --git a/core/modules/user/lib/Drupal/user/RoleAccessController.php b/core/modules/user/lib/Drupal/user/RoleAccessController.php deleted file mode 100644 index b09fe6c..0000000 --- a/core/modules/user/lib/Drupal/user/RoleAccessController.php +++ /dev/null @@ -1,32 +0,0 @@ -id() == DRUPAL_ANONYMOUS_RID || $entity->id() == DRUPAL_AUTHENTICATED_RID) { - return FALSE; - } - - return user_access('administer permissions'); - } - -} diff --git a/core/modules/user/lib/Drupal/user/UserBundle.php b/core/modules/user/lib/Drupal/user/UserBundle.php index c390771..f7c4a88 100644 --- a/core/modules/user/lib/Drupal/user/UserBundle.php +++ b/core/modules/user/lib/Drupal/user/UserBundle.php @@ -24,9 +24,6 @@ public function build(ContainerBuilder $container) { ->addTag('access_check'); $container->register('access_check.user.register', 'Drupal\user\Access\RegisterAccessCheck') ->addTag('access_check'); - $container->register('access_check.role.delete', 'Drupal\user\Access\RoleDeleteAccessCheck') - ->addTag('access_check'); - $container ->register('user.data', 'Drupal\user\UserData') ->addArgument(new Reference('database')); diff --git a/core/modules/user/user.admin.inc b/core/modules/user/user.admin.inc index a4da046..c3931d8 100644 --- a/core/modules/user/user.admin.inc +++ b/core/modules/user/user.admin.inc @@ -1046,3 +1046,23 @@ function user_admin_role_submit($form, &$form_state) { function user_admin_role_delete_submit($form, &$form_state) { $form_state['redirect'] = 'admin/people/roles/delete/' . $form_state['values']['role']['id']; } + +/** + * Form to confirm role delete operation. + */ +function user_admin_role_delete_confirm($form, &$form_state, $role) { + $form['id'] = array( + '#type' => 'value', + '#value' => $role->id(), + ); + return confirm_form($form, t('Are you sure you want to delete the role %name ?', array('%name' => $role->label())), 'admin/people/roles', t('This action cannot be undone.'), t('Delete')); +} + +/** + * Form submit handler for user_admin_role_delete_confirm(). + */ +function user_admin_role_delete_confirm_submit($form, &$form_state) { + entity_delete_multiple('user_role', array($form_state['values']['id'])); + drupal_set_message(t('The role has been deleted.')); + $form_state['redirect'] = 'admin/people/roles'; +} diff --git a/core/modules/user/user.module b/core/modules/user/user.module index 21891ec..bdf5862 100644 --- a/core/modules/user/user.module +++ b/core/modules/user/user.module @@ -974,12 +974,11 @@ function user_menu() { ); $items['admin/people/roles/delete/%user_role'] = array( 'title' => 'Delete role', -// 'page callback' => 'drupal_get_form', -// 'page arguments' => array('user_admin_role_delete_confirm', 4), -// 'access callback' => 'user_role_delete_access', -// 'access arguments' => array(4), -// 'file' => 'user.admin.inc', - 'route_name' => 'user_role_delete', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('user_admin_role_delete_confirm', 4), + 'access callback' => 'user_role_delete_access', + 'access arguments' => array(4), + 'file' => 'user.admin.inc', ); $items['admin/people/create'] = array( @@ -1857,6 +1856,18 @@ function user_role_load($rid) { } /** + * Menu access callback for user role deletion. + */ +function user_role_delete_access($role) { + // Prevent the system-defined roles from being removed. + if ($role->id() == DRUPAL_ANONYMOUS_RID || $role->id() == DRUPAL_AUTHENTICATED_RID) { + return FALSE; + } + + return user_access('administer permissions'); +} + +/** * Determine the modules that permissions belong to. * * @return diff --git a/core/modules/user/user.routing.yml b/core/modules/user/user.routing.yml index e4a087b..34b6059 100644 --- a/core/modules/user/user.routing.yml +++ b/core/modules/user/user.routing.yml @@ -18,11 +18,3 @@ user_autocomplete_anonymous: _controller: '\Drupal\user\UserAutocompleteController::autocompleteUserAnonymous' requirements: _permission: 'access user profiles' - -user_role_delete: - pattern: '/admin/people/roles/delete/{user_role}' - defaults: - _form: '\Drupal\user\Form\UserRoleDelete' - requirements: - _access_role_delete: 'TRUE' - _permission: 'administer permissions'