summaryrefslogtreecommitdiff
path: root/raveos-calamares-module/raveusers/RaveUsersBackend.h
blob: 4e06f47e6bc6a4499c1d8443a53272c5cc3296f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#pragma once

#include <QObject>
#include <QString>
#include <QStringList>

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;
};