Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/auth/controller/contact/PhabricatorAuthContactNumberPrimaryController.php
12262 views
1
<?php
2
3
final class PhabricatorAuthContactNumberPrimaryController
4
extends PhabricatorAuthContactNumberController {
5
6
public function handleRequest(AphrontRequest $request) {
7
$viewer = $request->getViewer();
8
$id = $request->getURIData('id');
9
10
$number = id(new PhabricatorAuthContactNumberQuery())
11
->setViewer($viewer)
12
->withIDs(array($id))
13
->requireCapabilities(
14
array(
15
PhabricatorPolicyCapability::CAN_VIEW,
16
PhabricatorPolicyCapability::CAN_EDIT,
17
))
18
->executeOne();
19
if (!$number) {
20
return new Aphront404Response();
21
}
22
23
$id = $number->getID();
24
$cancel_uri = $number->getURI();
25
26
if ($number->isDisabled()) {
27
return $this->newDialog()
28
->setTitle(pht('Number Disabled'))
29
->appendParagraph(
30
pht(
31
'You can not make a disabled number your primary contact number.'))
32
->addCancelButton($cancel_uri);
33
}
34
35
if ($number->getIsPrimary()) {
36
return $this->newDialog()
37
->setTitle(pht('Number Already Primary'))
38
->appendParagraph(
39
pht(
40
'This contact number is already your primary contact number.'))
41
->addCancelButton($cancel_uri);
42
}
43
44
if ($request->isFormOrHisecPost()) {
45
$xactions = array();
46
47
$xactions[] = id(new PhabricatorAuthContactNumberTransaction())
48
->setTransactionType(
49
PhabricatorAuthContactNumberPrimaryTransaction::TRANSACTIONTYPE)
50
->setNewValue(true);
51
52
$editor = id(new PhabricatorAuthContactNumberEditor())
53
->setActor($viewer)
54
->setContentSourceFromRequest($request)
55
->setContinueOnNoEffect(true)
56
->setContinueOnMissingFields(true)
57
->setCancelURI($cancel_uri);
58
59
try {
60
$editor->applyTransactions($number, $xactions);
61
} catch (PhabricatorApplicationTransactionValidationException $ex) {
62
// This happens when you try to make a number into your primary
63
// number, but you have contact number MFA on your account.
64
return $this->newDialog()
65
->setTitle(pht('Unable to Make Primary'))
66
->setValidationException($ex)
67
->addCancelButton($cancel_uri);
68
}
69
70
return id(new AphrontRedirectResponse())->setURI($cancel_uri);
71
}
72
73
$number_display = phutil_tag(
74
'strong',
75
array(),
76
$number->getDisplayName());
77
78
return $this->newDialog()
79
->setTitle(pht('Set Primary Contact Number'))
80
->appendParagraph(
81
pht(
82
'Designate %s as your primary contact number?',
83
$number_display))
84
->addSubmitButton(pht('Make Primary'))
85
->addCancelButton($cancel_uri);
86
}
87
88
}
89
90