<?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()); } }