move settings sanitation to utils, move whitelist for client registration to settings
[authserver.git] / app / api.php
index f51f20198eda8c59c146e24d858c8e50e777a192..10d43edd0d1461cb9119f1b08616642e245124b5 100644 (file)
@@ -9,6 +9,13 @@
 
 // Include the common auth system files (including the OAuth2 Server object).
 require_once(__DIR__.'/authsystem.inc.php');
 
 // Include the common auth system files (including the OAuth2 Server object).
 require_once(__DIR__.'/authsystem.inc.php');
+if ($settings['piwik_enabled']) {
+  // We do not send out an HTML file, so we need to do the Piwik tracking ourselves.
+  // Init is done here, actual tracking before exit.
+  require_once($settings['piwik_tracker_path'].'PiwikTracker.php');
+  PiwikTracker::$URL = ((strpos($settings['piwik_url'], '://') === false) ? 'http://localhost' : '' ).$settings['piwik_url'];
+  $piwikTracker = new PiwikTracker($idSite = $settings['piwik_site_id']);
+}
 
 $errors = $utils->checkForSecureConnection();
 $utils->sendSecurityHeaders();
 
 $errors = $utils->checkForSecureConnection();
 $utils->sendSecurityHeaders();
@@ -18,6 +25,7 @@ if (!count($errors)) {
   $token_OK = $server->verifyResourceRequest(OAuth2\Request::createFromGlobals());
   if (!$token_OK) {
     $server->getResponse()->send();
   $token_OK = $server->verifyResourceRequest(OAuth2\Request::createFromGlobals());
   if (!$token_OK) {
     $server->getResponse()->send();
+    if ($settings['piwik_enabled']) { $piwikTracker->doTrackPageView('API Request: Bad Token'); }
     exit();
   }
   $token = $server->getAccessTokenData(OAuth2\Request::createFromGlobals());
     exit();
   }
   $token = $server->getAccessTokenData(OAuth2\Request::createFromGlobals());
@@ -59,7 +67,7 @@ if (!count($errors)) {
                                   'error_description' => 'The user the access token is connected to was not recognized.')));
         }
         else {
                                   'error_description' => 'The user the access token is connected to was not recognized.')));
         }
         else {
-          if (in_array($user['email'], $utils->client_reg_email_whitelist)) {
+          if (($utils->client_reg_email_whitelist === false) || (in_array($user['email'], $utils->client_reg_email_whitelist))) {
             if (strlen(@$_GET['client_id']) >= 5) {
               $result = $db->prepare('SELECT `client_id`,`user_id` FROM `oauth_clients` WHERE `client_id` = :clientid;');
               $result->execute(array(':clientid' => $_GET['client_id']));
             if (strlen(@$_GET['client_id']) >= 5) {
               $result = $db->prepare('SELECT `client_id`,`user_id` FROM `oauth_clients` WHERE `client_id` = :clientid;');
               $result->execute(array(':clientid' => $_GET['client_id']));
@@ -141,4 +149,7 @@ else {
   print(json_encode(array('error' => 'insecure_connection',
                           'error_description' => 'Your connection is insecure. The API can only be accessed on secure connections.')));
 }
   print(json_encode(array('error' => 'insecure_connection',
                           'error_description' => 'Your connection is insecure. The API can only be accessed on secure connections.')));
 }
+if ($settings['piwik_enabled']) {
+  $piwikTracker->doTrackPageView('API Request'.(strlen($token['scope'])?': '.$token['scope']:''));
+}
 ?>
 ?>