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

"Adrien Mbuya Maloba \(@adrienmaloba\) via TikiWiki-cvs" <[email protected]>
Newsgroups gmane.comp.cms.tiki.cvs
Message-ID <692203aa7a47e_2a17f0d41614a@gitlab-sidekiq-low-urgency-cpu-bound-v2-5d57c968f-k7wkc.mail>

Adrien Mbuya Maloba pushed to branch 29.x at Tiki Wiki CMS Groupware / Tiki


Commits:
66b6a96a by Adrien Mbuya Maloba at 2025-11-22T20:32:49+02:00
[ENH] Prevent adding spaces in the username
---
* [ENH] Prevent adding spaces in the username
---
* [ENH] Prevent adding spaces in the username

See merge request tikiwiki/tiki!9040

See merge request tikiwiki/tiki!9095

- - - - -


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
=====================================
@@ -62,6 +62,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()
     {
@@ -6991,6 +6992,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 == '') {
@@ -7001,11 +7003,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
=====================================
@@ -295,6 +295,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
=====================================
@@ -261,7 +261,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/66b6a96af4d6546dcdf686f430948d841a00aafa

-- 
View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/66b6a96af4d6546dcdf686f430948d841a00aafa
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.