login fix v2
This commit is contained in:
@@ -102,6 +102,10 @@ VITE_APPWRITE_ENDPOINT=https://appwrite.webklar.com/v1
|
|||||||
VITE_APPWRITE_PROJECT_ID=696b82bb0036d2e547ad
|
VITE_APPWRITE_PROJECT_ID=696b82bb0036d2e547ad
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### CORS / Production (z. B. https://www.eship.pro)
|
||||||
|
|
||||||
|
Wenn die App unter einer anderen Domain läuft als im Appwrite-Projekt eingetragen, blockiert der Browser die Requests (CORS). **Lösung:** Im [Appwrite Console](https://appwrite.io/docs/console) unter dem Projekt → **Auth** → **Settings** → **Platforms** die genaue App-URL als Plattform hinzufügen (z. B. `https://www.eship.pro`). Ohne diesen Eintrag bleibt `Access-Control-Allow-Origin` auf einer anderen Domain (z. B. `https://webklar.com`) und Anfragen von eship.pro schlagen fehl.
|
||||||
|
|
||||||
### Extension Backend URL (Extension/background.js)
|
### Extension Backend URL (Extension/background.js)
|
||||||
```javascript
|
```javascript
|
||||||
const BACKEND_URL = "http://localhost:3000"; // Anpassen falls nötig
|
const BACKEND_URL = "http://localhost:3000"; // Anpassen falls nötig
|
||||||
|
|||||||
@@ -28,6 +28,17 @@ import { fetchManagedAccounts } from "./services/accountsService";
|
|||||||
import { useScan } from "./context/ScanContext";
|
import { useScan } from "./context/ScanContext";
|
||||||
import ScanningLoader from "./components/ui/ScanningLoader";
|
import ScanningLoader from "./components/ui/ScanningLoader";
|
||||||
|
|
||||||
|
/** Prüft, ob der Fehler wie ein CORS- oder Netzwerkfehler aussieht (Request wird vom Browser blockiert). */
|
||||||
|
function isCorsOrNetworkError(e) {
|
||||||
|
const msg = (e?.message || "").toLowerCase();
|
||||||
|
return (
|
||||||
|
msg.includes("failed to fetch") ||
|
||||||
|
msg.includes("network error") ||
|
||||||
|
msg.includes("networkrequestfailed") ||
|
||||||
|
(e?.name && e.name.toLowerCase().includes("network"))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
export default function App() {
|
export default function App() {
|
||||||
const { route, navigate } = useHashRoute();
|
const { route, navigate } = useHashRoute();
|
||||||
const { scanning, scanProgress } = useScan();
|
const { scanning, scanProgress } = useScan();
|
||||||
@@ -125,7 +136,10 @@ export default function App() {
|
|||||||
|
|
||||||
await handoffJwtToExtension();
|
await handoffJwtToExtension();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
setStatus({ loading: false, authed: false, error: "" });
|
const errorMsg = isCorsOrNetworkError(e)
|
||||||
|
? "Verbindung zum Auth-Server fehlgeschlagen. Bitte in Appwrite die aktuelle App-URL (z. B. https://www.eship.pro) unter Platforms eintragen (CORS)."
|
||||||
|
: "";
|
||||||
|
setStatus({ loading: false, authed: false, error: errorMsg });
|
||||||
setAuthUser(null);
|
setAuthUser(null);
|
||||||
setHasUserDoc(false);
|
setHasUserDoc(false);
|
||||||
setUserExtensionLoad(null);
|
setUserExtensionLoad(null);
|
||||||
@@ -177,7 +191,10 @@ export default function App() {
|
|||||||
|
|
||||||
await handoffJwtToExtension();
|
await handoffJwtToExtension();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
setStatus({ loading: false, authed: false, error: "Login fehlgeschlagen" });
|
const errorMsg = isCorsOrNetworkError(e)
|
||||||
|
? "Verbindung blockiert (CORS). In Appwrite unter Auth → Platforms die App-URL (z. B. https://www.eship.pro) hinzufügen."
|
||||||
|
: "Login fehlgeschlagen";
|
||||||
|
setStatus({ loading: false, authed: false, error: errorMsg });
|
||||||
setAuthUser(null);
|
setAuthUser(null);
|
||||||
setHasUserDoc(false);
|
setHasUserDoc(false);
|
||||||
setUserExtensionLoad(null);
|
setUserExtensionLoad(null);
|
||||||
|
|||||||
Reference in New Issue
Block a user