Skip to content

Commit df23d89

Browse files
committed
Remove Join Policy from Phame
Summary: Drops Join Policy, uses Edit Policy where needed. Allows anyone with Blog Edit permissions to post and edit any post on that blog. Fixes T5371 Test Plan: Draft Post as chad, see post, log in with notchad, edit that post and publish it. Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin Maniphest Tasks: T5371 Differential Revision: https://secure.phabricator.com/D14444
1 parent a2f909f commit df23d89

File tree

10 files changed

+22
-56
lines changed

10 files changed

+22
-56
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ALTER TABLE {$NAMESPACE}_phame.phame_blog
2+
DROP joinPolicy;

src/applications/phame/conduit/PhameCreatePostConduitAPIMethod.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ protected function execute(ConduitAPIRequest $request) {
7373
->withPHIDs(array($blog_phid))
7474
->requireCapabilities(
7575
array(
76-
PhabricatorPolicyCapability::CAN_JOIN,
76+
PhabricatorPolicyCapability::CAN_VIEW,
77+
PhabricatorPolicyCapability::CAN_EDIT,
7778
))
7879
->executeOne();
7980

src/applications/phame/controller/blog/PhameBlogEditController.php

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ public function handleRequest(AphrontRequest $request) {
4949
$skin = $blog->getSkin();
5050
$can_view = $blog->getViewPolicy();
5151
$can_edit = $blog->getEditPolicy();
52-
$can_join = $blog->getJoinPolicy();
5352

5453
$e_name = true;
5554
$e_custom_domain = null;
@@ -62,7 +61,6 @@ public function handleRequest(AphrontRequest $request) {
6261
$skin = $request->getStr('skin');
6362
$can_view = $request->getStr('can_view');
6463
$can_edit = $request->getStr('can_edit');
65-
$can_join = $request->getStr('can_join');
6664
$v_projects = $request->getArr('projects');
6765
$v_cc = $request->getArr('cc');
6866

@@ -85,9 +83,6 @@ public function handleRequest(AphrontRequest $request) {
8583
id(new PhameBlogTransaction())
8684
->setTransactionType(PhabricatorTransactions::TYPE_EDIT_POLICY)
8785
->setNewValue($can_edit),
88-
id(new PhameBlogTransaction())
89-
->setTransactionType(PhabricatorTransactions::TYPE_JOIN_POLICY)
90-
->setNewValue($can_join),
9186
id(new PhameBlogTransaction())
9287
->setTransactionType(PhabricatorTransactions::TYPE_SUBSCRIBERS)
9388
->setNewValue(array('=' => $v_cc)),
@@ -170,14 +165,6 @@ public function handleRequest(AphrontRequest $request) {
170165
->setPolicies($policies)
171166
->setValue($can_edit)
172167
->setName('can_edit'))
173-
->appendChild(
174-
id(new AphrontFormPolicyControl())
175-
->setUser($viewer)
176-
->setCapability(PhabricatorPolicyCapability::CAN_JOIN)
177-
->setPolicyObject($blog)
178-
->setPolicies($policies)
179-
->setValue($can_join)
180-
->setName('can_join'))
181168
->appendControl(
182169
id(new AphrontFormTokenizerControl())
183170
->setLabel(pht('Projects'))

src/applications/phame/controller/blog/PhameBlogViewController.php

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,6 @@ private function renderProperties(
100100
pht('Editable By'),
101101
$descriptions[PhabricatorPolicyCapability::CAN_EDIT]);
102102

103-
$properties->addProperty(
104-
pht('Joinable By'),
105-
$descriptions[PhabricatorPolicyCapability::CAN_JOIN]);
106-
107103
$engine = id(new PhabricatorMarkupEngine())
108104
->setViewer($viewer)
109105
->addObject($blog, PhameBlog::MARKUP_FIELD_DESCRIPTION)
@@ -136,18 +132,13 @@ private function renderActions(PhameBlog $blog, PhabricatorUser $viewer) {
136132
$blog,
137133
PhabricatorPolicyCapability::CAN_EDIT);
138134

139-
$can_join = PhabricatorPolicyFilter::hasCapability(
140-
$viewer,
141-
$blog,
142-
PhabricatorPolicyCapability::CAN_JOIN);
143-
144135
$actions->addAction(
145136
id(new PhabricatorActionView())
146137
->setIcon('fa-plus')
147138
->setHref($this->getApplicationURI('post/edit/?blog='.$blog->getID()))
148139
->setName(pht('Write Post'))
149-
->setDisabled(!$can_join)
150-
->setWorkflow(!$can_join));
140+
->setDisabled(!$can_edit)
141+
->setWorkflow(!$can_edit));
151142

152143
$actions->addAction(
153144
id(new PhabricatorActionView())

src/applications/phame/controller/post/PhamePostEditController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public function handleRequest(AphrontRequest $request) {
3636
->requireCapabilities(
3737
array(
3838
PhabricatorPolicyCapability::CAN_VIEW,
39-
PhabricatorPolicyCapability::CAN_JOIN,
39+
PhabricatorPolicyCapability::CAN_EDIT,
4040
))
4141
->executeOne();
4242
if (!$blog) {

src/applications/phame/controller/post/PhamePostNewController.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public function handleRequest(AphrontRequest $request) {
3030
->withIDs(array($request->getInt('blog')))
3131
->requireCapabilities(
3232
array(
33-
PhabricatorPolicyCapability::CAN_JOIN,
33+
PhabricatorPolicyCapability::CAN_EDIT,
3434
))
3535
->executeOne();
3636

@@ -52,7 +52,7 @@ public function handleRequest(AphrontRequest $request) {
5252
->setViewer($viewer)
5353
->requireCapabilities(
5454
array(
55-
PhabricatorPolicyCapability::CAN_JOIN,
55+
PhabricatorPolicyCapability::CAN_EDIT,
5656
))
5757
->execute();
5858

@@ -65,7 +65,7 @@ public function handleRequest(AphrontRequest $request) {
6565
$notification = id(new PHUIInfoView())
6666
->setSeverity(PHUIInfoView::SEVERITY_NODATA)
6767
->appendChild(
68-
pht('You do not have permission to join any blogs. Create a blog '.
68+
pht('You do not have permission to post to any blogs. Create a blog '.
6969
'first, then you can post to it.'));
7070

7171
} else {

src/applications/phame/controller/post/PhamePostViewController.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,13 +123,15 @@ private function renderActions(
123123
id(new PhabricatorActionView())
124124
->setIcon('fa-eye')
125125
->setHref($this->getApplicationURI('post/publish/'.$id.'/'))
126+
->setDisabled(!$can_edit)
126127
->setName(pht('Preview / Publish')));
127128
} else {
128129
$actions->addAction(
129130
id(new PhabricatorActionView())
130131
->setIcon('fa-eye-slash')
131132
->setHref($this->getApplicationURI('post/unpublish/'.$id.'/'))
132133
->setName(pht('Unpublish'))
134+
->setDisabled(!$can_edit)
133135
->setWorkflow(true));
134136
}
135137

src/applications/phame/editor/PhameBlogEditor.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ public function getTransactionTypes() {
2020
$types[] = PhameBlogTransaction::TYPE_SKIN;
2121
$types[] = PhabricatorTransactions::TYPE_VIEW_POLICY;
2222
$types[] = PhabricatorTransactions::TYPE_EDIT_POLICY;
23-
$types[] = PhabricatorTransactions::TYPE_JOIN_POLICY;
2423

2524
return $types;
2625
}

src/applications/phame/storage/PhameBlog.php

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ final class PhameBlog extends PhameDAO
2020
protected $creatorPHID;
2121
protected $viewPolicy;
2222
protected $editPolicy;
23-
protected $joinPolicy;
2423
protected $mailKey;
2524

2625
private static $requestBlog;
@@ -39,7 +38,6 @@ protected function getConfiguration() {
3938

4039
// T6203/NULLABILITY
4140
// These policies should always be non-null.
42-
'joinPolicy' => 'policy?',
4341
'editPolicy' => 'policy?',
4442
'viewPolicy' => 'policy?',
4543
),
@@ -73,8 +71,7 @@ public static function initializeNewBlog(PhabricatorUser $actor) {
7371
$blog = id(new PhameBlog())
7472
->setCreatorPHID($actor->getPHID())
7573
->setViewPolicy(PhabricatorPolicies::getMostOpenPolicy())
76-
->setEditPolicy(PhabricatorPolicies::POLICY_USER)
77-
->setJoinPolicy(PhabricatorPolicies::POLICY_USER);
74+
->setEditPolicy(PhabricatorPolicies::POLICY_USER);
7875
return $blog;
7976
}
8077

@@ -236,7 +233,6 @@ public function getCapabilities() {
236233
return array(
237234
PhabricatorPolicyCapability::CAN_VIEW,
238235
PhabricatorPolicyCapability::CAN_EDIT,
239-
PhabricatorPolicyCapability::CAN_JOIN,
240236
);
241237
}
242238

@@ -247,30 +243,18 @@ public function getPolicy($capability) {
247243
return $this->getViewPolicy();
248244
case PhabricatorPolicyCapability::CAN_EDIT:
249245
return $this->getEditPolicy();
250-
case PhabricatorPolicyCapability::CAN_JOIN:
251-
return $this->getJoinPolicy();
252246
}
253247
}
254248

255249
public function hasAutomaticCapability($capability, PhabricatorUser $user) {
256250
$can_edit = PhabricatorPolicyCapability::CAN_EDIT;
257-
$can_join = PhabricatorPolicyCapability::CAN_JOIN;
258251

259252
switch ($capability) {
260253
case PhabricatorPolicyCapability::CAN_VIEW:
261254
// Users who can edit or post to a blog can always view it.
262255
if (PhabricatorPolicyFilter::hasCapability($user, $this, $can_edit)) {
263256
return true;
264257
}
265-
if (PhabricatorPolicyFilter::hasCapability($user, $this, $can_join)) {
266-
return true;
267-
}
268-
break;
269-
case PhabricatorPolicyCapability::CAN_JOIN:
270-
// Users who can edit a blog can always post to it.
271-
if (PhabricatorPolicyFilter::hasCapability($user, $this, $can_edit)) {
272-
return true;
273-
}
274258
break;
275259
}
276260

@@ -282,10 +266,7 @@ public function describeAutomaticCapability($capability) {
282266
switch ($capability) {
283267
case PhabricatorPolicyCapability::CAN_VIEW:
284268
return pht(
285-
'Users who can edit or post on a blog can always view it.');
286-
case PhabricatorPolicyCapability::CAN_JOIN:
287-
return pht(
288-
'Users who can edit a blog can always post on it.');
269+
'Users who can edit a blog can always view it.');
289270
}
290271

291272
return null;

src/applications/phame/storage/PhamePost.php

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -198,18 +198,21 @@ public function getPolicy($capability) {
198198
case PhabricatorPolicyCapability::CAN_VIEW:
199199
if (!$this->isDraft() && $this->getBlog()) {
200200
return $this->getBlog()->getViewPolicy();
201-
} else {
202-
return PhabricatorPolicies::POLICY_NOONE;
201+
} else if ($this->getBlog()) {
202+
return $this->getBlog()->getEditPolicy();
203203
}
204204
break;
205205
case PhabricatorPolicyCapability::CAN_EDIT:
206-
return PhabricatorPolicies::POLICY_NOONE;
206+
if ($this->getBlog()) {
207+
return $this->getBlog()->getEditPolicy();
208+
} else {
209+
return PhabricatorPolicies::POLICY_NOONE;
210+
}
207211
}
208212
}
209213

210214
public function hasAutomaticCapability($capability, PhabricatorUser $user) {
211-
// A blog post's author can always view it, and is the only user allowed
212-
// to edit it.
215+
// A blog post's author can always view it.
213216

214217
switch ($capability) {
215218
case PhabricatorPolicyCapability::CAN_VIEW:

0 commit comments

Comments
 (0)