* * 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\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 Illuminate\Support\Facades\Hash; 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 $guarded = []; /** * The attributes excluded from the model's JSON form. * * @var array */ protected $hidden = [ 'password', ]; /** * 兼容 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); } }