forked from d8-contrib-modules/pubkey_encrypt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
PubkeyEncryptSettingsForm.php
107 lines (88 loc) · 2.83 KB
/
PubkeyEncryptSettingsForm.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php
/**
* @file
* Contains \Drupal\pubkey_encrypt\Form\PubkeyEncryptSettingsForm.
*/
namespace Drupal\pubkey_encrypt\Form;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\pubkey_encrypt\PubkeyEncryptManager;
use Drupal\user\Entity\Role;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Form builder for the Pubkey Encrypt main settings form.
*/
class PubkeyEncryptSettingsForm extends ConfigFormBase {
/**
* Pubkey Encrypt manager service.
*
* @var \Drupal\pubkey_encrypt\PubkeyEncryptManager
*/
protected $pubkeyEncryptManager;
/**
* Constructs a PubkeyEncryptSettingsForm object.
*
* @param \Drupal\pubkey_encrypt\PubkeyEncryptManager $pubkey_encrypt_manager
* Pubkey Encrypt service.
*/
public function __construct(PubkeyEncryptManager $pubkey_encrypt_manager) {
$this->pubkeyEncryptManager = $pubkey_encrypt_manager;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static(
$container->get('pubkey_encrypt.pubkey_encrypt_manager')
);
}
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'pubkey_encrypt_admin_settings';
}
/**
* {@inheritdoc}
*/
protected function getEditableConfigNames() {
return ['pubkey_encrypt.admin_settings'];
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
$form = parent::buildForm($form, $form_state);
$config = $this->config('pubkey_encrypt.admin_settings');
$role_options = [];
foreach (Role::loadMultiple() as $role) {
$role_options[$role->id()] = $role->label();
}
unset($role_options[AccountInterface::ANONYMOUS_ROLE]);
unset($role_options[AccountInterface::AUTHENTICATED_ROLE]);
$form['disabled_roles'] = array(
'#type' => 'checkboxes',
'#title' => $this->t('Disabled roles'),
'#description' => $this->t("Pubkey would disable its processes for all roles selected here. This would boost the performance of various operations like creation of a user etc."),
'#options' => $role_options,
'#default_value' => $config->get('disabled_roles'),
);
return $form;
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
$disabled_roles = array_flip($form_state->getValue('disabled_roles'));
unset($disabled_roles[0]);
// Save the configuration.
$this->config('pubkey_encrypt.admin_settings')
->set('disabled_roles', $disabled_roles)
->save();
parent::submitForm($form, $form_state);
// A user may have activated any previously disabled roles. Update all Role
// keys to cater for this change.
$this->pubkeyEncryptManager->updateAllRoleKeys();
}
}