<?php namespace App\Models; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Fortify\TwoFactorAuthenticatable; use Laravel\Jetstream\HasProfilePhoto; use Laravel\Sanctum\HasApiTokens; use Spatie\Permission\Traits\HasRoles; use App\Models\Role; use App\Models\Auth\Biodata; class User extends Authenticatable { use HasApiTokens; use HasFactory; use HasProfilePhoto; use Notifiable; use TwoFactorAuthenticatable; use HasRoles; protected $keyType = 'string'; public $incrementing = false; /** * The attributes that are mass assignable. * * @var string[] */ protected $fillable = [ 'id', 'name', 'email', 'password', 'status', 'password_decrypt' ]; /** * The attributes that should be hidden for serialization. * * @var array */ protected $hidden = [ 'password', 'remember_token', 'two_factor_recovery_codes', 'two_factor_secret', ]; /** * The attributes that should be cast. * * @var array */ protected $casts = [ 'email_verified_at' => 'datetime', ]; /** * The accessors to append to the model's array form. * * @var array */ protected $appends = [ 'profile_photo_url', ]; public function rBiodata() { return $this->hasOne(Biodata::class, 'id', 'id'); } public function rolesCustom() { return $this->belongsToMany(Role::class, 'model_has_roles', 'model_id', 'role_id'); } }