diff --git a/desktop/kde/applications/kaccounts-integration/pspec.xml b/desktop/kde/applications/kaccounts-integration/pspec.xml index ca898bba27..f5c53bd362 100755 --- a/desktop/kde/applications/kaccounts-integration/pspec.xml +++ b/desktop/kde/applications/kaccounts-integration/pspec.xml @@ -29,8 +29,10 @@ kdoctools-devel kdeclarative-devel kio-devel + signon-ui kconfig-devel kwallet-devel + signon-plugin-oauth2-devel @@ -41,12 +43,14 @@ libgcc signon intltool + signon-ui qt5-base kcoreaddons kdbusaddons kdeclarative kconfigwidgets libaccounts-qt5 + signon-plugin-oauth2 qt5-declarative kio kconfig diff --git a/pisi-index.xml b/pisi-index.xml index d18848c5f8..22d1e94dd3 100644 --- a/pisi-index.xml +++ b/pisi-index.xml @@ -324896,6 +324896,65 @@ to create header files and sources from protocol files. + + + signon-ui + https://gitlab.com/accounts-sso/signon-ui + + Pisi Linux Admins + admin@pisilinux.org + + GPLv3 + library + programming.library + UI component responsible for handling the user interactions which can happen during the login process of an online account + UI component responsible for handling the user interactions which can happen during the login process of an online account + Bir çevrimiçi hesabın oturum açma işlemi sırasında meydana gelebilecek kullanıcı etkileşimlerini yönetmekten sorumlu UI bileşeni + Bir çevrimiçi hesabın oturum açma işlemi sırasında meydana gelebilecek kullanıcı etkileşimlerini yönetmekten sorumlu UI bileşeni + https://gitlab.com/accounts-sso/signon-ui/-/archive/4368bb77d9d1abc2978af514225ba4a42c29a646/signon-ui-0.17+20171022.tar.gz + + glib2-devel + signon-devel + libproxy-devel + qt5-base-devel + libnotify-devel + qt5-webkit-devel + libaccounts-qt5-devel + + + 0001-Reintroduce-the-username-field-reading-with-webkit-o.patch + 0001-Fix-WebEngine-cache-directory-path.patch + + programming/library/signon-ui/pspec.xml + + + signon-ui + + glib2 + signon + libproxy + qt5-base + libnotify + qt5-webkit + libaccounts-qt5 + + + /usr/bin + /usr/share/dbus-1 + /usr/share/doc + /usr/share/applications + + + + + 2022-11-07 + 0.17 + First release + Pisi Linux Admins + admin@pisilinux.org + + + libgdata diff --git a/pisi-index.xml.sha1sum b/pisi-index.xml.sha1sum index ba4e097ef6..a50164a98d 100644 --- a/pisi-index.xml.sha1sum +++ b/pisi-index.xml.sha1sum @@ -1 +1 @@ -f507c98a19a71f65aef6ff830d4ac902921acd6f \ No newline at end of file +02f9ac1f3d8a25c2452add717a48ba2d3ea37b70 \ No newline at end of file diff --git a/pisi-index.xml.xz b/pisi-index.xml.xz index 84dbd0be29..842d837125 100644 Binary files a/pisi-index.xml.xz and b/pisi-index.xml.xz differ diff --git a/pisi-index.xml.xz.sha1sum b/pisi-index.xml.xz.sha1sum index dbe413ef16..dac6742527 100644 --- a/pisi-index.xml.xz.sha1sum +++ b/pisi-index.xml.xz.sha1sum @@ -1 +1 @@ -f8238bfcc86a5ca5989beffa25ce2fe43f41f0df \ No newline at end of file +86f0973fc2637a6c0ef5f306dbc73f9aa506073d \ No newline at end of file diff --git a/programming/library/signon-ui/actions.py b/programming/library/signon-ui/actions.py new file mode 100644 index 0000000000..236fa6828b --- /dev/null +++ b/programming/library/signon-ui/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt5 + +def setup(): + qt5.configure() + +def build(): + qt5.make() + +def install(): + qt5.install() + + pisitools.dodoc("COPYING", "TODO", "README*") diff --git a/programming/library/signon-ui/files/0001-Fix-WebEngine-cache-directory-path.patch b/programming/library/signon-ui/files/0001-Fix-WebEngine-cache-directory-path.patch new file mode 100644 index 0000000000..35e5d80cc4 --- /dev/null +++ b/programming/library/signon-ui/files/0001-Fix-WebEngine-cache-directory-path.patch @@ -0,0 +1,26 @@ +From e155e6e70ce7a6c52837688b570e8020faac5496 Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Sat, 8 Sep 2018 18:58:42 +0200 +Subject: [PATCH] Fix WebEngine cache directory path + +Otherwise the URL is treated as a path, which results in a folder "file:" in ~. +--- + src/browser-request.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/browser-request.cpp b/src/browser-request.cpp +index 146bec8..1895d59 100644 +--- a/src/browser-request.cpp ++++ b/src/browser-request.cpp +@@ -132,7 +132,7 @@ void BrowserRequestPrivate::start() + + m_dialog->rootContext()->setContextProperty("request", this); + m_dialog->rootContext()->setContextProperty("rootDir", +- QUrl::fromLocalFile(rootDir.absolutePath())); ++ rootDir.absolutePath()); + m_dialog->setSource(webview); + } + +-- +2.18.0 + diff --git a/programming/library/signon-ui/files/0001-Reintroduce-the-username-field-reading-with-webkit-o.patch b/programming/library/signon-ui/files/0001-Reintroduce-the-username-field-reading-with-webkit-o.patch new file mode 100644 index 0000000000..84d8b28105 --- /dev/null +++ b/programming/library/signon-ui/files/0001-Reintroduce-the-username-field-reading-with-webkit-o.patch @@ -0,0 +1,128 @@ +From 90890e7d27c544e3557bed2f6624614141db0fc4 Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Sat, 29 Sep 2018 15:34:43 +0200 +Subject: [PATCH] Reintroduce the username field reading with webkit-options.d + +Use WebChannel to spy on the input fields. +Use the old UserAgent to make sure the selectors match. +--- + src/browser-request.cpp | 11 +++++++++++ + src/qml/WebView.qml | 36 ++++++++++++++++++++++++++++++++++++ + 2 files changed, 47 insertions(+) + +diff --git a/src/browser-request.cpp b/src/browser-request.cpp +index 1895d59..e58f302 100644 +--- a/src/browser-request.cpp ++++ b/src/browser-request.cpp +@@ -31,6 +31,7 @@ + #include + #include + #include ++#include + + using namespace SignOnUi; + using namespace SignOnUi::QQuick; +@@ -43,8 +44,10 @@ class BrowserRequestPrivate: public QObject + Q_DECLARE_PUBLIC(BrowserRequest) + Q_PROPERTY(QUrl pageComponentUrl READ pageComponentUrl CONSTANT) + Q_PROPERTY(QUrl currentUrl READ currentUrl WRITE setCurrentUrl) ++ Q_PROPERTY(QString username MEMBER m_username) + Q_PROPERTY(QUrl startUrl READ startUrl CONSTANT) + Q_PROPERTY(QUrl finalUrl READ finalUrl CONSTANT) ++ Q_PROPERTY(QString usernameSelector READ usernameSelector CONSTANT) + + public: + BrowserRequestPrivate(BrowserRequest *request); +@@ -58,6 +61,7 @@ public: + QUrl startUrl() const { return m_startUrl; } + QUrl finalUrl() const { return m_finalUrl; } + QUrl responseUrl() const { return m_responseUrl; } ++ QString usernameSelector() const { return m_settings->value("UsernameField").toString(); } + + public Q_SLOTS: + void cancel(); +@@ -77,6 +81,8 @@ private: + QUrl m_startUrl; + QUrl m_finalUrl; + QUrl m_responseUrl; ++ QString m_username; ++ QSettings *m_settings; + QTimer m_failTimer; + mutable BrowserRequest *q_ptr; + }; +@@ -116,6 +122,9 @@ void BrowserRequestPrivate::start() + + m_finalUrl = params.value(SSOUI_KEY_FINALURL).toString(); + m_startUrl = params.value(SSOUI_KEY_OPENURL).toString(); ++ ++ m_settings = new QSettings("signon-ui/webkit-options.d/" + m_startUrl.host(), QString(), this); ++ + buildDialog(params); + + QObject::connect(m_dialog, SIGNAL(finished(int)), +@@ -231,6 +240,8 @@ void BrowserRequestPrivate::onFinished() + QVariantMap reply; + QUrl url = m_responseUrl.isEmpty() ? m_currentUrl : m_responseUrl; + reply[SSOUI_KEY_URLRESPONSE] = url.toString(); ++ if (!m_username.isEmpty()) ++ reply[SSOUI_KEY_USERNAME] = m_username; + + m_dialog->close(); + +diff --git a/src/qml/WebView.qml b/src/qml/WebView.qml +index 33462b8..3af0239 100644 +--- a/src/qml/WebView.qml ++++ b/src/qml/WebView.qml +@@ -1,4 +1,5 @@ + import QtQuick 2.0 ++import QtWebChannel 1.0 + import QtWebEngine 1.1 + + WebEngineView { +@@ -25,8 +26,43 @@ WebEngineView { + profile: WebEngineProfile { + cachePath: rootDir + persistentStoragePath: rootDir ++ // For compatibility with the webkit-options.d values ++ httpUserAgent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) Safari/537.21" + } + ++ QtObject { ++ id: commProxy ++ WebChannel.id: "comm" ++ property string username: "" ++ property string selector: signonRequest.usernameSelector ++ onUsernameChanged: signonRequest.username = username ++ } ++ ++ WebChannel { ++ id: chan ++ registeredObjects: [commProxy] ++ } ++ webChannel: chan ++ ++ WebEngineScript { ++ id: qwebchannel ++ injectionPoint: WebEngineScript.DocumentCreation ++ sourceUrl: "qrc:/qtwebchannel/qwebchannel.js" ++ worldId: WebEngineScript.MainWorld ++ } ++ ++ WebEngineScript { ++ id: commScript ++ injectionPoint: WebEngineScript.DocumentReady ++ sourceCode: "new QWebChannel(window.qt.webChannelTransport, function(channel) {" + ++ " var elem = document.querySelector(channel.objects.comm.selector);" + ++ " elem.addEventListener('keyup', function() { channel.objects.comm.username = elem.value; });" + ++ "});" ++ worldId: WebEngineScript.MainWorld ++ } ++ ++ userScripts: [qwebchannel, commScript] ++ + ProgressBar { + anchors.top: parent.top + anchors.left: parent.left +-- +2.18.0 + diff --git a/programming/library/signon-ui/files/fake-user-agent.patch b/programming/library/signon-ui/files/fake-user-agent.patch new file mode 100644 index 0000000000..b8021b489c --- /dev/null +++ b/programming/library/signon-ui/files/fake-user-agent.patch @@ -0,0 +1,12 @@ +diff --git a/src/qml/WebView.qml b/src/qml/WebView.qml +index 33462b8..b720111 100644 +--- a/src/qml/WebView.qml ++++ b/src/qml/WebView.qml +@@ -25,6 +25,7 @@ WebEngineView { + profile: WebEngineProfile { + cachePath: rootDir + persistentStoragePath: rootDir ++ httpUserAgent: "Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/77.0" + } + + ProgressBar { diff --git a/programming/library/signon-ui/pspec.xml b/programming/library/signon-ui/pspec.xml new file mode 100644 index 0000000000..76c29a6c74 --- /dev/null +++ b/programming/library/signon-ui/pspec.xml @@ -0,0 +1,59 @@ + + + + + signon-ui + https://gitlab.com/accounts-sso/signon-ui + + Pisi Linux Admins + admin@pisilinux.org + + GPLv3 + library + UI component responsible for handling the user interactions which can happen during the login process of an online account + Bir çevrimiçi hesabın oturum açma işlemi sırasında meydana gelebilecek kullanıcı etkileşimlerini yönetmekten sorumlu UI bileşeni + https://gitlab.com/accounts-sso/signon-ui/-/archive/4368bb77d9d1abc2978af514225ba4a42c29a646/signon-ui-0.17+20171022.tar.gz + + glib2-devel + signon-devel + libproxy-devel + qt5-base-devel + libnotify-devel + qt5-webkit-devel + libaccounts-qt5-devel + + + 0001-Reintroduce-the-username-field-reading-with-webkit-o.patch --> + 0001-Fix-WebEngine-cache-directory-path.patch --> + + + + + signon-ui + + glib2 + signon + libproxy + qt5-base + libnotify + qt5-webkit + libaccounts-qt5 + + + /usr/bin + /usr/share/dbus-1 + /usr/share/doc + /usr/share/applications + + + + + + 2022-11-07 + 0.17 + First release + Pisi Linux Admins + admin@pisilinux.org + + + diff --git a/programming/library/signon-ui/translations.xml b/programming/library/signon-ui/translations.xml new file mode 100644 index 0000000000..00c8b6b809 --- /dev/null +++ b/programming/library/signon-ui/translations.xml @@ -0,0 +1,8 @@ + + + + signon-ui + UI component responsible for handling the user interactions which can happen during the login process of an online account + Bir çevrimiçi hesabın oturum açma işlemi sırasında meydana gelebilecek kullanıcı etkileşimlerini yönetmekten sorumlu UI bileşeni + +