Improve input validation in UsersPage.

CAL-190 #close
main
Teo Mrnjavac 10 years ago
parent ca5132f13e
commit 8ad507e379

@ -1,6 +1,6 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2014, Teo Mrnjavac <teo@kde.org>
* Copyright 2014-2015, Teo Mrnjavac <teo@kde.org>
*
* Portions from the Manjaro Installation Framework
* by Roland Singer <roland@manjaro.org>
@ -177,7 +177,7 @@ UsersPage::fillSuggestions()
if ( !cleanParts.value( i ).isEmpty() )
usernameSuggestion.append( cleanParts.value( i ).at( 0 ) );
}
if ( m_usernameRx.indexIn( usernameSuggestion ) != -1 )
if ( USERNAME_RX.indexIn( usernameSuggestion ) != -1 )
{
ui->textBoxUsername->setText( usernameSuggestion );
validateUsernameText( usernameSuggestion );
@ -191,7 +191,7 @@ UsersPage::fillSuggestions()
if ( !cleanParts.isEmpty() && !cleanParts.first().isEmpty() )
{
QString hostnameSuggestion = QString( "%1-pc" ).arg( cleanParts.first() );
if ( m_hostnameRx.indexIn( hostnameSuggestion ) != -1 )
if ( HOSTNAME_RX.indexIn( hostnameSuggestion ) != -1 )
{
ui->textBoxHostname->setText( hostnameSuggestion );
validateHostnameText( hostnameSuggestion );
@ -214,7 +214,7 @@ void
UsersPage::validateUsernameText( const QString& textRef )
{
QString text( textRef );
QRegExp rx( m_usernameRx );
QRegExp rx( USERNAME_RX );
QRegExpValidator val( rx );
int pos = -1;
@ -224,20 +224,23 @@ UsersPage::validateUsernameText( const QString& textRef )
ui->labelUsername->clear();
m_readyUsername = false;
}
else if ( val.validate( text, pos ) == QValidator::Invalid )
else if ( text.length() > USERNAME_MAX_LENGTH )
{
ui->labelUsername->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::No,
CalamaresUtils::Original,
ui->labelUsername->size() ) );
--pos;
ui->labelUsernameError->setText(
tr( "Your username is too long." ) );
if ( pos >= 0 && pos < text.size() )
ui->labelUsernameError->setText(
tr( "Your username contains an invalid character '%1'" )
.arg( text.at( pos ) ) );
else
ui->labelUsernameError->setText(
tr( "Your username contains invalid characters!" ) );
m_readyUsername = false;
}
else if ( val.validate( text, pos ) == QValidator::Invalid )
{
ui->labelUsername->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::No,
CalamaresUtils::Original,
ui->labelUsername->size() ) );
ui->labelUsernameError->setText(
tr( "Your username contains invalid characters. Only lowercase letters and numbers are allowed." ) );
m_readyUsername = false;
}
@ -265,7 +268,7 @@ void
UsersPage::validateHostnameText( const QString& textRef )
{
QString text = textRef;
QRegExp rx( m_hostnameRx );
QRegExp rx( HOSTNAME_RX );
QRegExpValidator val( rx );
int pos = -1;
@ -275,20 +278,35 @@ UsersPage::validateHostnameText( const QString& textRef )
ui->labelHostname->clear();
m_readyHostname= false;
}
else if ( text.length() < HOSTNAME_MIN_LENGTH )
{
ui->labelHostname->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::No,
CalamaresUtils::Original,
ui->labelHostname->size() ) );
ui->labelHostnameError->setText(
tr( "Your hostname is too short." ) );
m_readyHostname = false;
}
else if ( text.length() > HOSTNAME_MAX_LENGTH )
{
ui->labelHostname->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::No,
CalamaresUtils::Original,
ui->labelHostname->size() ) );
ui->labelHostnameError->setText(
tr( "Your hostname is too long." ) );
m_readyHostname = false;
}
else if ( val.validate( text, pos ) == QValidator::Invalid )
{
ui->labelHostname->setPixmap( CalamaresUtils::defaultPixmap( CalamaresUtils::No,
CalamaresUtils::Original,
ui->labelHostname->size() ) );
--pos;
if ( pos >= 0 && pos < text.size() )
ui->labelHostnameError->setText(
tr( "Your hostname contains an invalid character '%1'" )
.arg( text.at( pos ) ) );
else
ui->labelHostnameError->setText(
tr( "Your hostname contains invalid characters!" ) );
ui->labelHostnameError->setText(
tr( "Your hostname contains invalid characters. Only letters, numbers and dashes are allowed." ) );
m_readyHostname = false;
}

@ -1,6 +1,6 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2014, Teo Mrnjavac <teo@kde.org>
* Copyright 2014-2015, Teo Mrnjavac <teo@kde.org>
*
* Portions from the Manjaro Installation Framework
* by Roland Singer <roland@manjaro.org>
@ -61,8 +61,11 @@ signals:
private:
Ui::Page_UserSetup* ui;
const QRegExp m_usernameRx = QRegExp( "^[a-z_][a-z0-9_-]*[$]?$" );
const QRegExp m_hostnameRx = QRegExp( "^[a-zA-Z][-a-zA-Z0-9_]*$" );
const QRegExp USERNAME_RX = QRegExp( "^[a-z_][a-z0-9_-]*[$]?$" );
const QRegExp HOSTNAME_RX = QRegExp( "^[a-zA-Z][-a-zA-Z0-9_]*$" );
const int USERNAME_MAX_LENGTH = 31;
const int HOSTNAME_MIN_LENGTH = 2;
const int HOSTNAME_MAX_LENGTH = 24;
bool m_readyFullName;
bool m_readyUsername;

Loading…
Cancel
Save