*/ use HasFactory, Notifiable, HasApiTokens; /** * Ein User kann viele Veranstaltungen als Favorit speichern. */ public function favoriteEvents(): BelongsToMany { return $this->belongsToMany(Event::class, 'user_event_favorites', 'user_id', 'event_id') ->withTimestamps(); } /** * Ein User (Organizer) kann viele Events erstellen. */ public function createdEvents(): HasMany { return $this->hasMany(Event::class, 'created_by'); } /** * Prüfe ob User eine bestimmte Rolle hat. */ public function hasRole(string $role): bool { return $this->role === $role; } /** * Prüfe ob User ein Organizer ist. */ public function isOrganizer(): bool { return $this->hasRole('organizer'); } /** * Prüfe ob User ein normaler User ist. */ public function isUser(): bool { return $this->hasRole('user'); } /** * Prüfe ob User ein Admin ist. */ public function isAdmin(): bool { return $this->hasRole('admin'); } /** * Get the attributes that should be cast. * * @return array */ protected function casts(): array { return [ 'email_verified_at' => 'datetime', 'password' => 'hashed', ]; } }