[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 "GlobalStorage.h"
|
||||
#include "JobQueue.h"
|
||||
#include "utils/Logger.h"
|
||||
#include "utils/Variant.h"
|
||||
|
||||
Config::Config( QObject* parent )
|
||||
: QObject( parent )
|
||||
{
|
||||
@ -28,6 +33,26 @@ Config::Config( QObject* parent )
|
||||
Config::~Config() {}
|
||||
|
||||
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
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Q_PROPERTY( QString userShell READ userShell WRITE setUserShell NOTIFY userShellChanged )
|
||||
|
||||
public:
|
||||
Config( QObject* parent = nullptr );
|
||||
~Config();
|
||||
|
||||
// Currently, config does nothing
|
||||
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
|
||||
|
@ -209,15 +209,6 @@ UsersViewStep::setConfigurationMap( const QVariantMap& configurationMap )
|
||||
m_widget->setPasswordCheckboxVisible( getBool( configurationMap, "allowWeakPasswords", 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;
|
||||
|
||||
QString hostnameActionString = CalamaresUtils::getString( configurationMap, "setHostname" );
|
||||
|
Loading…
Reference in New Issue
Block a user