Can get current user ID

This commit is contained in:
Pierre HUBERT
2018-11-29 17:35:27 +01:00
parent 2396047204
commit d405b0e8e1
8 changed files with 193 additions and 24 deletions

View File

@@ -6,6 +6,9 @@
#include "../data/accountlogintokens.h"
#include "../helpers/apihelper.h"
//Current user ID
static int mUserID = -1;
AccountHelper::AccountHelper(QObject *parent) : QObject(parent)
{
mAPIHelper = new APIHelper;
@@ -39,6 +42,15 @@ void AccountHelper::login(const AccountLoginRequest &info)
}
void AccountHelper::refreshCurrentUserID()
{
APIRequest *request = new APIRequest;
request->setURI("user/getCurrentUserID");
connect(request, &APIRequest::error, this, &AccountHelper::getUserIdCallbackError);
connect(request, &APIRequest::success, this, &AccountHelper::getUserIdCallbackSuccess);
mAPIHelper->execute(request);
}
void AccountHelper::loginError(int code)
{
//Delete API request
@@ -80,3 +92,35 @@ void AccountHelper::requestLoginResult(const QJsonDocument &document)
//Success
emit loginResult(LoginResult::LOGIN_SUCCESS);
}
void AccountHelper::getUserIdCallbackError()
{
qobject_cast<APIRequest *>(sender())->deleteLater();
emit refreshCurrentUserIDResult(false);
}
void AccountHelper::getUserIdCallbackSuccess(const QJsonDocument &document)
{
qobject_cast<APIRequest *>(sender())->deleteLater();
int userID = document.object().value("userID").toInt(-1);
if(userID < 0){
qWarning("Could not get user ID!");
emit refreshCurrentUserIDResult(false);
return;
}
mUserID = userID;
emit refreshCurrentUserIDResult(true);
}
int AccountHelper::getUserID()
{
if(mUserID < 1)
qWarning("An attempt to get user ID has been made while user ID has not been refreshed yet!");
return mUserID;
}

View File

@@ -39,6 +39,19 @@ public:
*/
void login(const AccountLoginRequest &info);
/**
* Refresh current user ID
*/
void refreshCurrentUserID();
/**
* Get current cached user ID
*
* @return The ID of the user ID / note : invalid value if user ID
* is not available yet
*/
static int getUserID();
signals:
/**
@@ -48,6 +61,13 @@ signals:
*/
void loginResult(LoginResult result);
/**
* Refresh current user ID result
*
* @param success TRUE in case of success / FALSE else
*/
void refreshCurrentUserIDResult(bool success);
public slots:
private slots:
@@ -56,6 +76,10 @@ private slots:
void loginError(int code);
void requestLoginResult(const QJsonDocument &document);
//Get current user id callbacks
void getUserIdCallbackError();
void getUserIdCallbackSuccess(const QJsonDocument &document);
private:
APIHelper *mAPIHelper;
};

View File

@@ -2,6 +2,9 @@
#include <QJsonDocument>
#include "apihelper.h"
#include "accounthelper.h"
#include "configurationhelper.h"
#include "../data/accountlogintokens.h"
#include "../config.h"
APIHelper::APIHelper(QObject *parent) : QObject(parent)
@@ -20,6 +23,13 @@ void APIHelper::execute(APIRequest *request)
request->addString("serviceName", API_SERVICE_NAME);
request->addString("serviceToken", API_SERVICE_TOKEN);
//Add account tokens if available
if(AccountHelper().signedIn()){
AccountLoginTokens tokens = ConfigurationHelper().getAccountTokens();
request->addString("userToken1", tokens.token1());
request->addString("userToken2", tokens.token2());
}
//Prepare request
//See this SO question to learn more : https://stackoverflow.com/questions/2599423
QUrlQuery queryData;