Files
oc-gcalendar-plugin/formwidgets/OAuth.php

63 lines
1.8 KiB
PHP
Executable File

<?php namespace NicoSt\GCalendar\FormWidgets;
use Backend\Classes\FormWidgetBase;
use Log;
use Flash;
use Lang;
use Redirect;
use NicoSt\GCalendar\Models\Settings;
use NicoSt\GCalendar\Classes\GoogleCalendarClient;
class OAuth extends FormWidgetBase {
protected $defaultAlias = 'googleOAuth';
public function render() {
$class = new GoogleCalendarClient(true);
$client = $class->getClient();
$this->vars['redirectUrl'] = $client->getRedirectUri();
$this->vars['isAccessTokenExpired'] = $client->isAccessTokenExpired() ? '1' : '0';
$this->vars['clientIdExist'] = null != Settings::get('client_id', null) ? '1' : '0';
return $this->makePartial('oauth');
}
public function onRequestAccessToken() {
$class = new GoogleCalendarClient(true);
$client = $class->getClient();
$client->setPrompt('consent');
if ($client->isAccessTokenExpired()) {
// Request authorization from the user.
$authUrl = $client->createAuthUrl();
//Log::info('G-Calendar: Request authorization with URL ['. $authUrl .'].');
$this->vars['auth_url'] = $authUrl;
return $this->makePartial('gaccess');
}
Flash::info(Lang::get('nicost.gcalendar::lang.message.accessTokenNotExpired'));
}
public function onClearAccessToken() {
Settings::set('access_token', []);
Flash::success(Lang::get('nicost.gcalendar::lang.message.accessTokenRemoved'));
return $this->refreshTokenStatus();
}
private function refreshTokenStatus() {
$class = new GoogleCalendarClient(true);
$client = $class->getClient();
$this->vars['isAccessTokenExpired'] = $client->isAccessTokenExpired() ? '1' : '0';
return Redirect::refresh();
}
}