backend und frontent optimiert
This commit is contained in:
Binary file not shown.
@@ -17,9 +17,10 @@
|
|||||||
let wunsch1Id = '';
|
let wunsch1Id = '';
|
||||||
let wunsch2Id = '';
|
let wunsch2Id = '';
|
||||||
let wunsch3Id = '';
|
let wunsch3Id = '';
|
||||||
|
let fehler = '';
|
||||||
let success = false;
|
let success = false;
|
||||||
|
|
||||||
let dienststellen = [];
|
let dienststellen: any[];
|
||||||
|
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
const res = await fetch('/api/admin/dienststellen');
|
const res = await fetch('/api/admin/dienststellen');
|
||||||
@@ -39,7 +40,13 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
const result = await res.json();
|
const result = await res.json();
|
||||||
success = result.success;
|
if (!res.ok) {
|
||||||
|
fehler = result.error || 'Ein Fehler ist aufgetreten. Bitte versuchen Sie es später erneut.';
|
||||||
|
success = false;
|
||||||
|
} else {
|
||||||
|
fehler = '';
|
||||||
|
success = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -110,6 +117,10 @@
|
|||||||
{#if success}
|
{#if success}
|
||||||
<p class="text-green-600 font-semibold text-center">Anmeldung erfolgreich gesendet!</p>
|
<p class="text-green-600 font-semibold text-center">Anmeldung erfolgreich gesendet!</p>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
{#if fehler}
|
||||||
|
<p class="text-red-600">{fehler}</p>
|
||||||
|
{/if}
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -40,16 +40,15 @@
|
|||||||
🏢 Dienststellen verwalten
|
🏢 Dienststellen verwalten
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
on:click={async () => {
|
on:click={async () => {
|
||||||
await fetch('/api/admin/logout', { method: 'POST' });
|
await fetch('/api/admin/logout', { method: 'POST' });
|
||||||
location.reload();
|
location.reload();
|
||||||
}}
|
}}
|
||||||
class="text-sm text-red-600 underline"
|
class="bg-red-600 text-white px-4 py-3 rounded text-center hiver:bg-red-700">
|
||||||
>
|
Logout
|
||||||
Logout
|
</button>
|
||||||
</button>
|
</div>
|
||||||
</div>
|
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,14 @@
|
|||||||
</tr>
|
</tr>
|
||||||
{/each}
|
{/each}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<button
|
||||||
|
on:click={async () => {
|
||||||
|
await fetch('/api/admin/logout', { method: 'POST' });
|
||||||
|
location.reload();
|
||||||
|
}}
|
||||||
|
class="bg-red-600 text-white px-4 py-3 rounded text-center hiver:bg-red-700">
|
||||||
|
Logout
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,14 @@
|
|||||||
<button on:click={() => loeschen(d.id)} class="text-sm text-red-600 hover:underline">Löschen</button>
|
<button on:click={() => loeschen(d.id)} class="text-sm text-red-600 hover:underline">Löschen</button>
|
||||||
</li>
|
</li>
|
||||||
{/each}
|
{/each}
|
||||||
|
</ul>
|
||||||
|
<button
|
||||||
|
on:click={async () => {
|
||||||
|
await fetch('/api/admin/logout', { method: 'POST' });
|
||||||
|
location.reload();
|
||||||
|
}}
|
||||||
|
class="bg-red-600 text-white px-4 py-3 rounded text-center hiver:bg-red-700">
|
||||||
|
Logout
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { PrismaClient } from '@prisma/client';
|
import { PrismaClient } from '@prisma/client';
|
||||||
import type { RequestHandler } from '@sveltejs/kit';
|
import { json, type RequestHandler } from '@sveltejs/kit';
|
||||||
|
import { Prisma } from '@prisma/client';
|
||||||
|
|
||||||
const prisma = new PrismaClient();
|
const prisma = new PrismaClient();
|
||||||
|
|
||||||
@@ -28,25 +29,15 @@ export const POST: RequestHandler = async ({ request }) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const exists = await prisma.anmeldung.findUnique({
|
return json({ success: true });
|
||||||
where: { email: data.email }
|
|
||||||
});
|
|
||||||
|
|
||||||
if (exists) {
|
|
||||||
return new Response(JSON.stringify({ success: false, error: 'Diese E-Mail wurde bereits verwendet.' }), {
|
|
||||||
status: 400,
|
|
||||||
headers: { 'Content-Type': 'application/json' }
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
return new Response(JSON.stringify({ success: true }), {
|
|
||||||
headers: { 'Content-Type': 'application/json' }
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
if (error instanceof Prisma.PrismaClientKnownRequestError) {
|
||||||
|
if (error.code === 'P2002') {
|
||||||
|
// Eindeutigkeit verletzt
|
||||||
|
return json({ error: 'Diese E-Mail-Adresse wurde bereits verwendet.' }, { status: 400 });
|
||||||
|
}
|
||||||
|
}
|
||||||
console.error(error);
|
console.error(error);
|
||||||
return new Response(JSON.stringify({ success: false, error: 'Fehler bei Speicherung' }), {
|
return json({ error: 'Ein Fehler ist aufgetreten.' }, { status: 500 });
|
||||||
status: 500,
|
|
||||||
headers: { 'Content-Type': 'application/json' }
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user