glpi icon indicating copy to clipboard operation
glpi copied to clipboard

GLPI 11 password reset

Open DonutsNL opened this issue 8 months ago • 5 comments

Code of Conduct

  • [x] I agree to follow this project's Code of Conduct

Is there an existing issue for this?

  • [x] I have searched the existing issues

Version

GLPI 11

Bug description

After creating a new user if you change the password a password 'pupup' is shown. The popup does not have a ' submit' button. If the alter password is confirmed by pressing enter various depr errors are shown and a type error (passing null instead of string).

I expect the error is caused only after initial creation of the user (when there is no history)

Image

Relevant log output

PasswordHistory::updatePasswordHistory(): Argument #2 ($password) must be of type string, null given, called in ./src/User.php on line 1360
In ./src/PasswordHistory.php(126)
#0 ./src/User.php(1360): PasswordHistory->updatePasswordHistory()
#1 ./src/CommonDBTM.php(1833): User->post_updateItem()
#2 ./front/user.form.php(140): CommonDBTM->update()
#3 ./src/Glpi/Controller/LegacyFileLoadController.php(59): require('...')
#4 ./vendor/symfony/http-kernel/HttpKernel.php(101): Glpi\Controller\LegacyFileLoadController->{closure:Glpi\Controller\LegacyFileLoadController::__invoke():58}()
#5 ./vendor/symfony/http-foundation/StreamedResponse.php(106): Symfony\Component\HttpKernel\HttpKernel::{closure:Symfony\Component\HttpKernel\HttpKernel::handle():98}()
#6 ./vendor/symfony/http-foundation/Response.php(423): Symfony\Component\HttpFoundation\StreamedResponse->sendContent()
#7 ./src/Glpi/Kernel/Kernel.php(234): Symfony\Component\HttpFoundation\Response->send()
#8 ./public/index.php(60): Glpi\Kernel\Kernel->sendResponse()
#9 {main}

Page URL

https://mydomain/glpi11/public/front/user.form.php

Steps To reproduce

Just change the password. also test known errors like password not the same, to short, etc.

Your GLPI setup information

GLPI information
GLPI: 11.0.0-dev (/glpi11/public => /var/www/html/glpi11)
Installation mode: GIT
Current language: nl_NL
Server
Operating system: Linux codeserver 6.8.0-57-generic #​59-Ubuntu SMP PREEMPT_DYNAMIC Sat Mar 15 17:40:59 UTC 2025 x86_64

PHP: 8.4.5 fpm-fcgi

PHP extensions: Core, date, libxml, openssl, pcre, zlib, filter, hash, json, random, Reflection, SPL, session, standard, sodium, cgi-fcgi, mysqlnd, PDO, xml, bcmath, bz2, calendar, ctype, curl, dom, mbstring, FFI, fileinfo, ftp, gd, gettext, iconv, intl, ldap, exif, mysqli, pdo_mysql, Phar, posix, readline, shmop, SimpleXML, sockets, sysvmsg, sysvsem, sysvshm, tokenizer, xmlreader, xmlwriter, xsl, zip, Zend OPcache, xdebug

Setup: max_execution_time="30" memory_limit="128M" post_max_size="8M" safe_mode="" session.save_handler="files" upload_max_filesize="2M" disable_functions=""

Web server: Apache/2.4.58 (Ubuntu) (Apache/2.4.58 (Ubuntu) Server at 192.168.1.98 Port 80)

User agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36

Database:

Server Software: (Ubuntu)

Server Version: 8.0.41-0ubuntu0.24.04.1

Server SQL Mode: STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

Parameters: [email protected]/glpi11_testdb

Host info: 127.0.0.1 via TCP/IP

Requirements: PHP version (8.4.5) is supported. OS and PHP are relying on 64 bits integers. Sessions configuration is OK. Allocated memory is sufficient. Following extensions are installed: dom, fileinfo, filter, libxml, json, simplexml, xmlreader, xmlwriter. mysqli extension is installed. curl extension is installed. gd extension is installed. intl extension is installed. mbstring extension is installed. zlib extension is installed. bcmath extension is installed. The constant SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES is present. openssl extension is installed. Database engine version (8.0.41) is supported. No files from previous GLPI version detected. The log file has been created successfully. Write access to /var/www/html/glpi11/files/_cache has been validated. Write access to /var/www/html/glpi11/files/_cron has been validated. Write access to /var/www/html/glpi11/files has been validated. Write access to /var/www/html/glpi11/files/_graphs has been validated. Write access to /var/www/html/glpi11/files/_lock has been validated. Write access to /var/www/html/glpi11/files/_pictures has been validated. Write access to /var/www/html/glpi11/files/_plugins has been validated. Write access to /var/www/html/glpi11/files/_rss has been validated. Write access to /var/www/html/glpi11/files/_sessions has been validated. Write access to /var/www/html/glpi11/files/_tmp has been validated. Write access to /var/www/html/glpi11/files/_uploads has been validated.

