Login beim Start, API-Key wird gespeichert; README: PAC-Proxy als Bremse
Erik (07.09.2026): "zuerst soll ein Loginfenster kommen und nach dem Login soll der Apikey gespeichert werden." - plugin.py: ohne gespeicherten Key zeigt initGui 1,5 s nach dem QGIS-Start den Anmeldedialog (singleShot, damit der Dialog den Start nicht blockiert); mit Key wie bisher direkt die Verfahrensliste. - Nach erfolgreichem Login werden api_key (userauth) UND mail in QSettings gemerkt, die Meldung nennt den angemeldeten Nutzer und die Dauerhaftigkeit. Das Passwort wird nie gespeichert. - README: Login-Verhalten; Abschnitt zum PAC-Proxy, der jede QGIS-Anfrage ~10 s kostet (gemessen 07.09.2026: Server antwortet in 0,35 s, alle Antworten 200/204). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -139,6 +139,19 @@ uri.setAuthConfigId("<authcfg-id>") # APIHeader (X-API-Key) oder Basic
|
||||
layer = QgsVectorLayer(uri.uri(False), "Plan 41 · 27998 · Flächen", "OAPIF")
|
||||
```
|
||||
|
||||
### Wenn das Laden quälend langsam ist
|
||||
|
||||
Nicht die API: ein **System-Proxy (PAC-Datei)**, den macOS nicht ausführen kann, lässt jede
|
||||
Qt-Anfrage in einen Timeout laufen (~10 s statt 0,3 s) — QGIS wirkt dann hängend, obwohl der
|
||||
Server jede Anfrage mit 200 beantwortet. Prüfen und abschalten:
|
||||
|
||||
```bash
|
||||
networksetup -getautoproxyurl Wi-Fi # Enabled: Yes + unerreichbare .pac-Datei?
|
||||
networksetup -setautoproxystate Wi-Fi off # nur wenn im Netz kein Proxy nötig ist
|
||||
```
|
||||
|
||||
In der QGIS-Meldungsleiste steht dann `Execution of PAC script … failed (…-1002)`.
|
||||
|
||||
### Regeln beim Schreiben
|
||||
|
||||
- **Geometriefamilie:** in `…-punkt` nur Punkte, in `…-linie` nur Linien, in `…-flaeche` nur Flächen (sonst HTTP 400).
|
||||
@@ -183,6 +196,10 @@ Part-5-Schema für Felder/Geometrietyp, `OPTIONS …/items` mit `Allow`, PATCH a
|
||||
Das Plugin macht den kompletten Arbeitsablauf in der QGIS-Oberfläche
|
||||
erlebbar:
|
||||
|
||||
- **Login beim Start**: ohne gespeicherten API-Key zeigt das Plugin nach dem QGIS-Start
|
||||
gleich den Anmeldedialog (E-Mail/Passwort). Der Login liefert das `userauth`-Token; das
|
||||
Plugin speichert **nur dieses Token** (QSettings `vln_karten/api_key`), nie das Passwort,
|
||||
und nutzt es in jeder weiteren Sitzung. „Abmelden“ löscht es.
|
||||
- **Einmaliger Login** (E-Mail/Passwort) — der API-Key wird in den
|
||||
QGIS-Einstellungen gespeichert und über QGIS-Neustarts hinweg
|
||||
wiederverwendet; bei 401/403 öffnet sich der Anmeldedialog erneut.
|
||||
|
||||
+12
-5
@@ -115,8 +115,9 @@ class VlnKartenPlugin:
|
||||
|
||||
self._set_logged_out_ui()
|
||||
|
||||
# Gespeicherten API-Key aus früherer Sitzung wiederverwenden;
|
||||
# die Verfahrensliste erst nach dem QGIS-Start abrufen.
|
||||
# Gespeicherten API-Key aus früherer Sitzung wiederverwenden; sonst gleich beim Start
|
||||
# anmelden (Erik, 07.09.2026: „zuerst ein Loginfenster, danach den API-Key speichern").
|
||||
# Beides erst NACH dem QGIS-Start (singleShot), sonst blockiert der Dialog das Laden.
|
||||
settings = QSettings()
|
||||
settings.beginGroup(SETTINGS_GROUP)
|
||||
api_key = settings.value("api_key", "")
|
||||
@@ -125,6 +126,8 @@ class VlnKartenPlugin:
|
||||
if api_key:
|
||||
self.client = KartenApiClient(api_key=api_key, mail=mail)
|
||||
QTimer.singleShot(0, self.populate_verfahren)
|
||||
else:
|
||||
QTimer.singleShot(1500, self.run_login)
|
||||
|
||||
def unload(self):
|
||||
for signal in (self.iface.projectRead, self.iface.newProjectCreated):
|
||||
@@ -165,17 +168,21 @@ class VlnKartenPlugin:
|
||||
return
|
||||
|
||||
self.client = client
|
||||
# Nach dem Login wird der API-Key (userauth) gespeichert und in jeder weiteren Sitzung
|
||||
# wiederverwendet — das Passwort selbst speichert das Plugin nie. Ablage: QSettings
|
||||
# („vln_karten/api_key"), zurücksetzen über „Abmelden".
|
||||
settings = QSettings()
|
||||
settings.beginGroup(SETTINGS_GROUP)
|
||||
settings.setValue("api_key", client.api_key)
|
||||
settings.setValue("mail", client.mail or dialog.mail())
|
||||
settings.endGroup()
|
||||
|
||||
self.iface.messageBar().pushMessage(
|
||||
"VLN Karten",
|
||||
"Anmeldung erfolgreich — die Zugangsdaten werden für künftige "
|
||||
"QGIS-Sitzungen gemerkt.",
|
||||
"Angemeldet als %s — der API-Key ist gespeichert und gilt auch nach einem "
|
||||
"QGIS-Neustart." % (client.mail or dialog.mail()),
|
||||
level=Qgis.Success,
|
||||
duration=5,
|
||||
duration=6,
|
||||
)
|
||||
self.populate_verfahren()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user