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:
@@ -185,6 +185,23 @@ class Meetup extends Model implements HasMedia
|
||||
return $this->users()->whereKey($user->id)->exists();
|
||||
}
|
||||
|
||||
/**
|
||||
* Den Nutzer als Mitglied (nicht Leader) zu „Meine Meetups" hinzufügen.
|
||||
* Idempotent: ein bereits hinzugefügter Nutzer bleibt unverändert. Gibt
|
||||
* true zurück, wenn neu hinzugefügt (false = war bereits Mitglied).
|
||||
* Geteilt von REST-Controller (addToMine) und MCP-Tool (AddMeetupToMineTool).
|
||||
*/
|
||||
public function addMember(User $user): bool
|
||||
{
|
||||
$wasMember = $this->hasMember($user);
|
||||
|
||||
$this->users()->syncWithoutDetaching([
|
||||
$user->getKey() => ['is_leader' => false],
|
||||
]);
|
||||
|
||||
return ! $wasMember;
|
||||
}
|
||||
|
||||
/**
|
||||
* RateLimiter-Key für Meetup-Stammdaten-Updates über das Portal-Frontend.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user