This commit is contained in:
Krad
2021-12-21 16:11:14 +08:00
parent 7c0f8ed8fd
commit ba5d651f54
4 changed files with 74 additions and 58 deletions

View File

@@ -5,6 +5,7 @@
#include "User.h"
#include "db/SQLHelper.h"
#include <QMetaProperty>
#include <event/EventCenter.h>
#include <QUuid>
#include <qdebug.h>
User* User::currentUser = nullptr;
@@ -57,14 +58,24 @@ bool User::QueryUser(QString userID, QString Pwd) {
SQLHelper::QueryFirst(sql, map, &params);
if(!map.isEmpty())
{
if (!currentUser) currentUser = new User;
// first login
if (!currentUser) {
currentUser = new User;
// currentUser->roleName = getRoleName(map["RoleID"].toString());
}
QString roleN = getRoleName(map["RoleID"].toString());
#define USER_READONLY_PROPERTY(name) currentUser->m_##name = map[#name].toString();
#define USER_PROPERTY(name) currentUser->mf_##name = false;\
USER_READONLY_PROPERTY(name)
USER_PROPERTIES_MACRO()
#undef USER_PROPERTY
#undef USER_READONLY_PROPERTY
currentUser->isAdminFlag = -1;
// trigger LoginRoleChanged event
if (roleN != currentUser->roleName){
currentUser->roleName = roleN;
EventCenter::Default()->triggerEvent(LoginRoleChanged, nullptr, nullptr);
}
return true;
}
return false;
@@ -99,15 +110,6 @@ bool User::getUser(QString userUID, User& user) {
return false;
}
bool User::isAdmin() {
if (isAdminFlag<0)
{
auto RoleName = getRoleName(this->m_RoleID);
isAdminFlag = RoleName == "admin"?1:0 ;
}
return isAdminFlag;
}
static bool LOAD_ALL_ROLE = false;
static QMap<QString,QString> roleCache;
@@ -180,5 +182,14 @@ bool User::resetPassword() {
}
bool User::isAdmin() {
return roleName == "admin" ;
}
bool User::isEngineer() {
return roleName == "engineer";
}

View File

@@ -63,6 +63,7 @@ public:
}
bool submitChange();
bool isAdmin();
bool isEngineer();
bool resetPassword();
static QString getRoleName(QString RoleID);
static QString getRoleID(QString RoleName);
@@ -77,7 +78,7 @@ private:
USER_PROPERTIES_MACRO()
#undef USER_PROPERTY
#undef USER_READONLY_PROPERTY
int isAdminFlag = -1;
QString roleName;
};