This repository has been archived on 2026-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
powersync-app/libnymea-app/usermanager.h
2020-09-15 18:10:12 +02:00

74 lines
1.8 KiB
C++

#ifndef USERMANAGER_H
#define USERMANAGER_H
#include <QObject>
#include "jsonrpc/jsonrpcclient.h"
#include "engine.h"
#include "types/tokeninfos.h"
#include "types/userinfo.h"
class UserManager: public JsonHandler
{
Q_OBJECT
Q_PROPERTY(Engine* engine READ engine WRITE setEngine NOTIFY engineChanged)
Q_PROPERTY(bool loading READ loading NOTIFY loadingChanged)
Q_PROPERTY(UserInfo* userInfo READ userInfo CONSTANT)
Q_PROPERTY(TokenInfos* tokenInfos READ tokenInfos CONSTANT)
public:
enum UserError {
UserErrorNoError,
UserErrorBackendError,
UserErrorInvalidUserId,
UserErrorDuplicateUserId,
UserErrorBadPassword,
UserErrorTokenNotFound,
UserErrorPermissionDenied
};
Q_ENUM(UserError)
explicit UserManager(QObject *parent = nullptr);
Engine* engine() const;
void setEngine(Engine* engine);
bool loading() const;
UserInfo* userInfo() const;
TokenInfos* tokenInfos() const;
QString nameSpace() const override;
Q_INVOKABLE int changePassword(const QString &newPassword);
Q_INVOKABLE int removeToken(const QUuid &id);
signals:
void engineChanged();
void loadingChanged();
void deleteTokenResponse(int id, UserError error);
void changePasswordResponse(int id, UserError error);
private slots:
void notificationReceived(const QVariantMap &data);
void getUserInfoReply(int commandId, const QVariantMap &data);
void getTokensReply(int commandId, const QVariantMap &data);
void deleteTokenReply(int commandId, const QVariantMap &params);
void changePasswordReply(int commandId, const QVariantMap &params);
private:
Engine *m_engine = nullptr;
bool m_loading = false;
UserInfo *m_userInfo = nullptr;
TokenInfos *m_tokenInfos = nullptr;
QHash<int, QUuid> m_tokensToBeRemoved;
};
#endif // USERMANAGER_H