Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/creds/shibboleth/shibbolethaccessmanager.cpp')
-rw-r--r--src/creds/shibboleth/shibbolethaccessmanager.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/creds/shibboleth/shibbolethaccessmanager.cpp b/src/creds/shibboleth/shibbolethaccessmanager.cpp
new file mode 100644
index 000000000..5e9d1cf16
--- /dev/null
+++ b/src/creds/shibboleth/shibbolethaccessmanager.cpp
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) by Krzesimir Nowak <krzesimir@endocode.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+
+#include <QDebug>
+#include <QNetworkRequest>
+
+#include "creds/shibboleth/shibbolethaccessmanager.h"
+
+namespace Mirall
+{
+
+ShibbolethAccessManager::ShibbolethAccessManager(const QNetworkCookie& cookie, QObject* parent)
+ : MirallAccessManager (parent),
+ _cookie(cookie)
+{}
+
+QNetworkReply* ShibbolethAccessManager::createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest& request, QIODevice* outgoingData)
+{
+ if (!_cookie.name().isEmpty()) {
+ QNetworkCookieJar* jar(cookieJar());
+ QUrl url(request.url());
+ QList<QNetworkCookie> cookies;
+
+ Q_FOREACH(const QNetworkCookie& cookie, jar->cookiesForUrl(url)) {
+ if (!cookie.name().startsWith("_shibsession_")) {
+ cookies << cookie;
+ }
+ }
+
+ cookies << _cookie;
+ jar->setCookiesFromUrl(cookies, url);
+ }
+
+ qDebug() << "Creating a request to " << request.url().toString() << " with shibboleth cookie:" << _cookie.name();
+
+ return MirallAccessManager::createRequest (op, request, outgoingData);
+}
+
+void ShibbolethAccessManager::setCookie(const QNetworkCookie& cookie)
+{
+ qDebug() << "Got new shibboleth cookie:" << cookie.name();
+ _cookie = cookie;
+}
+
+} // ns Mirall