@ -33,30 +33,13 @@
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					CALAMARES_PLUGIN_FACTORY_DEFINITION (  UsersQmlViewStepFactory ,  registerPlugin <  UsersQmlViewStep  > ( ) ;  ) 
 
					 
					 
					 
					CALAMARES_PLUGIN_FACTORY_DEFINITION (  UsersQmlViewStepFactory ,  registerPlugin <  UsersQmlViewStep  > ( ) ;  ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					/*static const NamedEnumTable< SetHostNameJob::Action >&
 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					hostnameActions ( ) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{ 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    using  Action  =  SetHostNameJob : : Action ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // *INDENT-OFF*
 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // clang-format off
 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    static  const  NamedEnumTable <  Action  >  names  { 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        {  QStringLiteral (  " none "  ) ,  Action : : None  } , 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        {  QStringLiteral (  " etcfile "  ) ,  Action : : EtcHostname  } , 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        {  QStringLiteral (  " hostnamed "  ) ,  Action : : SystemdHostname  } 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    } ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // clang-format on
 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // *INDENT-ON*
 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    return  names ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} */ 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					UsersQmlViewStep : : UsersQmlViewStep (  QObject *  parent  ) 
 
					 
					 
					 
					UsersQmlViewStep : : UsersQmlViewStep (  QObject *  parent  ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					:  Calamares : : QmlViewStep (  parent  ) 
 
					 
					 
					 
					:  Calamares : : QmlViewStep (  parent  ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					,  m_config (  new  Config ( this )  ) 
 
					 
					 
					 
					,  m_config (  new  Config ( this )  ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{ 
 
					 
					 
					 
					{ 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    connect (  m_config ,  & Config : : readyChanged ,  this ,  & UsersQmlViewStep : : nextStatusChanged  ) ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    emit  nextStatusChanged (  true  ) ; 
 
					 
					 
					 
					    emit  nextStatusChanged (  true  ) ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    //connect( m_config, &Config::checkReady, this, &UsersQmlViewStep::nextStatusChanged );
 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					QString 
 
					 
					 
					 
					QString 
 
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -68,8 +51,8 @@ UsersQmlViewStep::prettyName() const
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					bool 
 
					 
					 
					 
					bool 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					UsersQmlViewStep : : isNextEnabled ( )  const 
 
					 
					 
					 
					UsersQmlViewStep : : isNextEnabled ( )  const 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{ 
 
					 
					 
					 
					{ 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    //return m_config->isReady();
 
 
					 
					 
					 
					    return  m_config - > isReady ( ) ; 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    return  true ; 
 
					 
					 
					 
					    //return true;
 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -105,94 +88,22 @@ void
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					UsersQmlViewStep : : onActivate ( ) 
 
					 
					 
					 
					UsersQmlViewStep : : onActivate ( ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{ 
 
					 
					 
					 
					{ 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    //m_config->onActivate();
 
 
					 
					 
					 
					    //m_config->onActivate();
 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    //QmlViewStep::onActivate();
 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					void 
 
					 
					 
					 
					void 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					UsersQmlViewStep : : onLeave ( ) 
 
					 
					 
					 
					UsersQmlViewStep : : onLeave ( ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{ 
 
					 
					 
					 
					{ 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    m_jobs . clear ( ) ; 
 
					 
					 
					 
					    m_jobs  =  m_config - > createJobs ( ) ; 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					    m_config - > finalizeGlobalStorage ( ) ; 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    //m_jobs.append( m_config->createJobs( m_defaultGroups ) );
 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					void 
 
					 
					 
					 
					void 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					UsersQmlViewStep : : setConfigurationMap (  const  QVariantMap &  configurationMap  ) 
 
					 
					 
					 
					UsersQmlViewStep : : setConfigurationMap (  const  QVariantMap &  configurationMap  ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{ 
 
					 
					 
					 
					{ 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    using  CalamaresUtils : : getBool ; 
 
					 
					 
					 
					    m_config - > setConfigurationMap (  configurationMap  ) ; 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  (  configurationMap . contains (  " defaultGroups "  ) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        & &  configurationMap . value (  " defaultGroups "  ) . type ( )  = =  QVariant : : List  ) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    { 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        m_defaultGroups  =  configurationMap . value (  " defaultGroups "  ) . toStringList ( ) ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    } 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    else 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    { 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        cWarning ( )  < <  " Using fallback groups. Please check defaultGroups in users.conf " ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        m_defaultGroups  =  QStringList  {  " lp " ,  " video " ,  " network " ,  " storage " ,  " wheel " ,  " audio "  } ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    } 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  (  configurationMap . contains (  " autologinGroup "  ) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        & &  configurationMap . value (  " autologinGroup "  ) . type ( )  = =  QVariant : : String  ) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    { 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        Calamares : : JobQueue : : instance ( ) - > globalStorage ( ) - > insert ( 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            " autologinGroup " ,  configurationMap . value (  " autologinGroup "  ) . toString ( )  ) ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    } 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  (  configurationMap . contains (  " sudoersGroup "  ) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        & &  configurationMap . value (  " sudoersGroup "  ) . type ( )  = =  QVariant : : String  ) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    { 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        Calamares : : JobQueue : : instance ( ) - > globalStorage ( ) - > insert (  " sudoersGroup " , 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                                                                  configurationMap . value (  " sudoersGroup "  ) . toString ( )  ) ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    } 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    bool  setRootPassword  =  getBool (  configurationMap ,  " setRootPassword " ,  true  ) ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    Calamares : : JobQueue : : instance ( ) - > globalStorage ( ) - > insert (  " setRootPassword " ,  setRootPassword  ) ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    //m_config->writeRootPassword( setRootPassword );
 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    //m_config->setAutologinGroup( getBool( configurationMap, "doAutologin", false ) );
 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    //m_config->setReusePasswordDefault( getBool( configurationMap, "doReusePassword", false ) );
 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  (  configurationMap . contains (  " passwordRequirements "  ) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        & &  configurationMap . value (  " passwordRequirements "  ) . type ( )  = =  QVariant : : Map  ) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    { 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        auto  pr_checks (  configurationMap . value (  " passwordRequirements "  ) . toMap ( )  ) ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        for  (  decltype (  pr_checks  ) : : const_iterator  i  =  pr_checks . constBegin ( ) ;  i  ! =  pr_checks . constEnd ( ) ;  + + i  ) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        { 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            //m_config->passwordChecks( i.key(), i.value() );
 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        } 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    } 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    //m_config->setPasswordCheckboxVisible( getBool( configurationMap, "allowWeakPasswords", false ) );
 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    //m_config->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 "  ) ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  (  hostnameActionString . isEmpty ( )  ) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    { 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        hostnameActionString  =  QStringLiteral (  " EtcFile "  ) ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    } 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    bool  ok  =  false ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    auto  hostnameAction  =  hostnameActions ( ) . find (  hostnameActionString ,  ok  ) ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  (  ! ok  ) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    { 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        hostnameAction  =  Action : : EtcHostname ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    } 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    Action  hostsfileAction  =  getBool (  configurationMap ,  " writeHostsFile " ,  true  )  ?  Action : : WriteEtcHosts  :  Action : : None ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    m_actions  =  hostsfileAction  |  hostnameAction ; */ 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    Calamares : : QmlViewStep : : setConfigurationMap (  configurationMap  ) ;  // call parent implementation last
 
 
					 
					 
					 
					    Calamares : : QmlViewStep : : setConfigurationMap (  configurationMap  ) ;  // call parent implementation last
 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    setContextProperty (  " Users " ,  m_config  ) ; 
 
					 
					 
					 
					    setContextProperty (  " Users " ,  m_config  ) ;