Compare commits
3 Commits
52a15b7504
...
7879b63498
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7879b63498 | ||
|
|
91ebaa0e44 | ||
|
|
a61caa2d13 |
@@ -57,6 +57,7 @@ Eine Web-App inspiriert von Heardle, bei der Nutzer täglich einen Song anhand k
|
||||
- **Global-Kuratoren:** Optionale globale Kuratoren, die für alle Rätsel zuständig sind.
|
||||
- **Kurator-Dashboard:** Eigene Dashboard-Seite (`/curator` oder `/de/curator`, `/en/curator`) für Kuratoren.
|
||||
- **Song-Verwaltung:** Kuratoren können Songs hochladen, bearbeiten und Genres/Specials zuweisen.
|
||||
- **Batch-Edit:** Mehrere Titel gleichzeitig bearbeiten (Genre/Special Toggle, Artist ändern, Exclude Global Flag setzen).
|
||||
- **Kommentar-Verwaltung:** Kuratoren können Spieler-Kommentare zu ihren Rätseln einsehen, als gelesen markieren und archivieren.
|
||||
- **Spieler-Kommentare:**
|
||||
- **Feedback an Kuratoren:** Spieler können nach Abschluss eines Rätsels optional eine Nachricht an die Kuratoren senden.
|
||||
@@ -179,6 +180,12 @@ Das Projekt ist für den Betrieb mit Docker optimiert.
|
||||
- URL: `/de/curator` oder `/en/curator`
|
||||
- Kurator-Accounts werden vom Admin erstellt und verwaltet.
|
||||
- Kuratoren können Songs hochladen und verwalten, sowie Kommentare von Spielern einsehen.
|
||||
- **Batch-Edit-Funktionalität:**
|
||||
- Mehrere Titel über Checkboxen auswählen
|
||||
- Genre/Special Toggle (hinzufügen/entfernen)
|
||||
- Artist-Änderung für alle ausgewählten Titel
|
||||
- Exclude Global Flag setzen/entfernen (nur für Global-Kuratoren)
|
||||
- Toolbar erscheint automatisch bei Auswahl von Titeln
|
||||
|
||||
6. **Special Curation & Scheduling verwenden:**
|
||||
- Erstelle ein Special im Admin-Dashboard:
|
||||
|
||||
@@ -81,11 +81,12 @@ export async function POST(request: Request) {
|
||||
|
||||
let assignments: { genreIds: Set<number>; specialIds: Set<number> } | null = null;
|
||||
if (context.role === 'curator') {
|
||||
assignments = await getCuratorAssignments(context.curator.id);
|
||||
const curatorAssignments = await getCuratorAssignments(context.curator.id);
|
||||
assignments = curatorAssignments;
|
||||
|
||||
// Validate genre/special toggles are within curator's assignments
|
||||
if (hasGenreToggle) {
|
||||
const invalidGenre = genreToggleIds.some((id: number) => !assignments.genreIds.has(id));
|
||||
const invalidGenre = genreToggleIds.some((id: number) => !curatorAssignments.genreIds.has(id));
|
||||
if (invalidGenre) {
|
||||
return NextResponse.json(
|
||||
{ error: 'Curators may only toggle their own genres' },
|
||||
@@ -95,7 +96,7 @@ export async function POST(request: Request) {
|
||||
}
|
||||
|
||||
if (hasSpecialToggle) {
|
||||
const invalidSpecial = specialToggleIds.some((id: number) => !assignments.specialIds.has(id));
|
||||
const invalidSpecial = specialToggleIds.some((id: number) => !curatorAssignments.specialIds.has(id));
|
||||
if (invalidSpecial) {
|
||||
return NextResponse.json(
|
||||
{ error: 'Curators may only toggle their own specials' },
|
||||
|
||||
Reference in New Issue
Block a user