summaryrefslogtreecommitdiff
path: root/src/nexusoauthlogin.h
diff options
context:
space:
mode:
authorJeremy Rimpo <jeremy.rimpo@servermonkey.com>2026-05-12 13:50:45 -0500
committerGitHub <noreply@github.com>2026-05-12 13:50:45 -0500
commit3efaf7c9463261fb2d182a7ae00d9045a2b273b8 (patch)
tree8cc2c9f14d8cffe73187cf42ce8141c87bccef32 /src/nexusoauthlogin.h
parent41ffb25c03956d1c6619c284e821611e70bcc307 (diff)
Migrating to OAuth Authentication (#2374)
Co-authored-by: aglowinthefield <146008217+aglowinthefield@users.noreply.github.com> Co-authored-by: Jonathan Feenstra <26406078+JonathanFeenstra@users.noreply.github.com>
Diffstat (limited to 'src/nexusoauthlogin.h')
-rw-r--r--src/nexusoauthlogin.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/nexusoauthlogin.h b/src/nexusoauthlogin.h
new file mode 100644
index 00000000..66b6b392
--- /dev/null
+++ b/src/nexusoauthlogin.h
@@ -0,0 +1,59 @@
+/*
+Copyright (C) 2012 Sebastian Herbord. All rights reserved.
+
+This file is part of Mod Organizer.
+
+Mod Organizer 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, either version 3 of the License, or
+(at your option) any later version.
+
+Mod Organizer 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.
+
+You should have received a copy of the GNU General Public License
+along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef NEXUSOAUTHLOGIN_H
+#define NEXUSOAUTHLOGIN_H
+
+#include "nexusoauthtokens.h"
+#include "nxmaccessmanager.h"
+#include <QAbstractOAuth>
+#include <QObject>
+#include <functional>
+#include <memory>
+
+class QOAuth2AuthorizationCodeFlow;
+class QOAuthHttpServerReplyHandler;
+
+class NexusOAuthLogin : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit NexusOAuthLogin(QObject* parent = nullptr);
+ ~NexusOAuthLogin();
+
+ void start();
+ void cancel();
+ bool isActive() const;
+
+ std::function<void(const NexusOAuthTokens&)> tokensReceived;
+ std::function<void(NXMAccessManager::OAuthState, QString)> stateChanged;
+
+private slots:
+ void authorizationEnded();
+
+private:
+ std::unique_ptr<QOAuth2AuthorizationCodeFlow> m_flow;
+ std::unique_ptr<QOAuthHttpServerReplyHandler> m_replyHandler;
+ bool m_active;
+
+ QByteArray m_codeVerifier;
+};
+
+#endif // NEXUSOAUTHLOGIN_H