osb/app/Models/ProviderToken.php

52 lines
998 B
PHP

<?php
namespace App\Models;
use Intuit\Models\ProviderToken as ProviderTokenBase;
use App\Traits\SiteID;
class ProviderToken extends ProviderTokenBase
{
use SiteID;
protected $dates = [
'access_token_expires_at',
'refresh_token_expires_at',
];
protected $with = ['provider'];
/* RELATIONS */
public function provider()
{
return $this->belongsTo(ProviderOauth::class,'provider_oauth_id');
}
/* METHODS */
/**
* Return an API object to interact with this provider
*
* @return mixed
* @throws \Exception
*/
public function API(): mixed
{
if (! $this->provider->api_class() || ! $this->access_token)
throw new \Exception(sprintf('No API details for [%s]',$this->provider->name));
return new ($this->provider->api_class())($this);
}
/**
* Do we have API details for this provider
*
* @return bool
*/
public function hasAPIdetails(): bool
{
return $this->provider->api_class() && $this->access_token && (! $this->hasAccessTokenExpired());
}
}