[users] Move shell settings to the Config object
- this is a set-only property (as far as the current ViewStep is concerned) and is passed around in GS for non-obvious reasons.
This commit is contained in:
parent
8497aad7a1
commit
2f786079f3
@ -20,6 +20,11 @@
|
|||||||
|
|
||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
|
|
||||||
|
#include "GlobalStorage.h"
|
||||||
|
#include "JobQueue.h"
|
||||||
|
#include "utils/Logger.h"
|
||||||
|
#include "utils/Variant.h"
|
||||||
|
|
||||||
Config::Config( QObject* parent )
|
Config::Config( QObject* parent )
|
||||||
: QObject( parent )
|
: QObject( parent )
|
||||||
{
|
{
|
||||||
@ -28,6 +33,26 @@ Config::Config( QObject* parent )
|
|||||||
Config::~Config() {}
|
Config::~Config() {}
|
||||||
|
|
||||||
void
|
void
|
||||||
Config::setConfigurationMap( const QVariantMap& )
|
Config::setUserShell( const QString& shell )
|
||||||
{
|
{
|
||||||
|
if ( !shell.isEmpty() && !shell.startsWith( '/' ) )
|
||||||
|
{
|
||||||
|
cWarning() << "User shell" << shell << "is not an absolute path.";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// The shell is put into GS because the CreateUser job expects it there
|
||||||
|
Calamares::JobQueue::instance()->globalStorage()->insert( "userShell", shell );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
Config::setConfigurationMap( const QVariantMap& configurationMap )
|
||||||
|
{
|
||||||
|
QString shell( QLatin1String( "/bin/bash" ) ); // as if it's not set at all
|
||||||
|
if ( configurationMap.contains( "userShell" ) )
|
||||||
|
{
|
||||||
|
shell = CalamaresUtils::getString( configurationMap, "userShell" );
|
||||||
|
}
|
||||||
|
// Now it might be explicitly set to empty, which is ok
|
||||||
|
setUserShell( shell );
|
||||||
}
|
}
|
||||||
|
@ -26,12 +26,39 @@
|
|||||||
|
|
||||||
class Config : public QObject
|
class Config : public QObject
|
||||||
{
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
Q_PROPERTY( QString userShell READ userShell WRITE setUserShell NOTIFY userShellChanged )
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Config( QObject* parent = nullptr );
|
Config( QObject* parent = nullptr );
|
||||||
~Config();
|
~Config();
|
||||||
|
|
||||||
// Currently, config does nothing
|
|
||||||
void setConfigurationMap( const QVariantMap& );
|
void setConfigurationMap( const QVariantMap& );
|
||||||
|
|
||||||
|
/** @brief Full path to the user's shell executable
|
||||||
|
*
|
||||||
|
* Typically this will be /bin/bash, but it can be set from
|
||||||
|
* the config file with the *userShell* setting.
|
||||||
|
*/
|
||||||
|
QString userShell() const { return m_userShell; }
|
||||||
|
|
||||||
|
public Q_SLOTS:
|
||||||
|
/** @brief Sets the user's shell if possible
|
||||||
|
*
|
||||||
|
* If the path is empty, that's ok: no shell will be explicitly set,
|
||||||
|
* so the user will get whatever shell is set to default in the target.
|
||||||
|
*
|
||||||
|
* The given non-empty @p path must be an absolute path (for use inside
|
||||||
|
* the target system!); if it is not, the shell is not changed.
|
||||||
|
*/
|
||||||
|
void setUserShell( const QString& path );
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void userShellChanged( const QString& );
|
||||||
|
|
||||||
|
private:
|
||||||
|
QString m_userShell;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -209,15 +209,6 @@ UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
m_widget->setPasswordCheckboxVisible( getBool( configurationMap, "allowWeakPasswords", false ) );
|
m_widget->setPasswordCheckboxVisible( getBool( configurationMap, "allowWeakPasswords", false ) );
|
||||||
m_widget->setValidatePasswordDefault( !getBool( configurationMap, "allowWeakPasswordsDefault", false ) );
|
m_widget->setValidatePasswordDefault( !getBool( configurationMap, "allowWeakPasswordsDefault", false ) );
|
||||||
|
|
||||||
QString shell( QLatin1String( "/bin/bash" ) ); // as if it's not set at all
|
|
||||||
if ( configurationMap.contains( "userShell" ) )
|
|
||||||
{
|
|
||||||
shell = CalamaresUtils::getString( configurationMap, "userShell" );
|
|
||||||
}
|
|
||||||
// Now it might be explicitly set to empty, which is ok
|
|
||||||
|
|
||||||
Calamares::JobQueue::instance()->globalStorage()->insert( "userShell", shell );
|
|
||||||
|
|
||||||
using Action = SetHostNameJob::Action;
|
using Action = SetHostNameJob::Action;
|
||||||
|
|
||||||
QString hostnameActionString = CalamaresUtils::getString( configurationMap, "setHostname" );
|
QString hostnameActionString = CalamaresUtils::getString( configurationMap, "setHostname" );
|
||||||
|
Loading…
Reference in New Issue
Block a user