42 lines
839 B
PHP
42 lines
839 B
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Models;
|
||
|
|
|
||
|
|
use App\Http\Services\PhantasialandApi;
|
||
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||
|
|
use Illuminate\Database\Eloquent\Model;
|
||
|
|
|
||
|
|
class ThemeParkUser extends Model
|
||
|
|
{
|
||
|
|
use HasFactory;
|
||
|
|
|
||
|
|
protected $fillable = [
|
||
|
|
'username',
|
||
|
|
'password',
|
||
|
|
];
|
||
|
|
|
||
|
|
|
||
|
|
public function authenticate(): void
|
||
|
|
{
|
||
|
|
if(!$this->isTokenExpired()) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
$this->refreshToken();
|
||
|
|
}
|
||
|
|
|
||
|
|
private function refreshToken(): void
|
||
|
|
{
|
||
|
|
$api = app(PhantasialandApi::class);
|
||
|
|
$token = $api->getAccessToken($this);
|
||
|
|
$this->access_token = $token;
|
||
|
|
$this->access_token_expires_at = now()->addMonths(11);
|
||
|
|
$this->save();
|
||
|
|
}
|
||
|
|
|
||
|
|
private function isTokenExpired(): bool
|
||
|
|
{
|
||
|
|
return $this?->access_token_expires_at < now();
|
||
|
|
}
|
||
|
|
}
|