Sessions configuration is secured. exif extension is installed. ldap extension is installed. openssl extension is installed. Following extensions are installed: bz2, Phar, zip. Zend OPcache extension is installed. Following extensions are installed: ctype, iconv, sodium. Write access to /var/www/html/glpi11/marketplace has been validated. Access to timezone database (mysql) is not allowed.

GLPI constants
GLPI_ENVIRONMENT_TYPE: "development"
GLPI_ROOT: "/var/www/html/glpi11"
GLPI_VERSION: "11.0.0-dev"
GLPI_SCHEMA_VERSION: "11.0.0-dev@a53ca92172d538281e6c5a1754f3bc0d0f49a07c"
GLPI_MIN_PHP: "8.2"
GLPI_MAX_PHP: "8.4"
GLPI_YEAR: "2025"
GLPI_I18N_DIR: "/var/www/html/glpi11/locales"
GLPI_CONFIG_DIR: "/var/www/html/glpi11/config"
GLPI_VAR_DIR: "/var/www/html/glpi11/files"
GLPI_MARKETPLACE_DIR: "/var/www/html/glpi11/marketplace"
GLPI_ALLOW_IFRAME_IN_RICH_TEXT: false
GLPI_SERVERSIDE_URL_ALLOWLIST:
["#^http://[^@:]+(:80)?(/.)?$#","#^https://[^@:]+(:443)?(/.)?$#","#^feed://[^@:]+(/.)?$#"]
GLPI_DISALLOWED_UPLOADS_PATTERN: "/\.(php\d|phar)$/i"
GLPI_TELEMETRY_URI: "https://telemetry.glpi-project.org"
GLPI_INSTALL_MODE: "GIT"
GLPI_NETWORK_MAIL: "[email protected]"
GLPI_NETWORK_SERVICES: "https://services.glpi-network.com"
GLPI_MARKETPLACE_ENABLE: 3
GLPI_MARKETPLACE_PRERELEASES: true
GLPI_MARKETPLACE_ALLOW_OVERRIDE: true
GLPI_MARKETPLACE_MANUAL_DOWNLOADS: true
GLPI_USER_AGENT_EXTRA_COMMENTS: ""
GLPI_DOCUMENTATION_ROOT_URL: "https://links.glpi-project.org"
GLPI_DISABLE_ONLY_FULL_GROUP_BY_SQL_MODE: "1"
GLPI_AJAX_DASHBOARD: "1"
GLPI_CALDAV_IMPORT_STATE: 0
GLPI_CENTRAL_WARNINGS: "1"
GLPI_TEXT_MAXSIZE: "4000"
GLPI_WEBHOOK_ALLOW_RESPONSE_SAVING: "1"
GLPI_DOC_DIR: "/var/www/html/glpi11/files"
GLPI_CACHE_DIR: "/var/www/html/glpi11/files/_cache"
GLPI_CRON_DIR: "/var/www/html/glpi11/files/_cron"
GLPI_GRAPH_DIR: "/var/www/html/glpi11/files/_graphs"
GLPI_LOCAL_I18N_DIR: "/var/www/html/glpi11/files/_locales"
GLPI_LOCK_DIR: "/var/www/html/glpi11/files/_lock"
GLPI_LOG_DIR: "/var/www/html/glpi11/files/_log"
GLPI_PICTURE_DIR: "/var/www/html/glpi11/files/_pictures"
GLPI_PLUGIN_DOC_DIR: "/var/www/html/glpi11/files/_plugins"
GLPI_RSS_DIR: "/var/www/html/glpi11/files/_rss"
GLPI_SESSION_DIR: "/var/www/html/glpi11/files/_sessions"
GLPI_TMP_DIR: "/var/www/html/glpi11/files/_tmp"
GLPI_UPLOAD_DIR: "/var/www/html/glpi11/files/_uploads"
GLPI_INVENTORY_DIR: "/var/www/html/glpi11/files/_inventories"
GLPI_THEMES_DIR: "/var/www/html/glpi11/files/_themes"
GLPI_NETWORK_REGISTRATION_API_URL: "https://services.glpi-network.com/api/registration/"
GLPI_MARKETPLACE_PLUGINS_API_URI: "https://services.glpi-network.com/api/marketplace/"
Libraries
symfony/mailer not found
simplepie/simplepie version 1.8.1 in /var/www/html/glpi11/vendor/simplepie/simplepie/src
tecnickcom/tcpdf version 6.9.1 in /var/www/html/glpi11/vendor/tecnickcom/tcpdf
tecnickcom/tc-lib-barcode version  in /var/www/html/glpi11/vendor/tecnickcom/tc-lib-barcode/src
sabre/dav version  in /var/www/html/glpi11/vendor/sabre/dav/lib/DAV
sabre/http version  in /var/www/html/glpi11/vendor/sabre/http/lib
sabre/uri version  in /var/www/html/glpi11/vendor/sabre/uri/lib
sabre/vobject version  in /var/www/html/glpi11/vendor/sabre/vobject/lib
laminas/laminas-i18n version  in /var/www/html/glpi11/vendor/laminas/laminas-i18n/src
monolog/monolog version  in /var/www/html/glpi11/vendor/monolog/monolog/src/Monolog
sebastian/diff version  in /var/www/html/glpi11/vendor/sebastian/diff/src
donatj/phpuseragentparser version  in /var/www/html/glpi11/vendor/donatj/phpuseragentparser/src/UserAgent
elvanto/litemoji version  in /var/www/html/glpi11/vendor/elvanto/litemoji/src
gettext/languages version  in /var/www/html/glpi11/vendor/gettext/languages/src
symfony/console version  in /var/www/html/glpi11/vendor/symfony/console
symfony/config version  in /var/www/html/glpi11/vendor/symfony/config/Loader
symfony/dependency-injection version  in /var/www/html/glpi11/vendor/symfony/dependency-injection
symfony/event-dispatcher version  in /var/www/html/glpi11/vendor/symfony/event-dispatcher
symfony/filesystem version  in /var/www/html/glpi11/vendor/symfony/filesystem
symfony/framework-bundle version  in /var/www/html/glpi11/vendor/symfony/framework-bundle
symfony/http-foundation version  in /var/www/html/glpi11/vendor/symfony/http-foundation
symfony/http-kernel version  in /var/www/html/glpi11/vendor/symfony/http-kernel
symfony/routing version  in /var/www/html/glpi11/vendor/symfony/routing
scssphp/scssphp version  in /var/www/html/glpi11/vendor/scssphp/scssphp/src
laminas/laminas-mail version  in /var/www/html/glpi11/vendor/laminas/laminas-mail/src/Protocol
laminas/laminas-mime version  in /var/www/html/glpi11/vendor/laminas/laminas-mime/src
rlanvin/php-rrule version  in /var/www/html/glpi11/vendor/rlanvin/php-rrule/src
ramsey/uuid version  in /var/www/html/glpi11/vendor/ramsey/uuid/src
phpoffice/phpspreadsheet version  in /var/www/html/glpi11/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet
psr/log version  in /var/www/html/glpi11/vendor/psr/log/src
psr/simple-cache version  in /var/www/html/glpi11/vendor/psr/simple-cache/src
psr/cache version  in /var/www/html/glpi11/vendor/psr/cache/src
psr/container version  in /var/www/html/glpi11/vendor/psr/container/src
league/csv version  in /var/www/html/glpi11/vendor/league/csv/src
mexitek/phpcolors version  in /var/www/html/glpi11/vendor/mexitek/phpcolors/src/Mexitek/PHPColors
guzzlehttp/guzzle version  in /var/www/html/glpi11/vendor/guzzlehttp/guzzle/src
guzzlehttp/psr7 version  in /var/www/html/glpi11/vendor/guzzlehttp/psr7/src
glpi-project/inventory_format version  in /var/www/html/glpi11/vendor/glpi-project/inventory_format/lib/php
wapmorgan/unified-archive version  in /var/www/html/glpi11/vendor/wapmorgan/unified-archive/src
paragonie/sodium_compat version  in /var/www/html/glpi11/vendor/paragonie/sodium_compat/src
symfony/cache version  in /var/www/html/glpi11/vendor/symfony/cache
html2text/html2text version  in /var/www/html/glpi11/vendor/html2text/html2text/src
symfony/css-selector version  in /var/www/html/glpi11/vendor/symfony/css-selector
symfony/dom-crawler version  in /var/www/html/glpi11/vendor/symfony/dom-crawler
twig/twig version  in /var/www/html/glpi11/vendor/twig/twig/src
twig/string-extra version  in /var/www/html/glpi11/vendor/twig/string-extra
symfony/polyfill-ctype not found
symfony/polyfill-iconv not found
symfony/polyfill-mbstring not found
symfony/polyfill-php83 not found
league/oauth2-client version  in /var/www/html/glpi11/vendor/league/oauth2-client/src/Provider
league/oauth2-google version  in /var/www/html/glpi11/vendor/league/oauth2-google/src/Provider
thenetworg/oauth2-azure version  in /var/www/html/glpi11/vendor/thenetworg/oauth2-azure/src/Provider
league/commonmark version  in /var/www/html/glpi11/vendor/league/commonmark/src/Extension/CommonMark
egulias/email-validator version  in /var/www/html/glpi11/vendor/egulias/email-validator/src
symfony/mime not found
apereo/phpcas version  in /var/www/html/glpi11/vendor/apereo/phpcas/source
bacon/bacon-qr-code version  in /var/www/html/glpi11/vendor/bacon/bacon-qr-code/src
robthree/twofactorauth version  in /var/www/html/glpi11/vendor/robthree/twofactorauth/lib
ralouphie/getallheaders not found
symfony/html-sanitizer version  in /var/www/html/glpi11/vendor/symfony/html-sanitizer
league/oauth2-server version  in /var/www/html/glpi11/vendor/league/oauth2-server/src
league/html-to-markdown version  in /var/www/html/glpi11/vendor/league/html-to-markdown/src
twig/markdown-extra version  in /var/www/html/glpi11/vendor/twig/markdown-extra
webonyx/graphql-php version  in /var/www/html/glpi11/vendor/webonyx/graphql-php/src
phpdocumentor/reflection-docblock version  in /var/www/html/glpi11/vendor/phpdocumentor/reflection-docblock/src
symfony/property-access version  in /var/www/html/glpi11/vendor/symfony/property-access
symfony/serializer version  in /var/www/html/glpi11/vendor/symfony/serializer
symfony/property-info version  in /var/www/html/glpi11/vendor/symfony/property-info
symfony/error-handler version  in /var/www/html/glpi11/vendor/symfony/error-handler
SQL replicas
Not active
Notifications
Way of sending emails: PHP
Plugins list
samlsso              Name: samlSSO                        Version: 1.2.00     State: Ingeschakeld
Install Method: Manual

