profitCenters */ class User extends Authenticatable implements LaratrustUser, FilamentUser { use HasApiTokens, HasFactory, Notifiable; use HasRolesAndPermissions; // ,\OwenIt\Auditing\Auditable /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password', 'supplier_id', ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; /** * Get the attributes that should be cast. * * @return array */ protected function casts(): array { return [ 'email_verified_at' => 'datetime', ]; } /** * The profitCenter that belong to the user. */ public function profitCenters(): BelongsToMany { return $this->belongsToMany(ProfitCenter::class, 'profit_center_users')->withTimestamps(); } public function supplier(): BelongsTo { return $this->belongsTo(Supplier::class); } public function canAccessPanel(Panel $panel): bool { return match ($panel->getId()) { 'admin' => $this->hasRole(['root', 'developer', 'admin', 'profit-center']), 'supplierPortal' => $this->hasRole('supplier'), default => false, }; } }