Add basic support for editing project policies
Summary: This case is unusually complicated because there are more rules than most objects will have. - Edits are either "joins", "leaves" or "other edits". - "Joins" require "can join" or "can edit". - "Leaves" don't require any policy. - "Other edits" require "can edit". - You can't edit away your ability to edit. - You //can// leave a project that you wouldn't be able to rejoin. Things I'm going to add: - Global log of policy changes. - `bin/policy` script for undoing policy changes. - Test coverage for these rules. Test Plan: Made various project visibility edits with various users, joined / left projects, etc. I'll add more complete coverage in the next diff. Reviewers: btrahan, vrana Reviewed By: btrahan CC: aran Maniphest Tasks: T603 Differential Revision: https://secure.phabricator.com/D3270
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* Copyright 2011 Facebook, Inc.
|
||||
* Copyright 2012 Facebook, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -53,9 +53,28 @@ abstract class PhabricatorProjectController extends PhabricatorController {
|
||||
$nav_view->addFilter(null, 'Wiki '.$external_arrow, $phriction_uri);
|
||||
$nav_view->addFilter('people', 'People');
|
||||
$nav_view->addFilter('about', 'About');
|
||||
|
||||
$user = $this->getRequest()->getUser();
|
||||
$can_edit = PhabricatorPolicyCapability::CAN_EDIT;
|
||||
|
||||
$nav_view->addSpacer();
|
||||
$nav_view->addFilter('edit', "Edit Project\xE2\x80\xA6", $edit_uri);
|
||||
$nav_view->addFilter('members', "Edit Members\xE2\x80\xA6", $members_uri);
|
||||
if (PhabricatorPolicyFilter::hasCapability($user, $project, $can_edit)) {
|
||||
$nav_view->addFilter('edit', "Edit Project\xE2\x80\xA6", $edit_uri);
|
||||
$nav_view->addFilter('members', "Edit Members\xE2\x80\xA6", $members_uri);
|
||||
} else {
|
||||
$nav_view->addFilter(
|
||||
'edit',
|
||||
"Edit Project\xE2\x80\xA6",
|
||||
$edit_uri,
|
||||
$relative = false,
|
||||
'disabled');
|
||||
$nav_view->addFilter(
|
||||
'members',
|
||||
"Edit Members\xE2\x80\xA6",
|
||||
$members_uri,
|
||||
$relative = false,
|
||||
'disabled');
|
||||
}
|
||||
|
||||
return $nav_view;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user