diff options
author | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2020-03-20 08:32:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-20 08:32:10 +0100 |
commit | c810c10da56fad0f5c07b2096cae73e8471d9f0e (patch) | |
tree | f473b9e7d157489200485f1f75a41de71778c3f1 /lib/ssosession.h | |
parent | 792dc5dcc8e548030f9246f20a39ef6febee3910 (diff) | |
parent | ab3d0263b770e30de673c63740a5c26bcbf33e58 (diff) | |
download | libquotient-c810c10da56fad0f5c07b2096cae73e8471d9f0e.tar.gz libquotient-c810c10da56fad0f5c07b2096cae73e8471d9f0e.zip |
Merge pull request #389 from quotient-im/kitsune-login-flows
Support single sign-on
Diffstat (limited to 'lib/ssosession.h')
-rw-r--r-- | lib/ssosession.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/ssosession.h b/lib/ssosession.h new file mode 100644 index 00000000..5845cd4d --- /dev/null +++ b/lib/ssosession.h @@ -0,0 +1,44 @@ +#pragma once + +#include <QtCore/QUrl> +#include <QtCore/QObject> + +#include <memory> + +class QTcpServer; +class QTcpSocket; + +namespace Quotient { +class Connection; + +/*! Single sign-on (SSO) session encapsulation + * + * This class is responsible for setting up of a new SSO session, providing + * a URL to be opened (usually, in a web browser) and handling the callback + * response after completing the single sign-on, all the way to actually + * logging the user in. It does NOT open and render the SSO URL, it only does + * the necessary backstage work. + * + * Clients only need to open the URL; the rest is done for them. + * Client code can look something like: + * \code + * QDesktopServices::openUrl( + * connection->prepareForSso(initialDeviceName)->ssoUrl()); + * \endcode + */ +class SsoSession : public QObject { + Q_OBJECT + Q_PROPERTY(QUrl ssoUrl READ ssoUrl CONSTANT) + Q_PROPERTY(QUrl callbackUrl READ callbackUrl CONSTANT) +public: + SsoSession(Connection* connection, const QString& initialDeviceName, + const QString& deviceId = {}); + ~SsoSession() override; + QUrl ssoUrl() const; + QUrl callbackUrl() const; + +private: + class Private; + std::unique_ptr<Private> d; +}; +} // namespace Quotient |