* * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace App\Repositories\Models\Base; use App\Repositories\Models\Area\Projects; use App\Repositories\Models\Model; use Database\Factories\UserFactory; use Illuminate\Auth\Authenticatable; use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Illuminate\Database\Eloquent\Factories\HasFactory; use Laravel\Lumen\Auth\Authorizable; use Spatie\Permission\Traits\HasRoles; use Tymon\JWTAuth\Contracts\JWTSubject; class Admin extends Model implements AuthenticatableContract, AuthorizableContract, JWTSubject { protected $table = 'base_admins'; use Authenticatable, Authorizable, HasFactory, HasRoles; /** * The attributes that are mass assignable. * * @var array */ // protected $fillable = [ // 'name', 'avatar', 'username' // ]; protected $guarded = []; /** * The attributes excluded from the model's JSON form. * * @var array */ protected $hidden = [ 'password', ]; protected static function booted() { self::language(); } /** * 兼容 Laravel 8 的 Factory. * * @return UserFactory */ protected static function newFactory() { return UserFactory::new(); } /** * Get the identifier that will be stored in the subject claim of the JWT. * * @return mixed */ public function getJWTIdentifier() { return $this->getKey(); } /** * Return a key value array, containing any custom claims to be added to the JWT. * * @return array */ public function getJWTCustomClaims() { return ['admin']; } public function role() { return $this->belongsTo(Role::class); } public function department() { return $this->belongsTo(Department::class); } public function getHeadimgAttribute($val) { if (is_null($val)) { return path_to_url('default/headImg.jpeg'); } return path_to_url($val); } public function shop() { return $this->belongsTo(Shop::class)->select(['id', 'name']); } public function setProjectIdsAttribute($val) { // if (count($val) == 0) return ''; // $this->attributes['project_ids'] = '-' . arr2str0($val, '-') . '-'; $this->attributes['project_ids'] = '-' . $val . '-'; } public function getProjectIdsAttribute($val) { return str2arr0(trim($val, '-'), '-'); } public function getProjectsAttribute() { $ids = str2arr0(trim($this->attributes['project_ids'], '-'), '-'); if (in_array(0, $ids)) { return ['全部']; } return Projects::query()->whereIn('id', $ids)->select(['id', 'name'])->get(); } }