2014-09-08 15:54:52 +00:00
|
|
|
#include "jcelogin.h"
|
|
|
|
|
2014-09-17 01:08:38 +00:00
|
|
|
/**
|
|
|
|
* @brief jceLogin::jceLogin
|
|
|
|
* @param username pointer to allocated user settings
|
|
|
|
*/
|
2014-10-12 22:14:26 +00:00
|
|
|
jceLogin::jceLogin(user* username, jceStatusBar *statusBar)
|
2014-09-08 15:54:52 +00:00
|
|
|
{
|
2014-10-12 22:14:26 +00:00
|
|
|
this->statusBar = statusBar;
|
2014-10-06 16:15:24 +00:00
|
|
|
this->recieverPage = new QString();
|
|
|
|
this->jceA = username;
|
2014-10-12 22:14:26 +00:00
|
|
|
this->JceConnector = new jceSSLClient(statusBar);
|
2014-10-06 16:15:24 +00:00
|
|
|
QObject::connect(JceConnector,SIGNAL(serverDisconnectedbyRemote()),this,SLOT(reValidation()));
|
|
|
|
QObject::connect(JceConnector,SIGNAL(noInternetLink()),this,SLOT(reMakeConnection()));
|
2014-09-08 15:54:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
jceLogin::~jceLogin()
|
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
this->jceA = NULL;
|
|
|
|
delete recieverPage;
|
|
|
|
delete JceConnector;
|
|
|
|
JceConnector = NULL;
|
|
|
|
recieverPage = NULL;
|
2014-09-08 15:54:52 +00:00
|
|
|
}
|
|
|
|
/**
|
|
|
|
* @brief jceLogin::makeConnection Connecting to JCE student web site with JceA (username object) and validate it.
|
|
|
|
* throws error upon the given error from JCE website or Socket error
|
|
|
|
*/
|
2014-09-22 02:04:38 +00:00
|
|
|
int jceLogin::makeConnection()
|
2014-09-08 15:54:52 +00:00
|
|
|
{
|
2014-10-12 22:14:26 +00:00
|
|
|
qDebug() << Q_FUNC_INFO << "connection to be make";
|
2014-09-17 01:08:38 +00:00
|
|
|
|
2014-10-06 16:15:24 +00:00
|
|
|
if (this->recieverPage == NULL)
|
|
|
|
this->recieverPage = new QString();
|
2014-09-17 01:08:38 +00:00
|
|
|
|
2014-10-06 16:15:24 +00:00
|
|
|
int returnMode; //gets status according to called function of validation step
|
|
|
|
jceStatus status = jceStatus::JCE_NOT_CONNECTED;
|
2014-09-08 15:54:52 +00:00
|
|
|
|
2014-10-06 16:15:24 +00:00
|
|
|
returnMode = checkConnection(); //checking socket status. is connected?
|
2014-09-08 15:54:52 +00:00
|
|
|
|
2014-10-06 16:15:24 +00:00
|
|
|
if (returnMode == false)
|
2014-09-22 02:04:38 +00:00
|
|
|
{
|
2014-10-12 22:14:26 +00:00
|
|
|
statusBar->setIconConnectionStatus(jceStatusBar::Connecting);
|
2014-10-06 16:15:24 +00:00
|
|
|
if (JceConnector->makeConnect(dst_host,dst_port) == false) //couldnt make a connection
|
|
|
|
return jceStatus::ERROR_ON_OPEN_SOCKET;
|
|
|
|
else
|
|
|
|
returnMode = true;
|
2014-09-22 02:04:38 +00:00
|
|
|
}
|
2014-09-21 21:53:28 +00:00
|
|
|
|
2014-10-06 16:15:24 +00:00
|
|
|
if (returnMode == true) //connected to host
|
2014-09-08 15:54:52 +00:00
|
|
|
{
|
2014-10-12 22:14:26 +00:00
|
|
|
statusBar->setIconConnectionStatus(jceStatusBar::Connected);
|
2014-10-06 16:15:24 +00:00
|
|
|
returnMode = makeFirstVisit();
|
|
|
|
if (returnMode == true) //requst and send first validation
|
2014-09-08 15:54:52 +00:00
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
status = jceStatus::JCE_START_VALIDATING_PROGRESS;
|
|
|
|
returnMode = checkValidation();
|
|
|
|
if (returnMode == true) //check if username and password are matching
|
2014-09-08 15:54:52 +00:00
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
status = jceStatus::JCE_VALIDATION_PASSED;
|
|
|
|
returnMode = makeSecondVisit();
|
|
|
|
if (returnMode == true) //siging in the website
|
2014-09-08 15:54:52 +00:00
|
|
|
{
|
2014-10-10 15:20:33 +00:00
|
|
|
qDebug() << Q_FUNC_INFO << "Signed in succeesfully";
|
2014-10-06 16:15:24 +00:00
|
|
|
status = jceStatus::JCE_YOU_ARE_IN;
|
|
|
|
setLoginFlag(true);
|
2014-10-12 22:14:26 +00:00
|
|
|
statusBar->setIconConnectionStatus(jceStatusBar::LoggedIn);
|
2014-09-08 15:54:52 +00:00
|
|
|
}
|
2014-10-06 16:15:24 +00:00
|
|
|
else if (returnMode == jceLogin::ERROR_ON_GETTING_INFO)
|
2014-09-08 15:54:52 +00:00
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
status = jceLogin::ERROR_ON_GETTING_INFO;
|
2014-09-08 15:54:52 +00:00
|
|
|
}
|
2014-10-06 16:15:24 +00:00
|
|
|
else if (returnMode == jceLogin::ERROR_ON_SEND_REQUEST)
|
2014-09-08 15:54:52 +00:00
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
status = jceLogin::ERROR_ON_SEND_REQUEST;
|
2014-09-08 15:54:52 +00:00
|
|
|
}
|
2014-10-06 16:15:24 +00:00
|
|
|
else
|
2014-09-21 10:31:26 +00:00
|
|
|
status = jceStatus::ERROR_ON_VALIDATION;
|
2014-10-06 16:15:24 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
status = jceStatus::ERROR_ON_VALIDATION;
|
2014-09-08 15:54:52 +00:00
|
|
|
|
|
|
|
}
|
2014-10-06 16:15:24 +00:00
|
|
|
else if (returnMode == jceLogin::ERROR_ON_GETTING_INFO)
|
2014-09-08 15:54:52 +00:00
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
status = jceLogin::ERROR_ON_GETTING_INFO;
|
2014-09-08 15:54:52 +00:00
|
|
|
}
|
2014-10-06 16:15:24 +00:00
|
|
|
else if (returnMode == jceLogin::ERROR_ON_SEND_REQUEST)
|
2014-09-08 15:54:52 +00:00
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
status = jceLogin::ERROR_ON_SEND_REQUEST;
|
2014-09-08 15:54:52 +00:00
|
|
|
}
|
2014-10-06 16:15:24 +00:00
|
|
|
else
|
|
|
|
status = jceStatus::ERROR_ON_VALIDATION_USER_BLOCKED;
|
2014-09-08 15:54:52 +00:00
|
|
|
|
|
|
|
}
|
2014-10-06 16:15:24 +00:00
|
|
|
else
|
|
|
|
status = jceStatus::JCE_NOT_CONNECTED;
|
2014-09-08 15:54:52 +00:00
|
|
|
|
2014-10-12 22:14:26 +00:00
|
|
|
if (status != jceStatus::JCE_YOU_ARE_IN)
|
|
|
|
statusBar->setIconConnectionStatus(jceStatusBar::ERROR);
|
2014-10-06 16:15:24 +00:00
|
|
|
//we throw status even if we are IN!
|
2014-10-10 15:20:33 +00:00
|
|
|
qDebug() << Q_FUNC_INFO << "return status: " << status;
|
2014-10-06 16:15:24 +00:00
|
|
|
return status;
|
2014-09-08 15:54:52 +00:00
|
|
|
|
|
|
|
}
|
2014-09-17 01:08:38 +00:00
|
|
|
/**
|
|
|
|
* @brief jceLogin::checkConnection
|
|
|
|
* @return if connected true, otherwise false
|
|
|
|
*/
|
2014-09-08 15:54:52 +00:00
|
|
|
bool jceLogin::checkConnection() const
|
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
if (JceConnector->isConnected())
|
|
|
|
return true;
|
2014-09-08 15:54:52 +00:00
|
|
|
|
2014-10-06 16:15:24 +00:00
|
|
|
return false;
|
2014-09-08 15:54:52 +00:00
|
|
|
}
|
2014-09-17 01:08:38 +00:00
|
|
|
/**
|
2014-09-22 02:04:38 +00:00
|
|
|
* @brief jceLogin::closeAll
|
2014-09-17 01:08:38 +00:00
|
|
|
*/
|
2014-09-22 02:04:38 +00:00
|
|
|
void jceLogin::closeAll()
|
2014-09-08 15:54:52 +00:00
|
|
|
{
|
2014-10-12 22:14:26 +00:00
|
|
|
statusBar->setIconConnectionStatus(jceStatusBar::Disconnected);
|
2014-10-06 16:15:24 +00:00
|
|
|
this->JceConnector->makeDiconnect();
|
|
|
|
if ((this->recieverPage != NULL) && (!this->recieverPage->isEmpty()))
|
2014-09-21 10:31:26 +00:00
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
delete recieverPage;
|
|
|
|
recieverPage = NULL;
|
2014-09-21 10:31:26 +00:00
|
|
|
}
|
2014-09-22 02:04:38 +00:00
|
|
|
|
2014-09-08 15:54:52 +00:00
|
|
|
}
|
2014-09-17 01:08:38 +00:00
|
|
|
/**
|
2014-09-22 02:04:38 +00:00
|
|
|
* @brief jceLogin::reMakeConnection
|
2014-09-17 01:08:38 +00:00
|
|
|
*/
|
2014-09-22 02:04:38 +00:00
|
|
|
void jceLogin::reMakeConnection()
|
2014-09-08 15:54:52 +00:00
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
if (this->JceConnector != NULL)
|
|
|
|
delete JceConnector;
|
|
|
|
if (this->recieverPage != NULL)
|
|
|
|
delete recieverPage;
|
|
|
|
recieverPage = NULL;
|
|
|
|
JceConnector = NULL;
|
|
|
|
this->recieverPage = new QString();
|
2014-10-12 22:14:26 +00:00
|
|
|
this->JceConnector = new jceSSLClient(statusBar);
|
2014-10-06 16:15:24 +00:00
|
|
|
QObject::connect(JceConnector,SIGNAL(serverDisconnectedbyRemote()),this,SLOT(reValidation()));
|
|
|
|
QObject::connect(JceConnector,SIGNAL(noInternetLink()),this,SLOT(reMakeConnection()));
|
|
|
|
emit connectionReadyAfterDisconnection();
|
2014-09-08 15:54:52 +00:00
|
|
|
|
|
|
|
}
|
2014-09-17 01:08:38 +00:00
|
|
|
/**
|
|
|
|
* @brief jceLogin::makeFirstVisit making the first validation step of jce student portal login
|
|
|
|
* @return jceLogin enum list on error, true if valid
|
|
|
|
*/
|
2014-09-08 15:54:52 +00:00
|
|
|
int jceLogin::makeFirstVisit()
|
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
QString usr = jceA->getUsername();
|
|
|
|
QString psw = jceA->getPassword();
|
2014-10-12 22:14:26 +00:00
|
|
|
|
2014-10-06 16:15:24 +00:00
|
|
|
if (JceConnector->sendData(jceLoginHtmlScripts::makeRequest(jceLoginHtmlScripts::getFirstValidationStep(*jceA))))
|
2014-09-08 15:54:52 +00:00
|
|
|
{
|
2014-10-10 15:20:33 +00:00
|
|
|
if (!JceConnector->recieveData(recieverPage))
|
2014-10-06 16:15:24 +00:00
|
|
|
return jceLogin::ERROR_ON_GETTING_INFO;
|
2014-09-08 15:54:52 +00:00
|
|
|
}
|
2014-10-06 16:15:24 +00:00
|
|
|
else
|
|
|
|
return jceLogin::ERROR_ON_SEND_REQUEST;
|
2014-09-08 15:54:52 +00:00
|
|
|
|
2014-10-06 16:15:24 +00:00
|
|
|
return true;
|
2014-09-08 15:54:52 +00:00
|
|
|
}
|
2014-09-17 01:08:38 +00:00
|
|
|
/**
|
|
|
|
* @brief jceLogin::makeSecondVisit making the second validation step of jce student portal login
|
|
|
|
* @return jceLogin enum list on error, true if valid
|
|
|
|
*/
|
2014-09-08 15:54:52 +00:00
|
|
|
int jceLogin::makeSecondVisit()
|
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
QString usrid=jceA->getUserID();
|
|
|
|
QString pswid=jceA->getHashedPassword();
|
|
|
|
if ((JceConnector->sendData(jceLoginHtmlScripts::makeRequest(jceLoginHtmlScripts::getSecondValidationStep(*jceA)))))
|
2014-09-08 15:54:52 +00:00
|
|
|
{
|
2014-10-10 15:20:33 +00:00
|
|
|
if (!(JceConnector->recieveData(recieverPage)))
|
2014-10-06 16:15:24 +00:00
|
|
|
return jceLogin::ERROR_ON_GETTING_INFO;
|
2014-09-08 15:54:52 +00:00
|
|
|
|
2014-10-06 16:15:24 +00:00
|
|
|
return true;
|
2014-09-08 15:54:52 +00:00
|
|
|
}
|
2014-10-06 16:15:24 +00:00
|
|
|
else
|
|
|
|
return jceLogin::ERROR_ON_SEND_REQUEST;
|
2014-09-08 15:54:52 +00:00
|
|
|
|
2014-10-06 16:15:24 +00:00
|
|
|
return true;
|
2014-09-08 15:54:52 +00:00
|
|
|
}
|
2014-09-17 01:08:38 +00:00
|
|
|
/**
|
|
|
|
* @brief jceLogin::getCalendar according to parameters, we make an HTML request and send it over socket to server
|
|
|
|
* @param year - selected year
|
|
|
|
* @param semester - selected semester
|
|
|
|
* @return true if ok, jceLogin enum on error (recieverPage has html to parse if true)
|
|
|
|
*/
|
2014-09-08 15:54:52 +00:00
|
|
|
int jceLogin::getCalendar(int year, int semester)
|
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
if ((JceConnector->sendData(jceLoginHtmlScripts::makeRequest(jceLoginHtmlScripts::getCalendar(*jceA,year,semester)))))
|
2014-09-08 15:54:52 +00:00
|
|
|
{
|
2014-10-10 15:20:33 +00:00
|
|
|
if (!(JceConnector->recieveData(recieverPage)))
|
2014-10-06 16:15:24 +00:00
|
|
|
return jceLogin::ERROR_ON_GETTING_PAGE;
|
|
|
|
else
|
|
|
|
return jceLogin::JCE_PAGE_PASSED;
|
2014-09-08 15:54:52 +00:00
|
|
|
}
|
2014-10-06 16:15:24 +00:00
|
|
|
else
|
|
|
|
return jceLogin::ERROR_ON_SEND_REQUEST;
|
2014-09-08 15:54:52 +00:00
|
|
|
|
2014-10-06 16:15:24 +00:00
|
|
|
return true;
|
2014-09-08 15:54:52 +00:00
|
|
|
|
|
|
|
}
|
2014-10-08 04:14:50 +00:00
|
|
|
int jceLogin::getExams(int year, int semester)
|
|
|
|
{
|
|
|
|
if ((JceConnector->sendData(jceLoginHtmlScripts::makeRequest(jceLoginHtmlScripts::getExamSchedule(*jceA,year,semester)))))
|
|
|
|
{
|
2014-10-10 15:20:33 +00:00
|
|
|
if (!(JceConnector->recieveData(recieverPage)))
|
2014-10-08 04:14:50 +00:00
|
|
|
return jceLogin::ERROR_ON_GETTING_PAGE;
|
|
|
|
else
|
|
|
|
return jceLogin::JCE_PAGE_PASSED;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return jceLogin::ERROR_ON_SEND_REQUEST;
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
2014-09-17 01:08:38 +00:00
|
|
|
/**
|
|
|
|
* @brief jceLogin::getGrades according to parameters, we make an HTML request and send it over socket to server
|
|
|
|
* @param fromYear - from year
|
|
|
|
* @param toYear - to year
|
|
|
|
* @param fromSemester - from semester
|
|
|
|
* @param toSemester - to semester
|
|
|
|
* @return true if ok, jceLogin enum on error (recieverPage has html to parse if true)
|
|
|
|
*/
|
2014-09-08 15:54:52 +00:00
|
|
|
int jceLogin::getGrades(int fromYear, int toYear, int fromSemester, int toSemester)
|
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
if ((JceConnector->sendData(jceLoginHtmlScripts::makeRequest(jceLoginHtmlScripts::getGradesPath(*jceA,fromYear, toYear, fromSemester, toSemester)))))
|
2014-09-08 15:54:52 +00:00
|
|
|
{
|
2014-10-10 15:20:33 +00:00
|
|
|
if (!(JceConnector->recieveData(recieverPage)))
|
2014-10-06 16:15:24 +00:00
|
|
|
return jceLogin::ERROR_ON_GETTING_PAGE;
|
|
|
|
else
|
|
|
|
return jceLogin::JCE_PAGE_PASSED;
|
2014-09-08 15:54:52 +00:00
|
|
|
}
|
2014-10-06 16:15:24 +00:00
|
|
|
else
|
|
|
|
return jceLogin::ERROR_ON_SEND_REQUEST;
|
2014-09-08 15:54:52 +00:00
|
|
|
|
2014-10-06 16:15:24 +00:00
|
|
|
return true;
|
2014-09-08 15:54:52 +00:00
|
|
|
|
|
|
|
}
|
2014-09-17 01:08:38 +00:00
|
|
|
/**
|
|
|
|
* @brief jceLogin::checkValidation Made by Nadav Luzzato
|
|
|
|
* @return true if second validation step is right
|
|
|
|
*/
|
|
|
|
bool jceLogin::checkValidation()
|
|
|
|
{
|
|
|
|
|
2014-10-06 16:15:24 +00:00
|
|
|
//finds the hashed password
|
|
|
|
QString constUserID_TAG = "value=\"-N";
|
|
|
|
QString constHassID_TAG = "-A,-N";
|
|
|
|
QString hasspass,hassid;
|
|
|
|
std::size_t hasspass_position1,hasspass_position2;
|
|
|
|
std::size_t id_position1,id_position2;
|
2014-09-17 01:08:38 +00:00
|
|
|
|
2014-10-06 16:15:24 +00:00
|
|
|
hasspass_position1 = this->recieverPage->toStdString().find(constHassID_TAG.toStdString()); //looking for hasspass index
|
|
|
|
if (hasspass_position1 == std::string::npos) //didnt find the tag
|
|
|
|
return false;
|
|
|
|
else
|
|
|
|
hasspass_position1 += constHassID_TAG.length(); //skip the index of tag
|
|
|
|
hasspass_position2 = this->recieverPage->toStdString().find(",-A,-A", hasspass_position1);
|
|
|
|
//finds the hass pass
|
|
|
|
if (hasspass_position2 != std::string::npos) //found the hasspass! storing it
|
|
|
|
hasspass = recieverPage->mid(hasspass_position1,hasspass_position2-hasspass_position1);
|
|
|
|
else
|
|
|
|
return false;
|
|
|
|
//finds the user id
|
|
|
|
id_position1 = this->recieverPage->toStdString().find(constUserID_TAG.toStdString(), 0); //looking for hassid index
|
|
|
|
if (id_position1 == std::string::npos) //didnt find the tag
|
|
|
|
return false;
|
|
|
|
else
|
|
|
|
id_position1 += constUserID_TAG.length(); //skip the index of tag
|
|
|
|
id_position2 = this->recieverPage->toStdString().find(",-A", id_position1);
|
|
|
|
if (id_position2 != std::string::npos) //found the hassid! storing it
|
|
|
|
hassid = recieverPage->mid(id_position1,id_position2-id_position1);
|
|
|
|
else
|
|
|
|
return false;
|
2014-09-17 01:08:38 +00:00
|
|
|
|
2014-10-06 16:15:24 +00:00
|
|
|
//setting user information with given data hassid and hasspass
|
|
|
|
jceA->setHashedPassword(hasspass);
|
|
|
|
jceA->setUserID(hassid);
|
2014-09-17 01:08:38 +00:00
|
|
|
|
2014-10-06 16:15:24 +00:00
|
|
|
qDebug() << "jceLogin::checkValidation(); Found Hashed: " << hasspass << "And ID: " << hassid;
|
2014-09-08 15:54:52 +00:00
|
|
|
|
2014-10-06 16:15:24 +00:00
|
|
|
return true;
|
2014-09-17 01:08:38 +00:00
|
|
|
}
|
|
|
|
/**
|
|
|
|
* @brief jceLogin::setLoginFlag
|
|
|
|
* @param x
|
|
|
|
*/
|
2014-09-08 15:54:52 +00:00
|
|
|
void jceLogin::setLoginFlag(bool x)
|
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
this->loginFlag = x;
|
2014-09-08 15:54:52 +00:00
|
|
|
}
|
2014-09-17 01:08:38 +00:00
|
|
|
/**
|
|
|
|
* @brief jceLogin::isLoginFlag checking if there is a connection, if true - > return if we signed in. otherwise, return not (not connected dough)
|
|
|
|
* @return
|
|
|
|
*/
|
2014-09-08 15:54:52 +00:00
|
|
|
bool jceLogin::isLoginFlag() const
|
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
if (checkConnection())
|
|
|
|
return this->loginFlag;
|
|
|
|
return false;
|
2014-09-08 15:54:52 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
/**
|
2014-09-17 01:08:38 +00:00
|
|
|
* @brief jceLogin::getPage
|
|
|
|
* @return html page
|
2014-09-08 15:54:52 +00:00
|
|
|
*/
|
2014-09-17 01:08:38 +00:00
|
|
|
QString jceLogin::getPage()
|
2014-09-08 15:54:52 +00:00
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
return *recieverPage;
|
2014-09-21 10:31:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void jceLogin::reValidation()
|
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
qDebug() << Q_FUNC_INFO << "Revalidating user";
|
2014-10-04 00:54:27 +00:00
|
|
|
|
2014-10-06 16:15:24 +00:00
|
|
|
if (makeFirstVisit() == true)
|
2014-09-21 21:53:28 +00:00
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
if (checkValidation())
|
2014-09-21 21:53:28 +00:00
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
if (makeSecondVisit() == true)
|
|
|
|
qDebug() << Q_FUNC_INFO << "Validated";
|
|
|
|
else
|
|
|
|
qWarning() << Q_FUNC_INFO << "Second visit finished with an error";
|
2014-09-21 21:53:28 +00:00
|
|
|
}
|
2014-10-06 16:15:24 +00:00
|
|
|
else
|
|
|
|
qDebug() << Q_FUNC_INFO << "checking validation ended with an error";
|
2014-09-21 21:53:28 +00:00
|
|
|
}
|
2014-10-06 16:15:24 +00:00
|
|
|
else
|
2014-09-21 10:31:26 +00:00
|
|
|
{
|
2014-10-06 16:15:24 +00:00
|
|
|
qDebug() << Q_FUNC_INFO << "Couldnt Validate User";
|
2014-09-21 10:31:26 +00:00
|
|
|
}
|
2014-09-08 15:54:52 +00:00
|
|
|
}
|