public static function getPresentationRequestBody()
 {
     $requestBody = json_decode(file_get_contents('php://input'), true);
     // No presentation content in the request body
     if (!$requestBody['presentation'] || empty($requestBody['presentation'])) {
         Response::error(400, "400 No Content.");
     }
     return $requestBody;
 }
 private function _loadConfig($configKey)
 {
     $this->config = file_get_contents(Config::get('auth')[$configKey]);
     // Sanity
     if ($this->config === false) {
         Response::error(404, 'Not Found: MySQL config [' . $configKey . ']');
     }
     // DB details
     return json_decode($this->config, true);
 }
 public function getTableDump($table_name, $top)
 {
     if ($this->dataporten->isSuperAdmin() && $this->dataporten->hasOauthScopeAdmin()) {
         return $this->relaySQLConnection->query("SELECT TOP({$top}) * FROM {$table_name}");
     }
     // Else
     Response::error(401, 'Unauthorized!');
 }
 /**
  * Prevent orgAdmin to request data for other orgs than what he belongs to.
  *
  * @param $orgName
  */
 function verifyOrgAccess($orgName)
 {
     // If NOT superadmin AND requested org data is not for home org
     if (!$this->dataporten->isSuperAdmin() && strcasecmp($orgName, $this->dataporten->userOrg()) !== 0) {
         Response::error(401, '401 Unauthorized (request mismatch org/user). ');
     }
 }
 private function getConfig()
 {
     $this->config = file_get_contents(Config::get('auth')['relay_mongo']);
     // Sanity
     if ($this->config === false) {
         Response::error(404, 'Not Found: MongoDB config.');
     }
     // Connect username and pass
     return json_decode($this->config, true);
 }
 /**
  * Gets the feide username (if present) from the Gatekeeper via HTTP_X_DATAPORTEN_USERID_SEC.
  *
  * It should only return a single string, 'feide:user@org.no', but future development might introduce
  * a comma-separated or array representation of more than one username
  * (e.g. "openid:user@org.no, feide:user@org.no")
  *
  * This function takes care of all of these cases.
  */
 private function _getFeideUsername()
 {
     $userIdSec = NULL;
     // Get the username(s)
     $userid = $_SERVER["HTTP_X_DATAPORTEN_USERID_SEC"];
     // Future proofing...
     if (!is_array($userid)) {
         // If not already an array, make it so. If it is not a comma separated list, we'll get a single array item.
         $userid = explode(',', $userid);
     }
     // Fish for a Feide username
     foreach ($userid as $key => $value) {
         if (strpos($value, 'feide:') !== false) {
             $value = explode(':', $value);
             $userIdSec = $value[1];
         }
     }
     // No Feide...
     if (!isset($userIdSec)) {
         Response::error(401, 'Unauthorized (user not found)');
     }
     // '*****@*****.**'
     return $userIdSec;
 }
/**
 * Prevent orgAdmin to request data for other orgs than what s/he belongs to.
 *
 * Also check that the user is member of the MediasiteAdmin group.
 *
 * @param      $orgName
 * @param null $userName
 */
function verifyOrgAndUserAccess($orgName, $userName = NULL)
{
    global $dataporten;
    // Restrictions apply, unless you're superadmin...
    if (!$dataporten->isSuperAdmin()) {
        // If requested org data is not for home org
        if (strcasecmp($orgName, $dataporten->userOrg()) !== 0) {
            Response::error(401, '401 Unauthorized (request mismatch org/user). ');
        }
        // If request involves a user account
        if (isset($userName)) {
            // Must be user from home org
            if (!strstr($userName, $orgName)) {
                Response::error(401, '401 Unauthorized (request mismatch org/user). ');
            }
        }
        if (!$dataporten->isOrgAdmin()) {
            Response::error(401, '401 Unauthorized (user is not member of the RelayAdmin group). ');
        }
    }
}
 /**
  * @return PDO
  */
 private function getConnection()
 {
     if (!is_null($this->connection)) {
         return $this->connection;
     }
     $connection = NULL;
     $host = $this->config['host'];
     $db = $this->config['db'];
     $user = $this->config['user'];
     $pass = $this->config['pass'];
     try {
         //$connection = new PDO("mssql:host=$host;dbname=$db;charset=UTF8", $user, $pass);
         $connection = new PDO("dblib:host={$host};dbname={$db};charset=UTF8", $user, $pass);
         //$connection = new PDO("sqlsrv:Server=$host;Database=$db", $user, $pass);
         //odbc:DRIVER=FreeTDS;SERVERNAME=mssql;DATABASE=
         $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
         Utils::log("DB CONNECTED");
         return $connection;
     } catch (PDOException $e) {
         Response::error(500, 'DB connection failed (SQL): ' . $e->getMessage());
     }
 }