Chris@0: entityType = $entity_type; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { Chris@0: return new static( Chris@0: $configuration, Chris@0: $plugin_id, Chris@0: $plugin_definition, Chris@0: $container->get('entity.manager')->getDefinition('user_role') Chris@0: ); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function defaultConfiguration() { Chris@0: return [ Chris@0: 'rid' => '', Chris@0: ]; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function buildConfigurationForm(array $form, FormStateInterface $form_state) { Chris@0: $roles = user_role_names(TRUE); Chris@0: unset($roles[RoleInterface::AUTHENTICATED_ID]); Chris@0: $form['rid'] = [ Chris@0: '#type' => 'radios', Chris@0: '#title' => t('Role'), Chris@0: '#options' => $roles, Chris@0: '#default_value' => $this->configuration['rid'], Chris@0: '#required' => TRUE, Chris@0: ]; Chris@0: return $form; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function submitConfigurationForm(array &$form, FormStateInterface $form_state) { Chris@0: $this->configuration['rid'] = $form_state->getValue('rid'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function calculateDependencies() { Chris@0: if (!empty($this->configuration['rid'])) { Chris@0: $prefix = $this->entityType->getConfigPrefix() . '.'; Chris@0: $this->addDependency('config', $prefix . $this->configuration['rid']); Chris@0: } Chris@0: return $this->dependencies; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function access($object, AccountInterface $account = NULL, $return_as_object = FALSE) { Chris@0: /** @var \Drupal\user\UserInterface $object */ Chris@0: $access = $object->access('update', $account, TRUE) Chris@0: ->andIf($object->roles->access('edit', $account, TRUE)); Chris@0: Chris@0: return $return_as_object ? $access : $access->isAllowed(); Chris@0: } Chris@0: Chris@0: }