Files
Emailsorter/scripts/setup-appwrite-cors-auto.ps1
ANDJ a28ca580d2 Appwrite Fix 1.
Hopefully i can create accounts
2026-01-29 16:56:27 +01:00

127 lines
5.8 KiB
PowerShell

# ═══════════════════════════════════════════════════════════════════════════
# EmailSorter - Appwrite CORS Platform Setup (Vollautomatisch via API)
# ═══════════════════════════════════════════════════════════════════════════
# Dieses Script versucht, die Platform automatisch über die Appwrite API
# hinzuzufügen. Falls der API Key nicht die richtigen Scopes hat, wird
# eine Anleitung zur manuellen Einrichtung angezeigt.
# ═══════════════════════════════════════════════════════════════════════════
param(
[string]$AppwriteUrl = "https://appwrite.webklar.com",
[string]$ProjectId = "",
[string]$ApiKey = "",
[string]$PlatformHostname = "emailsorter.webklar.com",
[string]$PlatformOrigin = "https://emailsorter.webklar.com"
)
# Lade .env Datei falls vorhanden
$envFile = "..\server\.env"
if (Test-Path $envFile) {
Get-Content $envFile | ForEach-Object {
if ($_ -match '^\s*([^#][^=]*)=(.*)$') {
$key = $matches[1].Trim()
$value = $matches[2].Trim()
[Environment]::SetEnvironmentVariable($key, $value, "Process")
}
}
}
# Verwende Werte aus .env falls nicht als Parameter übergeben
if ([string]::IsNullOrEmpty($ProjectId)) {
$ProjectId = $env:APPWRITE_PROJECT_ID
}
if ([string]::IsNullOrEmpty($ApiKey)) {
$ApiKey = $env:APPWRITE_API_KEY
}
if ([string]::IsNullOrEmpty($AppwriteUrl) -or $AppwriteUrl -eq "https://appwrite.webklar.com") {
$endpoint = $env:APPWRITE_ENDPOINT
if ($endpoint) {
$AppwriteUrl = $endpoint -replace '/v1$', ''
}
}
if ([string]::IsNullOrEmpty($ProjectId) -or [string]::IsNullOrEmpty($ApiKey)) {
Write-Host "❌ Fehlende Konfiguration!" -ForegroundColor Red
Write-Host " Bitte setze APPWRITE_PROJECT_ID und APPWRITE_API_KEY in server/.env" -ForegroundColor Yellow
Write-Host " Oder gib sie als Parameter an: -ProjectId <id> -ApiKey <key>" -ForegroundColor Yellow
exit 1
}
Write-Host "`n🔧 Appwrite CORS Platform Setup (API)" -ForegroundColor Cyan
Write-Host "═══════════════════════════════════════════════════════════════" -ForegroundColor Cyan
Write-Host ""
Write-Host "Appwrite URL: $AppwriteUrl" -ForegroundColor Gray
Write-Host "Project ID: $ProjectId" -ForegroundColor Gray
Write-Host "Platform Host: $PlatformHostname" -ForegroundColor Gray
Write-Host "Platform Origin: $PlatformOrigin" -ForegroundColor Gray
Write-Host ""
# Versuche Platform über API hinzuzufügen
Write-Host "📡 Versuche Platform über API hinzuzufügen..." -ForegroundColor Yellow
$headers = @{
"X-Appwrite-Project" = $ProjectId
"X-Appwrite-Key" = $ApiKey
"Content-Type" = "application/json"
}
$body = @{
type = "web"
name = "Production"
hostname = $PlatformHostname
} | ConvertTo-Json
try {
$response = Invoke-RestMethod -Uri "$AppwriteUrl/v1/projects/$ProjectId/platforms" `
-Method POST `
-Headers $headers `
-Body $body `
-ErrorAction Stop
Write-Host ""
Write-Host "✅ Platform erfolgreich hinzugefügt!" -ForegroundColor Green
Write-Host " Name: $($response.name)" -ForegroundColor Gray
Write-Host " Hostname: $($response.hostname)" -ForegroundColor Gray
Write-Host ""
Write-Host "📝 Warte 1-2 Minuten, damit die CORS-Änderungen wirksam werden." -ForegroundColor Yellow
Write-Host " Danach sollten die CORS-Fehler verschwinden." -ForegroundColor Yellow
Write-Host ""
} catch {
$statusCode = $_.Exception.Response.StatusCode.value__
$errorMessage = $_.Exception.Message
Write-Host ""
Write-Host "❌ API-Aufruf fehlgeschlagen: HTTP $statusCode" -ForegroundColor Red
if ($statusCode -eq 401) {
Write-Host ""
Write-Host "⚠️ Der API Key hat nicht die erforderlichen Berechtigungen!" -ForegroundColor Yellow
Write-Host ""
Write-Host "💡 Lösung:" -ForegroundColor Cyan
Write-Host " 1. Gehe zu $AppwriteUrl" -ForegroundColor White
Write-Host " 2. Öffne dein Projekt" -ForegroundColor White
Write-Host " 3. Gehe zu Settings → API Credentials" -ForegroundColor White
Write-Host " 4. Erstelle einen neuen API Key mit folgenden Scopes:" -ForegroundColor White
Write-Host " - platforms.read" -ForegroundColor Gray
Write-Host " - platforms.write" -ForegroundColor Gray
Write-Host " 5. Aktualisiere APPWRITE_API_KEY in server/.env" -ForegroundColor White
Write-Host " 6. Führe dieses Script erneut aus" -ForegroundColor White
Write-Host ""
}
Write-Host "💡 Alternative: Verwende die manuelle Methode:" -ForegroundColor Cyan
Write-Host " 1. Gehe zu $AppwriteUrl" -ForegroundColor White
Write-Host " 2. Öffne dein Projekt" -ForegroundColor White
Write-Host " 3. Gehe zu Settings → Platforms" -ForegroundColor White
Write-Host " 4. Klicke auf 'Add Platform' → 'Web'" -ForegroundColor White
Write-Host " 5. Fülle aus:" -ForegroundColor White
Write-Host " - Name: Production" -ForegroundColor Gray
Write-Host " - Hostname: $PlatformHostname" -ForegroundColor Gray
Write-Host " - Origin: $PlatformOrigin" -ForegroundColor Gray
Write-Host " 6. Speichere und warte 1-2 Minuten" -ForegroundColor White
Write-Host ""
exit 1
}