Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/auth/editor/PhabricatorAuthProviderConfigEditor.php
12256 views
1
<?php
2
3
final class PhabricatorAuthProviderConfigEditor
4
extends PhabricatorApplicationTransactionEditor {
5
6
public function getEditorApplicationClass() {
7
return 'PhabricatorAuthApplication';
8
}
9
10
public function getEditorObjectsDescription() {
11
return pht('Auth Providers');
12
}
13
14
public function getTransactionTypes() {
15
$types = parent::getTransactionTypes();
16
17
$types[] = PhabricatorAuthProviderConfigTransaction::TYPE_ENABLE;
18
$types[] = PhabricatorAuthProviderConfigTransaction::TYPE_LOGIN;
19
$types[] = PhabricatorAuthProviderConfigTransaction::TYPE_REGISTRATION;
20
$types[] = PhabricatorAuthProviderConfigTransaction::TYPE_LINK;
21
$types[] = PhabricatorAuthProviderConfigTransaction::TYPE_UNLINK;
22
$types[] = PhabricatorAuthProviderConfigTransaction::TYPE_TRUST_EMAILS;
23
$types[] = PhabricatorAuthProviderConfigTransaction::TYPE_AUTO_LOGIN;
24
$types[] = PhabricatorAuthProviderConfigTransaction::TYPE_PROPERTY;
25
26
return $types;
27
}
28
29
protected function getCustomTransactionOldValue(
30
PhabricatorLiskDAO $object,
31
PhabricatorApplicationTransaction $xaction) {
32
33
switch ($xaction->getTransactionType()) {
34
case PhabricatorAuthProviderConfigTransaction::TYPE_ENABLE:
35
if ($object->getIsEnabled() === null) {
36
return null;
37
} else {
38
return (int)$object->getIsEnabled();
39
}
40
case PhabricatorAuthProviderConfigTransaction::TYPE_LOGIN:
41
return (int)$object->getShouldAllowLogin();
42
case PhabricatorAuthProviderConfigTransaction::TYPE_REGISTRATION:
43
return (int)$object->getShouldAllowRegistration();
44
case PhabricatorAuthProviderConfigTransaction::TYPE_LINK:
45
return (int)$object->getShouldAllowLink();
46
case PhabricatorAuthProviderConfigTransaction::TYPE_UNLINK:
47
return (int)$object->getShouldAllowUnlink();
48
case PhabricatorAuthProviderConfigTransaction::TYPE_TRUST_EMAILS:
49
return (int)$object->getShouldTrustEmails();
50
case PhabricatorAuthProviderConfigTransaction::TYPE_AUTO_LOGIN:
51
return (int)$object->getShouldAutoLogin();
52
case PhabricatorAuthProviderConfigTransaction::TYPE_PROPERTY:
53
$key = $xaction->getMetadataValue(
54
PhabricatorAuthProviderConfigTransaction::PROPERTY_KEY);
55
return $object->getProperty($key);
56
}
57
}
58
59
protected function getCustomTransactionNewValue(
60
PhabricatorLiskDAO $object,
61
PhabricatorApplicationTransaction $xaction) {
62
63
switch ($xaction->getTransactionType()) {
64
case PhabricatorAuthProviderConfigTransaction::TYPE_ENABLE:
65
case PhabricatorAuthProviderConfigTransaction::TYPE_LOGIN:
66
case PhabricatorAuthProviderConfigTransaction::TYPE_REGISTRATION:
67
case PhabricatorAuthProviderConfigTransaction::TYPE_LINK:
68
case PhabricatorAuthProviderConfigTransaction::TYPE_UNLINK:
69
case PhabricatorAuthProviderConfigTransaction::TYPE_TRUST_EMAILS:
70
case PhabricatorAuthProviderConfigTransaction::TYPE_AUTO_LOGIN:
71
case PhabricatorAuthProviderConfigTransaction::TYPE_PROPERTY:
72
return $xaction->getNewValue();
73
}
74
}
75
76
protected function applyCustomInternalTransaction(
77
PhabricatorLiskDAO $object,
78
PhabricatorApplicationTransaction $xaction) {
79
$v = $xaction->getNewValue();
80
switch ($xaction->getTransactionType()) {
81
case PhabricatorAuthProviderConfigTransaction::TYPE_ENABLE:
82
return $object->setIsEnabled($v);
83
case PhabricatorAuthProviderConfigTransaction::TYPE_LOGIN:
84
return $object->setShouldAllowLogin($v);
85
case PhabricatorAuthProviderConfigTransaction::TYPE_REGISTRATION:
86
return $object->setShouldAllowRegistration($v);
87
case PhabricatorAuthProviderConfigTransaction::TYPE_LINK:
88
return $object->setShouldAllowLink($v);
89
case PhabricatorAuthProviderConfigTransaction::TYPE_UNLINK:
90
return $object->setShouldAllowUnlink($v);
91
case PhabricatorAuthProviderConfigTransaction::TYPE_TRUST_EMAILS:
92
return $object->setShouldTrustEmails($v);
93
case PhabricatorAuthProviderConfigTransaction::TYPE_AUTO_LOGIN:
94
return $object->setShouldAutoLogin($v);
95
case PhabricatorAuthProviderConfigTransaction::TYPE_PROPERTY:
96
$key = $xaction->getMetadataValue(
97
PhabricatorAuthProviderConfigTransaction::PROPERTY_KEY);
98
return $object->setProperty($key, $v);
99
}
100
}
101
102
protected function applyCustomExternalTransaction(
103
PhabricatorLiskDAO $object,
104
PhabricatorApplicationTransaction $xaction) {
105
return;
106
}
107
108
protected function mergeTransactions(
109
PhabricatorApplicationTransaction $u,
110
PhabricatorApplicationTransaction $v) {
111
112
$type = $u->getTransactionType();
113
switch ($type) {
114
case PhabricatorAuthProviderConfigTransaction::TYPE_ENABLE:
115
case PhabricatorAuthProviderConfigTransaction::TYPE_LOGIN:
116
case PhabricatorAuthProviderConfigTransaction::TYPE_REGISTRATION:
117
case PhabricatorAuthProviderConfigTransaction::TYPE_LINK:
118
case PhabricatorAuthProviderConfigTransaction::TYPE_UNLINK:
119
case PhabricatorAuthProviderConfigTransaction::TYPE_TRUST_EMAILS:
120
case PhabricatorAuthProviderConfigTransaction::TYPE_AUTO_LOGIN:
121
// For these types, last transaction wins.
122
return $v;
123
}
124
125
return parent::mergeTransactions($u, $v);
126
}
127
128
protected function validateAllTransactions(
129
PhabricatorLiskDAO $object,
130
array $xactions) {
131
132
$errors = parent::validateAllTransactions($object, $xactions);
133
134
$locked_config_key = 'auth.lock-config';
135
$is_locked = PhabricatorEnv::getEnvConfig($locked_config_key);
136
137
if ($is_locked) {
138
$errors[] = new PhabricatorApplicationTransactionValidationError(
139
null,
140
pht('Config Locked'),
141
pht('Authentication provider configuration is locked, and can not be '.
142
'changed without being unlocked.'),
143
null);
144
}
145
146
return $errors;
147
}
148
149
}
150
151