*/ use HasApiTokens, HasFactory, Notifiable, SoftDeletes, HasUuids; /** * The primary key type. * * @var string */ protected $keyType = 'string'; /** * Indicates if the IDs are auto-incrementing. * * @var bool */ public $incrementing = false; /** * The attributes that are mass assignable. * * @var list */ protected $fillable = [ 'username', 'email', 'password', 'role', 'xp', 'level', 'avatar_uri', 'participations', 'victories', 'level_id' ]; /** * The attributes that should be hidden for serialization. * * @var list */ protected $hidden = [ 'password', 'remember_token', ]; /** * Get the attributes that should be cast. * * @return array */ protected function casts(): array { return [ 'email_verified_at' => 'datetime', 'password' => 'hashed', 'role'=> UserRole::class ]; } public function participations() { return $this->belongsToMany(Hunts::class, 'hunt_participants', 'user_id', 'hunt_id') ->withPivot(['current_step_number', 'status']) ->withTimestamps(); } public function getFilamentName(): string { return $this->username; } public function canAccessPanel(Panel $panel): bool { return $this->role === UserRole::ADMIN || $this->role === UserRole::ORGA; } }