Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/drydock/controller/DrydockAuthorizationAuthorizeController.php
12256 views
1
<?php
2
3
final class DrydockAuthorizationAuthorizeController
4
extends DrydockController {
5
6
public function handleRequest(AphrontRequest $request) {
7
$viewer = $request->getViewer();
8
$id = $request->getURIData('id');
9
10
$authorization = id(new DrydockAuthorizationQuery())
11
->setViewer($viewer)
12
->withIDs(array($id))
13
->requireCapabilities(
14
array(
15
PhabricatorPolicyCapability::CAN_VIEW,
16
PhabricatorPolicyCapability::CAN_EDIT,
17
))
18
->executeOne();
19
if (!$authorization) {
20
return new Aphront404Response();
21
}
22
23
$authorization_uri = $this->getApplicationURI("authorization/{$id}/");
24
$is_authorize = ($request->getURIData('action') == 'authorize');
25
26
$state_authorized = DrydockAuthorization::BLUEPRINTAUTH_AUTHORIZED;
27
$state_declined = DrydockAuthorization::BLUEPRINTAUTH_DECLINED;
28
29
$state = $authorization->getBlueprintAuthorizationState();
30
$can_authorize = ($state != $state_authorized);
31
$can_decline = ($state != $state_declined);
32
33
if ($is_authorize && !$can_authorize) {
34
return $this->newDialog()
35
->setTitle(pht('Already Authorized'))
36
->appendParagraph(
37
pht(
38
'This authorization has already been approved.'))
39
->addCancelButton($authorization_uri);
40
}
41
42
if (!$is_authorize && !$can_decline) {
43
return $this->newDialog()
44
->setTitle(pht('Already Declined'))
45
->appendParagraph(
46
pht('This authorization has already been declined.'))
47
->addCancelButton($authorization_uri);
48
}
49
50
if ($request->isFormPost()) {
51
if ($is_authorize) {
52
$new_state = $state_authorized;
53
} else {
54
$new_state = $state_declined;
55
}
56
57
$authorization
58
->setBlueprintAuthorizationState($new_state)
59
->save();
60
61
return id(new AphrontRedirectResponse())->setURI($authorization_uri);
62
}
63
64
if ($is_authorize) {
65
$title = pht('Approve Authorization');
66
$body = pht(
67
'Approve this authorization? The object will be able to lease and '.
68
'allocate resources created by this blueprint.');
69
$button = pht('Approve Authorization');
70
} else {
71
$title = pht('Decline Authorization');
72
$body = pht(
73
'Decline this authorization? The object will not be able to lease '.
74
'or allocate resources created by this blueprint.');
75
$button = pht('Decline Authorization');
76
}
77
78
return $this->newDialog()
79
->setTitle($title)
80
->appendParagraph($body)
81
->addSubmitButton($button)
82
->addCancelButton($authorization_uri);
83
}
84
85
}
86
87