Admin.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. namespace App\Models;
  3. use Dcat\Admin\Models\Menu;
  4. use Dcat\Admin\Traits\HasDateTimeFormatter;
  5. use Dcat\Admin\Traits\HasPermissions;
  6. use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
  7. use Illuminate\Database\Eloquent\Model;
  8. use Illuminate\Database\Eloquent\Relations\BelongsToMany;
  9. use Illuminate\Foundation\Auth\User as Authenticatable;
  10. use Illuminate\Support\Facades\Storage;
  11. use Illuminate\Support\Facades\URL;
  12. class Admin extends Model implements AuthenticatableContract
  13. {
  14. protected $table = 'admin_users';
  15. use \Illuminate\Auth\Authenticatable,
  16. HasPermissions,
  17. HasDateTimeFormatter;
  18. const DEFAULT_ID = 1;
  19. const ROLE_ADMINISTRATOR = 'administrator';
  20. const ROLE_FINANCE = 'finance';
  21. const ROLE_USER = 'user';
  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. public function shops()
  67. {
  68. return $this->belongsToMany(Shop::class)->withTimestamps();
  69. }
  70. /**
  71. * 判断是否允许查看菜单.
  72. *
  73. * @param array|Menu $menu
  74. *
  75. * @return bool
  76. */
  77. public function canSeeMenu($menu)
  78. {
  79. return true;
  80. }
  81. }