public function applications() { JRequest::setVar('view', 'applications'); $mainframe = JFactory::getApplication(); $apps = new Applications(); // this is for auto installation method $redirectUri = JRequest::getVar('redirect_uri'); $clientId = JRequest::getVar('client_id'); $clientSecret = JRequest::getVar('client_secret'); $deviceId = JRequest::getVar('deviceId'); // if this is a request for grant/revoke if ($_POST && $deviceId) { switch (JRequest::getVar('deviceAction')) { case 'grant': $apps->grantAccess($deviceId); break; case 'revoke': $apps->revokeAccess($deviceId); break; } } else { if ($clientId && $clientSecret && $redirectUri) { header("Content-Type: application/json"); header("Cache-Control: no-store"); JRequest::setVar('installing', true); if ($_POST || JRequest::getVar('silent')) { $model = OauthFactory::getModel('Application'); // use library for the OAuth to standardize require_once JPATH_ROOT . DS . 'components' . DS . 'com_oauth' . DS . 'libraries' . DS . 'PDOOAuth2.inc'; $oauth = new PDOOAuth2(); if ($oauth->addClient($clientId, $clientSecret, $redirectUri)) { $authData = array('client_id' => $clientId, 'response_type' => 'code', 'redirect_uri' => $redirectUri); $oauth->finishClientAuthorization(true, $authData); /* if this is a silent request, give a silent feedback */ if (JRequest::getVar('silent')) { echo json_encode(array('success' => 'true')); exit; } JRequest::setVar('authorize', true); JRequest::setVar('appName', $clientId); $mainframe->enqueueMessage(JText::_('COM_OAUTH_LABEL_APPLICATION_INSTALL')); } else { if (JRequest::getVar('silent')) { echo json_encode(array('success' => false, 'error' => JText::_('COM_OAUTH_LABEL_FAILED_TO_REGISTER'))); exit; } $mainframe->enqueueMessage(JText::_('COM_OAUTH_LABEL_FAILED_TO_REGISTER'), 'Error'); } } } } parent::display(); }