packages/user/src/Models/User.php
<?php
namespace Moox\User\Models;
use Filament\Models\Contracts\FilamentUser;
use Filament\Models\Contracts\HasAvatar;
use Filament\Panel;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Storage;
use Jeffgreco13\FilamentBreezy\Traits\TwoFactorAuthenticatable;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable implements FilamentUser, HasAvatar
{
use HasFactory, HasRoles, Notifiable, SoftDeletes, TwoFactorAuthenticatable;
protected $fillable = [
'name',
'slug',
'gender',
'title',
'first_name',
'last_name',
'email',
'website',
'description',
'password',
'profile_photo_path',
'avatar_url',
];
protected $searchableFields = ['*'];
protected $hidden = [
'password',
'remember_token',
'two_factor_secret',
'two_factor_recovery_codes',
];
protected $casts = [
'email_verified_at' => 'datetime',
'two_factor_confirmed_at' => 'datetime',
];
public function canAccessPanel(Panel $panel): bool
{
// TODO: Implement roles and permissions.
//return $this->hasAnyRole(['super_admin', 'filament_user']);
return true;
}
public function getFilamentAvatarUrl(): ?string
{
return $this->avatar_url ? Storage::url($this->avatar_url) : null;
}
}