[users] Do some login-name guessing
This commit is contained in:
parent
66ae1823a5
commit
411a202ba5
@ -23,8 +23,11 @@
|
|||||||
#include "GlobalStorage.h"
|
#include "GlobalStorage.h"
|
||||||
#include "JobQueue.h"
|
#include "JobQueue.h"
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
|
#include "utils/String.h"
|
||||||
#include "utils/Variant.h"
|
#include "utils/Variant.h"
|
||||||
|
|
||||||
|
#include <QRegExp>
|
||||||
|
|
||||||
Config::Config( QObject* parent )
|
Config::Config( QObject* parent )
|
||||||
: QObject( parent )
|
: QObject( parent )
|
||||||
{
|
{
|
||||||
@ -75,11 +78,34 @@ Config::setLoginName( const QString& login )
|
|||||||
{
|
{
|
||||||
if ( login != m_loginName )
|
if ( login != m_loginName )
|
||||||
{
|
{
|
||||||
|
m_customLoginName = !login.isEmpty();
|
||||||
m_loginName = login;
|
m_loginName = login;
|
||||||
emit loginNameChanged( login );
|
emit loginNameChanged( login );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const QRegExp USERNAME_RX( "^[a-z_][a-z0-9_-]*[$]?$" );
|
||||||
|
|
||||||
|
static QString
|
||||||
|
makeLoginNameSuggestion( const QStringList& parts )
|
||||||
|
{
|
||||||
|
if ( parts.isEmpty() )
|
||||||
|
{
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString usernameSuggestion = parts.first();
|
||||||
|
for ( int i = 1; i < parts.length(); ++i )
|
||||||
|
{
|
||||||
|
if ( !parts.value( i ).isEmpty() )
|
||||||
|
{
|
||||||
|
usernameSuggestion.append( parts.value( i ).at( 0 ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return USERNAME_RX.indexIn( usernameSuggestion ) != -1 ? usernameSuggestion : QString();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Config::setUserName( const QString& name )
|
Config::setUserName( const QString& name )
|
||||||
{
|
{
|
||||||
@ -87,6 +113,21 @@ Config::setUserName( const QString& name )
|
|||||||
{
|
{
|
||||||
m_fullName = name;
|
m_fullName = name;
|
||||||
emit userNameChanged( name );
|
emit userNameChanged( name );
|
||||||
|
|
||||||
|
// Build login and hostname, if needed
|
||||||
|
QRegExp rx( "[^a-zA-Z0-9 ]", Qt::CaseInsensitive );
|
||||||
|
QString cleanName = CalamaresUtils::removeDiacritics( name ).toLower().replace( rx, " " ).simplified();
|
||||||
|
QStringList cleanParts = cleanName.split( ' ' );
|
||||||
|
|
||||||
|
if ( !m_customLoginName )
|
||||||
|
{
|
||||||
|
QString login = makeLoginNameSuggestion( cleanParts );
|
||||||
|
if ( !login.isEmpty() && login != m_loginName )
|
||||||
|
{
|
||||||
|
m_loginName = login;
|
||||||
|
emit loginNameChanged( login );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ public Q_SLOTS:
|
|||||||
|
|
||||||
/// Sets the full name, may guess a loginName
|
/// Sets the full name, may guess a loginName
|
||||||
void setUserName( const QString& name );
|
void setUserName( const QString& name );
|
||||||
/// Sets the login name
|
/// Sets the login name (flags it as "custom")
|
||||||
void setLoginName( const QString& login );
|
void setLoginName( const QString& login );
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
@ -93,6 +93,7 @@ private:
|
|||||||
QString m_sudoersGroup;
|
QString m_sudoersGroup;
|
||||||
QString m_fullName;
|
QString m_fullName;
|
||||||
QString m_loginName;
|
QString m_loginName;
|
||||||
|
bool m_customLoginName = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user