Administrator.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. $this->init();
  31. parent::__construct($attributes);
  32. }
  33. protected function init()
  34. {
  35. $connection = config('admin.database.connection') ?: config('database.default');
  36. $this->setConnection($connection);
  37. $this->setTable(config('admin.database.users_table'));
  38. }
  39. /**
  40. * Get avatar attribute.
  41. *
  42. * @return mixed|string
  43. */
  44. public function getAvatar()
  45. {
  46. $avatar = $this->avatar;
  47. if ($avatar) {
  48. if (! URL::isValidUrl($avatar)) {
  49. $avatar = Storage::disk(config('admin.upload.disk'))->url($avatar);
  50. }
  51. return $avatar;
  52. }
  53. return admin_asset(config('admin.default_avatar') ?: '@admin/images/default-avatar.jpg');
  54. }
  55. /**
  56. * A user has and belongs to many roles.
  57. *
  58. * @return BelongsToMany
  59. */
  60. public function roles(): BelongsToMany
  61. {
  62. $pivotTable = config('admin.database.role_users_table');
  63. $relatedModel = config('admin.database.roles_model');
  64. return $this->belongsToMany($relatedModel, $pivotTable, 'user_id', 'role_id')->withTimestamps();
  65. }
  66. /**
  67. * 判断是否允许查看菜单.
  68. *
  69. * @param array|Menu $menu
  70. *
  71. * @return bool
  72. */
  73. public function canSeeMenu($menu)
  74. {
  75. return true;
  76. }
  77. }