Files
alliance-services/app/Models/Auth/User.php
2026-03-15 16:38:35 -05:00

72 lines
1.6 KiB
PHP

<?php
namespace App\Models\Auth;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use Notifiable;
protected $fillable = [
'character_owner_hash',
'character_name',
'character_id',
'avatar',
'token',
'refresh_token',
'expiresIn',
'user_jwt', // holds jwt (per spec)
'user_jwt_issued-at',
'user_jwt_expires_at',
'privleges_version',
];
protected $hidden = [
'token',
'refresh_token',
'remember_token',
];
protected function casts(): array
{
return [
'expiresIn' => 'integer',
'privileges_version' => 'integer',
'user_jwt_issued_at' => 'datetime',
'user_jwt_expires_at' => 'datetime',
];
}
public function jwtNeedsRefresh(int $refreshIntervalSeconds = 3600): bool
{
if (blank($this->user_jwt) || ! $this->user_jwt_issued_at) {
return true;
}
return $this->user_jwt_issued_at->lte(now()->subSeconds($refreshIntervalSeconds));
}
public function markPrivilegesChanged(): void
{
$this->increment('privileges_version');
}
public function getName() {
return $this->character_name;
}
public function getId() {
return $this->character_id;
}
public function getRole() {
$role = UserRole::where([
'character_id' => $this->character_id,
])->first();
return $role->role;
}
}