diff --git a/src/applications/people/application/PhabricatorPeopleApplication.php b/src/applications/people/application/PhabricatorPeopleApplication.php index c14dd2c354..01844fdae8 100644 --- a/src/applications/people/application/PhabricatorPeopleApplication.php +++ b/src/applications/people/application/PhabricatorPeopleApplication.php @@ -164,12 +164,23 @@ final class PhabricatorPeopleApplication extends PhabricatorApplication { public function getQuickCreateItems(PhabricatorUser $viewer) { $items = array(); - if ($viewer->getIsAdmin()) { + $can_create = PhabricatorPolicyFilter::hasCapability( + $viewer, + $this, + PeopleCreateUsersCapability::CAPABILITY); + + if ($can_create) { $item = id(new PHUIListItemView()) ->setName(pht('User Account')) ->setIcon('fa-users') ->setHref($this->getBaseURI().'create/'); $items[] = $item; + } else if ($viewer->getIsAdmin()) { + $item = id(new PHUIListItemView()) + ->setName(pht('Bot Account')) + ->setIcon('fa-android') + ->setHref($this->getBaseURI().'new/bot/'); + $items[] = $item; } return $items; diff --git a/src/applications/people/capability/PeopleCreateUsersCapability.php b/src/applications/people/capability/PeopleCreateUsersCapability.php index 26d8b7ffe3..0b5214195b 100644 --- a/src/applications/people/capability/PeopleCreateUsersCapability.php +++ b/src/applications/people/capability/PeopleCreateUsersCapability.php @@ -6,7 +6,7 @@ final class PeopleCreateUsersCapability const CAPABILITY = 'people.create.users'; public function getCapabilityName() { - return pht('Can Create Users'); + return pht('Can Create (non-bot) Users'); } public function describeCapabilityRejection() { diff --git a/src/applications/people/controller/PhabricatorPeopleListController.php b/src/applications/people/controller/PhabricatorPeopleListController.php index a4d23cc856..aa95480dbe 100644 --- a/src/applications/people/controller/PhabricatorPeopleListController.php +++ b/src/applications/people/controller/PhabricatorPeopleListController.php @@ -35,12 +35,19 @@ final class PhabricatorPeopleListController $can_create = $this->hasApplicationCapability( PeopleCreateUsersCapability::CAPABILITY); - $crumbs->addAction( - id(new PHUIListItemView()) - ->setName(pht('Create New User')) - ->setHref($this->getApplicationURI('create/')) - ->setDisabled(!$can_create) - ->setIcon('fa-plus-square')); + if ($can_create) { + $crumbs->addAction( + id(new PHUIListItemView()) + ->setName(pht('Create New User')) + ->setHref($this->getApplicationURI('create/')) + ->setIcon('fa-plus-square')); + } else if ($viewer->getIsAdmin()) { + $crumbs->addAction( + id(new PHUIListItemView()) + ->setName(pht('Create New Bot')) + ->setHref($this->getApplicationURI('new/bot/')) + ->setIcon('fa-plus-square')); + } return $crumbs; } diff --git a/src/applications/people/controller/PhabricatorPeopleNewController.php b/src/applications/people/controller/PhabricatorPeopleNewController.php index a64d00f26f..21dce04192 100644 --- a/src/applications/people/controller/PhabricatorPeopleNewController.php +++ b/src/applications/people/controller/PhabricatorPeopleNewController.php @@ -4,13 +4,13 @@ final class PhabricatorPeopleNewController extends PhabricatorPeopleController { public function handleRequest(AphrontRequest $request) { - $this->requireApplicationCapability( - PeopleCreateUsersCapability::CAPABILITY); $type = $request->getURIData('type'); $admin = $request->getUser(); switch ($type) { case 'standard': + $this->requireApplicationCapability( + PeopleCreateUsersCapability::CAPABILITY); $is_bot = false; break; case 'bot':