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")
|
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
|
### Regeln beim Schreiben
|
||||||
|
|
||||||
- **Geometriefamilie:** in `…-punkt` nur Punkte, in `…-linie` nur Linien, in `…-flaeche` nur Flächen (sonst HTTP 400).
|
- **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
|
Das Plugin macht den kompletten Arbeitsablauf in der QGIS-Oberfläche
|
||||||
erlebbar:
|
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
|
- **Einmaliger Login** (E-Mail/Passwort) — der API-Key wird in den
|
||||||
QGIS-Einstellungen gespeichert und über QGIS-Neustarts hinweg
|
QGIS-Einstellungen gespeichert und über QGIS-Neustarts hinweg
|
||||||
wiederverwendet; bei 401/403 öffnet sich der Anmeldedialog erneut.
|
wiederverwendet; bei 401/403 öffnet sich der Anmeldedialog erneut.
|
||||||
|
|||||||
+12
-5
@@ -115,8 +115,9 @@ class VlnKartenPlugin:
|
|||||||
|
|
||||||
self._set_logged_out_ui()
|
self._set_logged_out_ui()
|
||||||
|
|
||||||
# Gespeicherten API-Key aus früherer Sitzung wiederverwenden;
|
# Gespeicherten API-Key aus früherer Sitzung wiederverwenden; sonst gleich beim Start
|
||||||
# die Verfahrensliste erst nach dem QGIS-Start abrufen.
|
# 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 = QSettings()
|
||||||
settings.beginGroup(SETTINGS_GROUP)
|
settings.beginGroup(SETTINGS_GROUP)
|
||||||
api_key = settings.value("api_key", "")
|
api_key = settings.value("api_key", "")
|
||||||
@@ -125,6 +126,8 @@ class VlnKartenPlugin:
|
|||||||
if api_key:
|
if api_key:
|
||||||
self.client = KartenApiClient(api_key=api_key, mail=mail)
|
self.client = KartenApiClient(api_key=api_key, mail=mail)
|
||||||
QTimer.singleShot(0, self.populate_verfahren)
|
QTimer.singleShot(0, self.populate_verfahren)
|
||||||
|
else:
|
||||||
|
QTimer.singleShot(1500, self.run_login)
|
||||||
|
|
||||||
def unload(self):
|
def unload(self):
|
||||||
for signal in (self.iface.projectRead, self.iface.newProjectCreated):
|
for signal in (self.iface.projectRead, self.iface.newProjectCreated):
|
||||||
@@ -165,17 +168,21 @@ class VlnKartenPlugin:
|
|||||||
return
|
return
|
||||||
|
|
||||||
self.client = client
|
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 = QSettings()
|
||||||
settings.beginGroup(SETTINGS_GROUP)
|
settings.beginGroup(SETTINGS_GROUP)
|
||||||
settings.setValue("api_key", client.api_key)
|
settings.setValue("api_key", client.api_key)
|
||||||
|
settings.setValue("mail", client.mail or dialog.mail())
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
|
|
||||||
self.iface.messageBar().pushMessage(
|
self.iface.messageBar().pushMessage(
|
||||||
"VLN Karten",
|
"VLN Karten",
|
||||||
"Anmeldung erfolgreich — die Zugangsdaten werden für künftige "
|
"Angemeldet als %s — der API-Key ist gespeichert und gilt auch nach einem "
|
||||||
"QGIS-Sitzungen gemerkt.",
|
"QGIS-Neustart." % (client.mail or dialog.mail()),
|
||||||
level=Qgis.Success,
|
level=Qgis.Success,
|
||||||
duration=5,
|
duration=6,
|
||||||
)
|
)
|
||||||
self.populate_verfahren()
|
self.populate_verfahren()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user