#pragma once #include #include #include class RaveUsersBackend : public QObject { Q_OBJECT Q_PROPERTY( QString username READ username NOTIFY usernameChanged ) Q_PROPERTY( QString hostname READ hostname NOTIFY hostnameChanged ) Q_PROPERTY( QString usernameStatus READ usernameStatus NOTIFY statusChanged ) Q_PROPERTY( QString hostnameStatus READ hostnameStatus NOTIFY statusChanged ) Q_PROPERTY( QString passwordStatus READ passwordStatus NOTIFY statusChanged ) Q_PROPERTY( QString rootPasswordStatus READ rootPasswordStatus NOTIFY statusChanged ) Q_PROPERTY( bool ready READ isReady NOTIFY readyChanged ) Q_PROPERTY( bool reuseRootPassword READ reuseRootPassword NOTIFY reuseRootPasswordChanged ) Q_PROPERTY( bool rootReuseVisible READ rootReuseVisible CONSTANT ) public: explicit RaveUsersBackend( QObject* parent = nullptr ); QString username() const { return m_username; } QString hostname() const { return m_hostname; } QString usernameStatus() const; QString hostnameStatus() const; QString passwordStatus() const; QString rootPasswordStatus() const; bool isReady() const; bool reuseRootPassword() const { return m_reuseRootPassword; } bool rootReuseVisible() const { return m_setRootPassword; } QString userPassword() const { return m_password; } QString rootPassword() const { return m_reuseRootPassword ? m_password : m_rootPassword; } QString userShell() const { return m_userShell; } QStringList groupsForThisUser() const; QString sudoersGroup() const { return m_sudoersGroup; } bool sudoersConfigureWithGroup() const { return m_sudoersConfigureWithGroup; } int homeUMask() const { return m_homeUMask; } QStringList defaultGroups() const { return m_defaultGroups; } Q_INVOKABLE void setUsername( const QString& s ); Q_INVOKABLE void setHostname( const QString& s ); Q_INVOKABLE void setPassword( const QString& s ); Q_INVOKABLE void setPasswordSecondary( const QString& s ); Q_INVOKABLE void setRootPasswordText( const QString& s ); Q_INVOKABLE void setRootPasswordSecondaryText( const QString& s ); Q_INVOKABLE void setReuseRootPassword( bool b ); void setForbiddenLoginNames( const QStringList& names ) { m_forbiddenLoginNames = names; } void setForbiddenHostNames( const QStringList& names ) { m_forbiddenHostNames = names; } void setUserShell( const QString& shell ) { m_userShell = shell; } void setSudoersGroup( const QString& group ) { m_sudoersGroup = group; } void setSudoersConfigureWithGroup( bool b ) { m_sudoersConfigureWithGroup = b; } void setSetRootPassword( bool b ) { m_setRootPassword = b; } void setHomeUMask( int umask ) { m_homeUMask = umask; } void setDefaultGroups( const QStringList& groups ) { m_defaultGroups = groups; } signals: void usernameChanged(); void hostnameChanged(); void statusChanged(); void readyChanged(); void reuseRootPasswordChanged(); private: void checkReady(); QString m_username; QString m_hostname; QString m_password; QString m_passwordSecondary; QString m_rootPassword; QString m_rootPasswordSecondary; bool m_customHostname = false; bool m_reuseRootPassword = true; bool m_setRootPassword = true; QStringList m_forbiddenLoginNames; QStringList m_forbiddenHostNames; QString m_userShell = QStringLiteral( "/bin/bash" ); QString m_sudoersGroup; bool m_sudoersConfigureWithGroup = true; int m_homeUMask = -1; QStringList m_defaultGroups; bool m_lastReady = false; };