@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator

Add config to require real name, respect config when creating new users, drop real name from full name if not provided.

Summary: Fixes T4728, first pass, Make real name optional on user accounts

Test Plan: Default real name config should be false (not required). Create new user, real name should not be required. Toggle config, real name should be required. Users with no real name should be always listed by their usernames.

Reviewers: #blessed_reviewers, epriestley

Reviewed By: #blessed_reviewers, epriestley

Subscribers: epriestley, Korvin

Maniphest Tasks: T4728

Differential Revision: https://secure.phabricator.com/D9027

authored by

lkassianik and committed by
epriestley
dfcccd4c 1687ffcd

+26 -10
+4 -2
src/applications/auth/controller/PhabricatorAuthRegisterController.php
··· 144 144 145 145 $errors = array(); 146 146 147 + $require_real_name = PhabricatorEnv::getEnvConfig('user.require-real-name'); 148 + 147 149 $e_username = strlen($value_username) ? null : true; 148 - $e_realname = strlen($value_realname) ? null : true; 150 + $e_realname = $require_real_name ? true : null; 149 151 $e_email = strlen($value_email) ? null : true; 150 152 $e_password = true; 151 153 $e_captcha = true; ··· 224 226 225 227 if ($can_edit_realname) { 226 228 $value_realname = $request->getStr('realName'); 227 - if (!strlen($value_realname)) { 229 + if (!strlen($value_realname) && $require_real_name) { 228 230 $e_realname = pht('Required'); 229 231 $errors[] = pht('Real name is required.'); 230 232 } else {
+2 -1
src/applications/metamta/query/PhabricatorMetaMTAActorQuery.php
··· 177 177 $name = $user->getUserName(); 178 178 break; 179 179 case 'real': 180 - $name = $user->getRealName(); 180 + $name = strlen($user->getRealName()) ? 181 + $user->getRealName() : $user->getUserName(); 181 182 break; 182 183 case 'full': 183 184 default:
+7
src/applications/people/config/PhabricatorUserConfigOptions.php
··· 36 36 ->setDescription(pht("Select and reorder user profile fields.")), 37 37 $this->newOption('user.custom-field-definitions', 'map', array()) 38 38 ->setDescription(pht("Add new simple fields to user profiles.")), 39 + $this->newOption('user.require-real-name', 'bool', true) 40 + ->setDescription(pht("Always require real name for user profiles.")) 41 + ->setBoolOptions( 42 + array( 43 + pht('Make real names required'), 44 + pht('Make real names optional'), 45 + )), 39 46 ); 40 47 } 41 48
+3 -2
src/applications/people/controller/PhabricatorPeopleNewController.php
··· 25 25 } 26 26 27 27 $user = new PhabricatorUser(); 28 + $require_real_name = PhabricatorEnv::getEnvConfig('user.require-real-name'); 28 29 29 30 $e_username = true; 30 - $e_realname = true; 31 + $e_realname = $require_real_name ? true : null; 31 32 $e_email = true; 32 33 $errors = array(); 33 34 ··· 64 65 $e_username = null; 65 66 } 66 67 67 - if (!strlen($user->getRealName())) { 68 + if (!strlen($user->getRealName()) && $require_real_name) { 68 69 $errors[] = pht('Real name is required.'); 69 70 $e_realname = pht('Required'); 70 71 } else {
+1 -1
src/applications/people/controller/PhabricatorPeopleProfileController.php
··· 33 33 $picture = $user->loadProfileImageURI(); 34 34 35 35 $header = id(new PHUIHeaderView()) 36 - ->setHeader($user->getUserName().' ('.$user->getRealName().')') 36 + ->setHeader($user->getFullName()) 37 37 ->setSubheader($profile->getTitle()) 38 38 ->setImage($picture); 39 39
+3 -2
src/applications/people/phid/PhabricatorPeoplePHIDTypeUser.php
··· 41 41 42 42 foreach ($handles as $phid => $handle) { 43 43 $user = $objects[$phid]; 44 + $realname = $user->getRealName(); 45 + 44 46 $handle->setName($user->getUsername()); 45 47 $handle->setURI('/p/'.$user->getUsername().'/'); 46 - $handle->setFullName( 47 - $user->getUsername().' ('.$user->getRealName().')'); 48 + $handle->setFullName($user->getFullName()); 48 49 $handle->setImageURI($user->loadProfileImageURI()); 49 50 $handle->setDisabled(!$user->isUserActivated()); 50 51 if ($user->hasStatus()) {
+1 -1
src/applications/people/search/PhabricatorUserSearchIndexer.php
··· 13 13 $doc = new PhabricatorSearchAbstractDocument(); 14 14 $doc->setPHID($user->getPHID()); 15 15 $doc->setDocumentType(PhabricatorPeoplePHIDTypeUser::TYPECONST); 16 - $doc->setDocumentTitle($user->getUserName().' ('.$user->getRealName().')'); 16 + $doc->setDocumentTitle($user->getFullName()); 17 17 $doc->setDocumentCreated($user->getDateCreated()); 18 18 $doc->setDocumentModified($user->getDateModified()); 19 19
+5 -1
src/applications/people/storage/PhabricatorUser.php
··· 711 711 } 712 712 713 713 public function getFullName() { 714 - return $this->getUsername().' ('.$this->getRealName().')'; 714 + if (strlen($this->getRealName())) { 715 + return $this->getUsername().' ('.$this->getRealName().')'; 716 + } else { 717 + return $this->getUsername(); 718 + } 715 719 } 716 720 717 721 public function __toString() {