[TikiWiki-commits] [Git][tikiwiki/tiki][master] [ENH] Prevent adding spaces in the username

Benoit Grégoire (@benoitg) via TikiWiki-cvs <[email protected]>
Newsgroups gmane.comp.cms.tiki.cvs
Message-ID <6920a770e9383_2a17ed1456590@gitlab-sidekiq-low-urgency-cpu-bound-v2-76d864f999-zhz48.mail>

Benoit Grégoire pushed to branch master at Tiki Wiki CMS Groupware / Tiki


Commits:
860e4658 by Adrien Mbuya Maloba at 2025-11-21T17:46:52+00:00
[ENH] Prevent adding spaces in the username
---
* [ENH] Prevent adding spaces in the username

See merge request tikiwiki/tiki!9040

- - - - -


6 changed files:

- lib/Registration/RegistrationLib.php
- lib/prefs/username.php
- lib/userslib.php
- lib/validators/validator_username.php
- tiki-adminusers.php
- tiki-login.php


Changes:

=====================================
lib/Registration/RegistrationLib.php
=====================================
@@ -266,6 +266,10 @@ class RegistrationLib extends TikiLib
                 $errors[] = new RegistrationError('name', tra('Username is too long'));
             }
 
+            if (! preg_match($userlib::USERNAME_MANDATORY_VALIDATION_PATTERN, $registration['name'])) {
+                return tra("Username cannot contain any spaces");
+            }
+
             if ($prefs['login_is_email'] != 'y') {
                 if ($this->merged_prefs['lowercase_username'] == 'y' && $validateName) {
                     if (preg_match('/[[:upper:]]/', $registration['name'])) {
@@ -299,6 +303,10 @@ class RegistrationLib extends TikiLib
                 $errors[] = new RegistrationError('name', tra('Invalid username'));
             }
 
+            if (! preg_match($userlib::USERNAME_MANDATORY_VALIDATION_PATTERN, $registration['name'])) {
+                return tra("Username cannot contain any spaces.");
+            }
+
             // Check the mode
             if ($this->local_prefs['useRegisterPasscode'] == 'y') {
                 if ($registration['passcode'] != $prefs['registerPasscode']) {


=====================================
lib/prefs/username.php
=====================================
@@ -13,7 +13,7 @@ function prefs_username_list()
             'type' => 'text',
             'size' => 25,
             'perspective' => false,
-            'default' => '/^[ \'\-_a-zA-Z0-9@\.]*$/',
+            'default' => '/^[\'\-_a-zA-Z0-9@\.]*$/',
         ],
     ];
 }


=====================================
lib/userslib.php
=====================================
@@ -64,6 +64,7 @@ class UsersLib extends TikiLib
     public $get_object_permissions_for_user_cache;
     public static $cas_initialized = false;
     public static $userexists_cache = [];
+    public const USERNAME_MANDATORY_VALIDATION_PATTERN = '/^\S*$/';
 
     public function __construct()
     {
@@ -7033,6 +7034,7 @@ class UsersLib extends TikiLib
         global $prefs;
         $cachelib = TikiLib::lib('cache');
         $tikilib = TikiLib::lib('tiki');
+        $userlib = TikiLib::lib('user');
 
         $autogenerate_uname = false;
         if ($prefs['login_autogenerate'] == 'y' && $user == '') {
@@ -7043,11 +7045,11 @@ class UsersLib extends TikiLib
         }
 
         $user = trim($user);
-
         if (
             $this->user_exists($user)
                 || empty($user)
                 || (! empty($prefs['username_pattern']) && ! preg_match($prefs['username_pattern'], $user))
+                || (! preg_match($userlib::USERNAME_MANDATORY_VALIDATION_PATTERN, $user))
                 || strtolower($user) == 'anonymous'
                 || strtolower($user) == 'registered'
         ) {


=====================================
lib/validators/validator_username.php
=====================================
@@ -22,6 +22,9 @@ function validator_username($input, $parameter = '', $message = '')
         if (! empty($prefs['username_pattern']) && ! preg_match($prefs['username_pattern'], $input)) {
             return tra("Invalid character combination for username");
         }
+        if (! preg_match($userlib::USERNAME_MANDATORY_VALIDATION_PATTERN, $input)) {
+            return tra("Username cannot contain any spaces");
+        }
         if (strtolower($input) == 'anonymous' || strtolower($input) == 'registered') {
             return tra("Invalid username");
         }


=====================================
tiki-adminusers.php
=====================================
@@ -309,6 +309,9 @@ if (isset($_REQUEST['batch']) && is_uploaded_file($_FILES['csvlist']['tmp_name']
         $errors[] = sprintf(tra('User %s already exists'), $_REQUEST['login']);
         $AddUser = false;
     }
+    if (! preg_match($userlib::USERNAME_MANDATORY_VALIDATION_PATTERN, $_REQUEST['login'])) {
+        return tra("Username cannot contain any spaces");
+    }
     if ($prefs['login_is_email'] == 'y' && ! validate_email($_REQUEST['login'])) {
         $errors[] = tra('Invalid email') . ' ' . $_REQUEST['login'];
         $AddUser = false;
@@ -468,6 +471,8 @@ if (isset($_REQUEST['user']) and $_REQUEST['user']) {
                 if ($userinfo['login'] != $_POST['login'] && $userinfo['login'] != 'admin') {
                     if ($userlib->user_exists($_POST['login'])) {
                         $errors[] = tra('User already exists');
+                    } elseif (! preg_match($userlib::USERNAME_MANDATORY_VALIDATION_PATTERN, $_POST['login'])) {
+                        $errors[] = tra('Username cannot contain any spaces');
                     } elseif (! empty($prefs['username_pattern']) && ! preg_match($prefs['username_pattern'], $_POST['login'])) {
                         $errors[] = tra('User login contains invalid characters.');
                     } elseif ($userlib->change_login($userinfo['login'], $_POST['login'])) {


=====================================
tiki-login.php
=====================================
@@ -265,7 +265,7 @@ if (
 
         if (! $username && $email && $oicLib->canCreateUserTiki()) {
             // Remove invalid characters, based on username_pattern pref
-            $username = preg_replace('/[^ \'\-_a-zA-Z0-9@\.]/', '_', $name);
+            $username = preg_replace('/[^\'\-_a-zA-Z0-9@\.]/', '_', $name);
             $user = $userlib->add_user($username, '', $email);
 
             if (! $user) {



View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/860e4658fddbffafeb6b2b5029646d79333860df

-- 
View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/860e4658fddbffafeb6b2b5029646d79333860df
You're receiving this email because of your account on gitlab.com.

_______________________________________________
TikiWiki-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tikiwiki-cvs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.