Changes to logout prosess and login state storing, logout bug fix
[situare] / src / facebookservice / facebookauthentication.cpp
index fbb64e1..aaeff49 100644 (file)
@@ -48,6 +48,7 @@ const QString FB_LOGIN_URL = "https://www.facebook.com/login.php";
 
 FacebookAuthentication::FacebookAuthentication(MainWindow *mainWindow, QObject *parent)
     : QObject(parent),
+      m_loggedIn(false),
       m_browser(0),
       m_mainWindow(mainWindow)
 {
@@ -66,7 +67,6 @@ void FacebookAuthentication::clearAccountInformation(bool keepUsername)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    ///< @todo (HIGH) clear session from SituareService
     QSettings settings(SETTINGS_ORGANIZATION_NAME, SETTINGS_APPLICATION_NAME);
 
     if(!keepUsername) {
@@ -88,6 +88,13 @@ void FacebookAuthentication::destroyLogin()
     m_browser->deleteLater();
 }
 
+bool FacebookAuthentication::isLoggedIn()
+{
+    qWarning() << __PRETTY_FUNCTION__;
+
+    return m_loggedIn;
+}
+
 void FacebookAuthentication::login()
 {
     qWarning() << __PRETTY_FUNCTION__;
@@ -104,6 +111,10 @@ void FacebookAuthentication::login()
             connect(m_browser, SIGNAL(destroyed(QObject*)),
                     this, SLOT(browserDestroyed()));
 
+            connect(m_browser->page()->networkAccessManager(),
+                    SIGNAL(sslErrors(QNetworkReply*, QList<QSslError>)),
+                    this, SLOT(sslErrors(QNetworkReply*, QList<QSslError>)));
+
             connect(m_browser->page()->networkAccessManager(), SIGNAL(finished(QNetworkReply*)),
                     this, SLOT(networkReplyHandler(QNetworkReply*)));
         }
@@ -126,6 +137,15 @@ void FacebookAuthentication::login()
     }
 }
 
+void FacebookAuthentication::logOut()
+{
+    qWarning() << __PRETTY_FUNCTION__;
+
+    clearAccountInformation();
+    m_loggedIn = false;
+    emit loggedOut();
+}
+
 void FacebookAuthentication::networkReplyHandler(QNetworkReply *reply)
 {
     qWarning() <<__PRETTY_FUNCTION__;
@@ -157,6 +177,14 @@ QString FacebookAuthentication::parseSession(const QUrl &url)
         return QString();
 }
 
+void FacebookAuthentication::sslErrors(QNetworkReply *reply, const QList<QSslError> &errors)
+{
+    qWarning() << __PRETTY_FUNCTION__;
+
+    Q_UNUSED(errors);
+    reply->ignoreSslErrors();
+}
+
 void FacebookAuthentication::urlChanged(const QUrl &url)
 {
     qWarning() << __PRETTY_FUNCTION__ << url.toString();
@@ -181,6 +209,7 @@ void FacebookAuthentication::urlChanged(const QUrl &url)
         qWarning() << __PRETTY_FUNCTION__ << "login finished, parsed session:" << session;
         if (!session.isEmpty()) {
             destroyLogin();
+            m_loggedIn = true;
             emit loggedIn(session);
         }
     }