Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

User.php 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace App\Models;
  3. use App\Models\Core\Department;
  4. use Filament\Models\Contracts\{FilamentUser, HasAvatar, HasDefaultTenant, HasTenants};
  5. use Filament\Panel;
  6. use Illuminate\Database\Eloquent\Factories\HasFactory;
  7. use Illuminate\Database\Eloquent\Model;
  8. use Illuminate\Database\Eloquent\Relations\HasMany;
  9. use Illuminate\Foundation\Auth\User as Authenticatable;
  10. use Illuminate\Notifications\Notifiable;
  11. use Illuminate\Support\Collection;
  12. use Laravel\Sanctum\HasApiTokens;
  13. use Wallo\FilamentCompanies\{HasCompanies, HasConnectedAccounts, HasProfilePhoto, SetsProfilePhotoFromUrl};
  14. /** @property Company $currentCompany */
  15. class User extends Authenticatable implements FilamentUser, HasAvatar, HasDefaultTenant, HasTenants
  16. {
  17. use HasApiTokens;
  18. use HasCompanies;
  19. use HasConnectedAccounts;
  20. use HasFactory;
  21. use HasProfilePhoto;
  22. use Notifiable;
  23. use SetsProfilePhotoFromUrl;
  24. /**
  25. * The attributes that are mass assignable.
  26. *
  27. * @var array<int, string>
  28. */
  29. protected $fillable = [
  30. 'name', 'email', 'password',
  31. ];
  32. /**
  33. * The attributes that should be hidden for serialization.
  34. *
  35. * @var array<int, string>
  36. */
  37. protected $hidden = [
  38. 'password',
  39. 'remember_token',
  40. ];
  41. /**
  42. * The attributes that should be cast.
  43. *
  44. * @var array<string, string>
  45. */
  46. protected $casts = [
  47. 'email_verified_at' => 'datetime',
  48. ];
  49. /**
  50. * The accessors to append to the model's array form.
  51. *
  52. * @var array<int, string>
  53. */
  54. protected $appends = [
  55. 'profile_photo_url',
  56. ];
  57. public function canAccessPanel(Panel $panel): bool
  58. {
  59. return true;
  60. }
  61. public function getTenants(Panel $panel): array | Collection
  62. {
  63. return $this->allCompanies();
  64. }
  65. public function canAccessTenant(Model $tenant): bool
  66. {
  67. return $this->belongsToCompany($tenant);
  68. }
  69. public function getDefaultTenant(Panel $panel): ?Model
  70. {
  71. return $this->currentCompany;
  72. }
  73. public function getFilamentAvatarUrl(): string
  74. {
  75. return $this->profile_photo_url;
  76. }
  77. public function managers(): HasMany
  78. {
  79. return $this->hasMany(Department::class, 'manager_id');
  80. }
  81. }