mirror of
https://github.com/HolgerHatGarKeineNode/einundzwanzig-app.git
synced 2026-06-17 16:40:31 +00:00
✨ Add addToMine functionality to Meetups API for adding meetups to a user's "My Meetups" list
- 🔒 Introduce `addToMine` policy for authenticated users to add existing meetups. - ✏️ Add `addToMine` method in `MeetupController` with idempotent handling. - ✨ Include `addMember` utility in `Meetup` model for managing pivot relationships. - 🛠️ Refactor `AddMeetupToMineTool` to use `addMember` for consistency. - 🧪 Add feature tests for `addToMine`, covering idempotency, permissions, and unknown slugs. - 🌐 Register `addToMine` route in API and link it to `MeetupController`.
This commit is contained in:
@@ -122,6 +122,27 @@ class MeetupController extends Controller
|
||||
return MeetupResource::collection($meetups);
|
||||
}
|
||||
|
||||
/**
|
||||
* Bestehendes Meetup zu „Meine Meetups" hinzufügen
|
||||
*
|
||||
* Fügt ein bereits existierendes Meetup zur „Meine Meetups"-Liste des authentifizierten
|
||||
* Nutzers hinzu (meetup_user-Pivot als Mitglied, is_leader=false). Idempotent: ein bereits
|
||||
* hinzugefügtes Meetup bleibt unverändert. Die Stammdaten bleiben dem Ersteller vorbehalten.
|
||||
*/
|
||||
#[Response(status: 401, description: 'Nicht authentifiziert.')]
|
||||
public function addToMine(Request $request, Meetup $meetup): JsonResponse
|
||||
{
|
||||
Gate::authorize('addToMine', $meetup);
|
||||
|
||||
$wasAdded = $meetup->addMember($request->user());
|
||||
|
||||
return MeetupResource::make($meetup)
|
||||
->response()
|
||||
->setStatusCode($wasAdded
|
||||
? \Symfony\Component\HttpFoundation\Response::HTTP_CREATED
|
||||
: \Symfony\Component\HttpFoundation\Response::HTTP_OK);
|
||||
}
|
||||
|
||||
/**
|
||||
* Eigenes Meetup anzeigen
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user