Administrator.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. namespace Dcat\Admin\Models;
  3. use Dcat\Admin\Traits\HasDateTimeFormatter;
  4. use Dcat\Admin\Traits\HasPermissions;
  5. use Illuminate\Auth\Authenticatable;
  6. use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
  7. use Illuminate\Database\Eloquent\Model;
  8. use Illuminate\Database\Eloquent\Relations\BelongsToMany;
  9. use Illuminate\Support\Facades\Storage;
  10. use Illuminate\Support\Facades\URL;
  11. /**
  12. * Class Administrator.
  13. *
  14. * @property Role[] $roles
  15. */
  16. class Administrator extends Model implements AuthenticatableContract
  17. {
  18. use Authenticatable,
  19. HasPermissions,
  20. HasDateTimeFormatter;
  21. const DEFAULT_ID = 1;
  22. protected $fillable = ['username', 'password', 'name', 'avatar'];
  23. /**
  24. * Create a new Eloquent model instance.
  25. *
  26. * @param array $attributes
  27. */
  28. public function __construct(array $attributes = [])
  29. {
  30. $connection = config('admin.database.connection') ?: config('database.default');
  31. $this->setConnection($connection);
  32. $this->setTable(config('admin.database.users_table'));
  33. parent::__construct($attributes);
  34. }
  35. /**
  36. * Get avatar attribute.
  37. *
  38. * @return mixed|string
  39. */
  40. public function getAvatar()
  41. {
  42. $avatar = $this->avatar;
  43. if ($avatar) {
  44. if (! URL::isValidUrl($avatar)) {
  45. $avatar = Storage::disk(config('admin.upload.disk'))->url($avatar);
  46. }
  47. return $avatar;
  48. }
  49. return admin_asset(config('admin.default_avatar') ?: '@admin/images/default-avatar.jpg');
  50. }
  51. /**
  52. * A user has and belongs to many roles.
  53. *
  54. * @return BelongsToMany
  55. */
  56. public function roles(): BelongsToMany
  57. {
  58. $pivotTable = config('admin.database.role_users_table');
  59. $relatedModel = config('admin.database.roles_model');
  60. return $this->belongsToMany($relatedModel, $pivotTable, 'user_id', 'role_id');
  61. }
  62. /**
  63. * 判断是否允许查看菜单.
  64. *
  65. * @param array|Menu $menu
  66. *
  67. * @return bool
  68. */
  69. public function canSeeMenu($menu)
  70. {
  71. return true;
  72. }
  73. }