User.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace App\Models;
  3. use App\Enums\LanguageEnum;
  4. use App\Enums\UserTypeEnum;
  5. use Illuminate\Database\Eloquent\Factories\HasFactory;
  6. use Illuminate\Foundation\Auth\User as Authenticatable;
  7. use Illuminate\Notifications\Notifiable;
  8. use Laravel\Sanctum\HasApiTokens;
  9. use Illuminate\Database\Eloquent\Relations\BelongsToMany;
  10. class User extends Authenticatable
  11. {
  12. use HasFactory, Notifiable, HasApiTokens;
  13. protected $guarded = ['id'];
  14. /**
  15. * The attributes that should be hidden for serialization.
  16. *
  17. * @var array<int, string>
  18. */
  19. protected $hidden = [
  20. 'password',
  21. 'remember_token',
  22. ];
  23. /**
  24. * Get the attributes that should be cast.
  25. *
  26. * @return array<string, string>
  27. */
  28. protected function casts(): array
  29. {
  30. return [
  31. 'email_verified_at' => 'datetime',
  32. 'password' => 'hashed',
  33. 'type' => UserTypeEnum::class,
  34. 'language' => LanguageEnum::class,
  35. ];
  36. }
  37. public function isAdmin(): bool
  38. {
  39. return $this->type === UserTypeEnum::ADMIN;
  40. }
  41. public function permissions(): BelongsToMany
  42. {
  43. return $this->belongsToMany(Permission::class, 'user_type_permissions', 'user_type', 'permission_id');
  44. }
  45. }