diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 849bcc992f..4d4e6d2dd8 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -184,6 +184,7 @@ phutil_register_library_map(array( 'ConduitAPI_slowvote_info_Method' => 'applications/conduit/method/slowvote/info', 'ConduitAPI_user_Method' => 'applications/conduit/method/user/base', 'ConduitAPI_user_addstatus_Method' => 'applications/conduit/method/user/addstatus', + 'ConduitAPI_user_disable_Method' => 'applications/conduit/method/user/disable', 'ConduitAPI_user_find_Method' => 'applications/conduit/method/user/find', 'ConduitAPI_user_getcurrentstatus_Method' => 'applications/conduit/method/user/getcurrentstatus', 'ConduitAPI_user_info_Method' => 'applications/conduit/method/user/info', @@ -1217,6 +1218,7 @@ phutil_register_library_map(array( 'ConduitAPI_slowvote_info_Method' => 'ConduitAPIMethod', 'ConduitAPI_user_Method' => 'ConduitAPIMethod', 'ConduitAPI_user_addstatus_Method' => 'ConduitAPI_user_Method', + 'ConduitAPI_user_disable_Method' => 'ConduitAPI_user_Method', 'ConduitAPI_user_find_Method' => 'ConduitAPI_user_Method', 'ConduitAPI_user_getcurrentstatus_Method' => 'ConduitAPI_user_Method', 'ConduitAPI_user_info_Method' => 'ConduitAPI_user_Method', diff --git a/src/applications/conduit/method/user/disable/ConduitAPI_user_disable_Method.php b/src/applications/conduit/method/user/disable/ConduitAPI_user_disable_Method.php new file mode 100644 index 0000000000..29c32016ec --- /dev/null +++ b/src/applications/conduit/method/user/disable/ConduitAPI_user_disable_Method.php @@ -0,0 +1,67 @@ + 'required list', + ); + } + + public function defineReturnType() { + return 'void'; + } + + public function defineErrorTypes() { + return array( + 'ERR-PERMISSIONS' => 'Only admins can call this method.', + 'ERR-BAD-PHID' => 'Non existent user PHID.', + ); + } + + protected function execute(ConduitAPIRequest $request) { + if (!$request->getUser()->getIsAdmin()) { + throw new ConduitException('ERR-PERMISSIONS'); + } + + $phids = $request->getValue('phids'); + + $users = id(new PhabricatorUser())->loadAllWhere( + 'phid IN (%Ls)', + $phids); + + if (count($phids) != count($users)) { + throw new ConduitException('ERR-BAD-PHID'); + } + + foreach ($users as $user) { + $user->setIsDisabled(true); + $user->save(); + } + } + +} diff --git a/src/applications/conduit/method/user/disable/__init__.php b/src/applications/conduit/method/user/disable/__init__.php new file mode 100644 index 0000000000..c8554888c6 --- /dev/null +++ b/src/applications/conduit/method/user/disable/__init__.php @@ -0,0 +1,16 @@ +