*/ use HasFactory, Notifiable; /** * @return BelongsToMany */ public function roles(): BelongsToMany { return $this->belongsToMany(Role::class); } public function hasRole(string|array $roles): bool { $roles = (array) $roles; return $this->roles()->whereIn('slug', $roles)->exists(); } public function hasPermission(string|array $permissions): bool { $permissions = (array) $permissions; return $this->roles() ->whereHas('permissions', fn ($query) => $query->whereIn('slug', $permissions)) ->exists(); } public function canAccessPanel(Panel $panel): bool { return $this->hasRole('admin') || $this->hasPermission('admin.access'); } /** * Get the attributes that should be cast. * * @return array */ protected function casts(): array { return [ 'email_verified_at' => 'datetime', 'password' => 'hashed', ]; } }