Anything else?

No response

DonutsNL avatar Apr 07 '25 09:04 DonutsNL

After creating a new user if you change the password a password 'pupup' is shown. The popup does not have a ' submit' button.

This is normal. The UI was cleaned up in #19123 and the mess of password fields was moved to a modal. There is no submit button here because you aren't submitting the password change separately from the user form. When you close the modal, you would see a message below the "Change password" button stating the change is pending.

If the alter password is confirmed by pressing enter

Pressing enter in these fields shouldn't submit the form. That is a bug.

cconard96 avatar Apr 08 '25 01:04 cconard96

That doesnt feel like intuitive form design. The button "change password" (for me) suggests its a separate process. This suggestion is enforced with the pop-out.

DonutsNL avatar Apr 08 '25 05:04 DonutsNL

Feel free to offer an alternative that keeps us from returning to the messy user form we had in previous versions. My next suggestion was going to be to completely remove the ability to change the password in the form and replace it with a Massive Action which can only be seen and used from the Actions dropdown in the user form, but this seemed complicated to adapt the massive action feature for at the time.

cconard96 avatar Apr 08 '25 09:04 cconard96

Does the ui framwork offer say accordeon elements. In which case i would suggest to hide all non regular form elements in a hidden advanced section and offer a fold/unfold option(s) to access them. This allows you to keep the logic simple and the forms clean.

DonutsNL avatar Apr 08 '25 14:04 DonutsNL

Think this one is fixed as well ill close it

DonutsNL avatar Nov 03 '25 10:11 DonutsNL