Repository URL to install this package:
|
Version:
2.0.12 ▾
|
digitalascetic/google-api-client
/
DigitalAscetic
/
GoogleApiClientBundle
/
Controller
/
GoogleAuthWebServiceController.php
|
|---|
<?php
/**
* Created by PhpStorm.
* User: eduarddezacastellano
* Date: 05/09/2018
* Time: 17:54
*/
namespace DigitalAscetic\GoogleApiClientBundle\Controller;
use DigitalAscetic\GoogleApiClientBundle\Entity\IGoogleApiUser;
use DigitalAscetic\GoogleApiClientBundle\Event\GoogleApiCalendarWatchEvent;
use DigitalAscetic\GoogleApiClientBundle\Event\GoogleApiNotificationsEvent;
use DigitalAscetic\GoogleApiClientBundle\Event\GoogleApiUserDisconnectEvent;
use DigitalAscetic\GoogleApiClientBundle\Service\GoogleAuthService;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
/**
* Class GoogleAuthWebServiceController
* @package DigitalAscetic\GoogleApiClientBundle\Controller
*
* @Route("/google-auth")
*/
class GoogleAuthWebServiceController extends BaseWebServiceController
{
const SERVICE_NAME = 'ascetic_google_api_client.auth_controller';
/** @var GoogleAuthService $googleAuthServ */
private $googleAuthServ;
public function __construct(GoogleAuthService $googleAuthServ)
{
$this->googleAuthServ = $googleAuthServ;
}
/**
* @Route("/authorize/user/{id}", requirements={"id" = "^\d+$"}, methods={"GET","HEAD"}, name="da.google_api.auth.authorize")
*/
public function getAuthorizationForUserCodeAction(Request $request)
{
$userId = $request->get('id');
$code = $request->get('code');
/** @var IGoogleApiUser $user */
$user = $this->googleAuthServ->getUserById($userId);
$data = array();
if (isset($code)) {
$token = $this->googleAuthServ->authenticateClientWithAuthCode($code, $request->getHost(), $user);
$data = $token;
$this->dispatcher->dispatch(GoogleApiNotificationsEvent::EVENT_NAME, new GoogleApiNotificationsEvent(GoogleApiNotificationsEvent::TYPE_START, $user, $request->getHost()));
}
return $this->jsonResponse($data);
}
/**
* @Route("/disconnect/user/{id}", requirements={"id" = "^\d+$"}, methods={"GET","HEAD"}, name="da.google_api.auth.disconnect")
*/
public function disconnectUserAction(Request $request)
{
$userId = $request->get('id');
/** @var IGoogleApiUser $user */
$user = $this->googleAuthServ->getUserById($userId);
$this->dispatcher->dispatch(GoogleApiUserDisconnectEvent::EVENT_NAME, new GoogleApiUserDisconnectEvent($user));
$this->dispatcher->dispatch(GoogleApiNotificationsEvent::EVENT_NAME, new GoogleApiNotificationsEvent(GoogleApiNotificationsEvent::TYPE_STOP, $user, $request->getHost()));
$revoked = $this->googleAuthServ->revokeUserToken($user);
$data = array(
'disconnected' => $revoked
);
return $this->jsonResponse($data);
}
/**
* @Route("/token/user/{id}", requirements={"id" = "^\d+$"}, methods={"GET","HEAD"}, name="da.google_api.auth.token")
*/
public function getTokenUserAction(Request $request)
{
$userId = $request->get('id');
/** @var IGoogleApiUser $user */
$user = $this->googleAuthServ->getUserById($userId);
$refreshToken = $user->getGoogleApiRefreshToken();
$data = array();
if (isset($refreshToken)) {
$token = $this->googleAuthServ->getOauth2AccessToken($user, $refreshToken);
$data = $token;
$this->dispatcher->dispatch(GoogleApiNotificationsEvent::EVENT_NAME, new GoogleApiNotificationsEvent(GoogleApiNotificationsEvent::TYPE_RENEW, $user, $request->getHost()));
}
return $this->jsonResponse($data);
}
}