diff options
| author | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-05-01 01:00:10 -0500 |
|---|---|---|
| committer | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-05-01 01:00:10 -0500 |
| commit | 4bb4fe5ca0e7e75533d908a91f0d7aa086db9e61 (patch) | |
| tree | 968c71f3b40987379b3c92371b3abc9d3b5abd62 /docker | |
| parent | aba2dc0df5c50c244904f2b1bb458334a851d426 (diff) | |
Port upstream PR #2374: Nexus OAuth authentication
Replaces legacy API-key flow with OAuth 2.0 PKCE (public client,
client_id "modorganizer2", overridable via MO2_NEXUS_CLIENT_ID env).
Backwards-compatible: stored API key is used as fallback if no OAuth
token is present.
Fixes the symptom users hit after Nexus deprecated personal API keys
for download endpoints — Settings showed "Connected." (key still
validates) but downloads/CDN list returned empty.
Cherry-picked from upstream/dev/oauth-graphql against merge-base
925bade3, with these adjustments for our Linux-only fork:
- Dockerfile: aqtinstall +qtnetworkauth module
- CMakeLists.txt: find_package + link Qt6::NetworkAuth
- Dropped Windows-only hunks: dlls.manifest.qt6{,debug}, pch.h
QWebSocket include
- Skipped src/CMakeLists.txt and .gitignore upstream hunks (their
layout differs from ours)
- Skipped organizer_en.ts (regenerable via lupdate)
- Skipped tutorials/tutorial_firststeps_settings.js (defer to the
tutorials-disable PR port)
- Kept our defensive default member initialisers in
nxmaccessmanager.h (m_Reply{nullptr}, m_Result{None}, etc.) and
`override` on createRequest()
- Resolved trivial conflicts in modlistviewactions.cpp by taking
upstream's NexusOAuthTokens API while retaining our [=, this]
capture style
- createinstancedialog.h, instancemanager.cpp: only meaningful PR
delta is a comment text change / unrelated drift; ours retained
OAuth callback uses local loopback http://127.0.0.1:28635/callback
served by QOAuthHttpServerReplyHandler (no firewall punch needed).
Token storage piggybacks the existing Linux QSettings INI credential
backend (~/.config/ModOrganizer/credentials.ini).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'docker')
| -rw-r--r-- | docker/Dockerfile | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile index a96fb71..827d45b 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -43,7 +43,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ # ── Qt 6.10 via aqtinstall ── RUN pip3 install --break-system-packages aqtinstall && \ aqt install-qt linux desktop 6.10.2 linux_gcc_64 \ - -m qtwebsockets qtwaylandcompositor \ + -m qtwebsockets qtwaylandcompositor qtnetworkauth \ --outputdir /opt/qt6 && \ ls /opt/qt6/6.10.2/gcc_64/bin/qmake && \ (pip3 uninstall -y aqtinstall --break-system-packages 2>/dev/null || true) |
