Files
GUI/src/models/User.h

87 lines
2.2 KiB
C
Raw Normal View History

2021-11-11 14:09:12 +08:00
//
// Created by Krad on 2021/11/11.
//
#ifndef GUI_USER_H
#define GUI_USER_H
#define USER_PROPERTIES_MACRO()\
USER_READONLY_PROPERTY(UserID)\
USER_READONLY_PROPERTY(UserCode)\
USER_PROPERTY(UserName)\
USER_PROPERTY(Password)\
USER_PROPERTY(RoleID)\
USER_PROPERTY(Comment)
#include <QObject>
2021-11-12 14:32:22 +08:00
#include <QtCore/QCryptographicHash>
2021-11-11 14:09:12 +08:00
class User:public QObject {
Q_OBJECT
public:
static bool QueryUser(QString userID, QString Pwd);
2021-12-10 10:16:41 +08:00
static bool existsUser(QString userCode);
2021-11-12 14:32:22 +08:00
static QString getEncryptedPassword(const QString& password)
{
QByteArray bytePwd = password.toLatin1();
QByteArray bytePwdMd5 = QCryptographicHash::hash(bytePwd, QCryptographicHash::Md5);
return bytePwdMd5.toHex();
}
2021-11-11 14:09:12 +08:00
static User* Current(){
return currentUser;
}
2021-12-10 10:16:41 +08:00
static bool getUser(QString userUID,User& user);
static bool insertUser(QString UserCode,User& user);
2021-11-11 14:09:12 +08:00
explicit User(QObject *parent=nullptr);
~User();
QString getIndexName(){
return "UserID";
}
QString getIndexValue(){
return m_UserID;
}
// add properties setter and getter
#define USER_READONLY_PROPERTY(name)\
QString get##name(){\
return m_##name;\
}
#define USER_PROPERTY(name)\
USER_READONLY_PROPERTY(name)\
void set##name(const QString & v)\
{\
if (m_##name == v) return;\
m_##name = v;\
mf_##name = true;\
}
USER_PROPERTIES_MACRO()
#undef USER_PROPERTY
#undef USER_READONLY_PROPERTY
2021-11-12 14:32:22 +08:00
void restorePassword(const QString& original_pwd){
m_Password = original_pwd;
mf_Password = false;
}
2021-11-11 14:09:12 +08:00
bool submitChange();
bool isAdmin();
2021-12-21 16:11:14 +08:00
bool isEngineer();
2021-12-10 11:22:20 +08:00
bool resetPassword();
2021-12-10 10:16:41 +08:00
static QString getRoleName(QString RoleID);
static QString getRoleID(QString RoleName);
static QStringList getAllRoleName();
2021-11-11 14:09:12 +08:00
private:
static User* currentUser;
// add properties store and modify flag
#define USER_READONLY_PROPERTY(name) QString m_##name;
#define USER_PROPERTY(name)\
USER_READONLY_PROPERTY(name)\
bool mf_##name = false;
USER_PROPERTIES_MACRO()
#undef USER_PROPERTY
#undef USER_READONLY_PROPERTY
2021-12-21 16:11:14 +08:00
QString roleName;
2021-11-11 14:09:12 +08:00
};
#endif //GUI_USER_H