1 /* 2 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 3 SPDX-FileCopyrightText: 2020 Harald Sitter <sitter@kde.org> 4 */ 5 6 #include <QObject> 7 8 #pragma once 9 10 class UserManager; 11 12 class User : public QObject 13 { 14 Q_OBJECT 15 Q_PROPERTY(QString name READ name CONSTANT) 16 Q_PROPERTY(bool inSamba READ inSamba NOTIFY inSambaChanged) 17 public: 18 explicit User(const QString &name, UserManager *parent); 19 20 void resolve(); 21 QString name() const; 22 bool inSamba() const; 23 24 Q_INVOKABLE void addToSamba(const QString &password); 25 26 Q_SIGNALS: 27 void resolved(); 28 void inSambaChanged(); 29 // stderr of smbpasswd if it came back with a failure. This may be multiple lines but usually is not. 30 void addToSambaError(const QString &error); 31 32 private: 33 const QString m_name; 34 bool m_inSamba = false; // tdbsam knows about this user already 35 }; 36 37 class UserManager : public QObject 38 { 39 Q_OBJECT 40 public: 41 using QObject::QObject; 42 43 bool canManageSamba() const; 44 QList<User *> users() const; 45 Q_INVOKABLE User *currentUser() const; 46 47 public Q_SLOTS: 48 void load(); 49 50 Q_SIGNALS: 51 void loaded(); 52 53 private: 54 QList<User *> m_users; 55 User *m_currentUser = nullptr; 56 bool m_canManageSamba = false; 57 int m_waitingForResolution = 0; 58 }; 59