From 93eb169ea53f93a5a778567e4cc33253aff80094 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot <groot@kde.org> Date: Fri, 1 Nov 2019 13:05:58 +0100 Subject: [PATCH] [users] Improve error messages - distinguish beginning of username from the rest - must start with a letter or _ - tighten message for bad username and bad hostname FIXES #1261 --- src/modules/users/UsersPage.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/modules/users/UsersPage.cpp b/src/modules/users/UsersPage.cpp index a60532022..acb4f79b6 100644 --- a/src/modules/users/UsersPage.cpp +++ b/src/modules/users/UsersPage.cpp @@ -305,7 +305,8 @@ void UsersPage::validateUsernameText( const QString& textRef ) { QString text( textRef ); - QRegExpValidator val( USERNAME_RX ); + QRegExpValidator val_whole( USERNAME_RX ); + QRegExpValidator val_start( QRegExp( "[a-z_].*" ) ); // anchors are implicit in QRegExpValidator int pos = -1; if ( text.isEmpty() ) @@ -319,12 +320,20 @@ UsersPage::validateUsernameText( const QString& textRef ) labelError( ui->labelUsername, ui->labelUsernameError, tr( "Your username is too long." ) ); m_readyUsername = false; } - else if ( val.validate( text, pos ) == QValidator::Invalid ) + else if ( val_start.validate( text, pos ) == QValidator::Invalid ) + { + labelError( + ui->labelUsername, + ui->labelUsernameError, + tr( "Your username must start with a lowercase letter or underscore." ) ); + m_readyUsername = false; + } + else if ( val_whole.validate( text, pos ) == QValidator::Invalid ) { labelError( ui->labelUsername, ui->labelUsernameError, - tr( "Your username contains invalid characters. Only lowercase letters and numbers are allowed." ) ); + tr( "Only lowercase letters, numbers, underscore and hyphen are allowed." ) ); m_readyUsername = false; } else @@ -372,7 +381,7 @@ UsersPage::validateHostnameText( const QString& textRef ) { labelError( ui->labelHostname, ui->labelHostnameError, - tr( "Your hostname contains invalid characters. Only letters, numbers and dashes are allowed." ) ); + tr( "Only letters, numbers, underscore and hyphen are allowed." ) ); m_readyHostname = false; } else