setConfigFactory($config_factory); $this->cacheTagsInvalidator = $cache_tags_invalidator; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container) { return new static( $container->get('config.factory'), $container->get('cache_tags.invalidator'), ); } /** * {@inheritdoc} */ public function getFormId() { return 'farm_role_account_admin_settings'; } /** * {@inheritdoc} */ protected function getEditableConfigNames() { return [ static::SETTINGS, ]; } /** * {@inheritdoc} */ public function buildForm(array $form, FormStateinterface $form_state) { $config = $this->config(static::SETTINGS); $form['allow_peer_role_assignment'] = [ '#type' => 'checkbox', '#title' => $this->t('Allow peer role assignment'), '#description' => $this->t('Allow users with the Account Admin role to assign/revoke the Account Admin role.'), '#default_value' => $config->get('allow_peer_role_assignment'), ]; return parent::buildForm($form, $form_state); } /** * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { $this->configFactory->getEditable(static::SETTINGS) ->set('allow_peer_role_assignment', $form_state->getValue('allow_peer_role_assignment')) ->save(); // Invalidate the user_role:farm_account_admin cache tag. $this->cacheTagsInvalidator->invalidateTags(['user_role:farm_account_admin']); parent::submitForm($form, $form_state); } }