function clear($key)
{
// Normalize array literal
$cache = Cache::instance();
$parts = $this->cut($key);
if ($key == 'CACHE') {
// Clear cache contents
$cache->reset();
} elseif (preg_match('/^(GET|POST|COOKIE)\\b(.+)/', $key, $expr)) {
$this->clear('REQUEST' . $expr[2]);
if ($expr[1] == 'COOKIE') {
$parts = $this->cut($key);
$jar = $this->hive['JAR'];
$jar['expire'] = strtotime('-1 year');
call_user_func_array('setcookie', array_merge([$parts[1], NULL], $jar));
unset($_COOKIE[$parts[1]]);
}
} elseif ($parts[0] == 'SESSION') {
if (!headers_sent() && session_status() != PHP_SESSION_ACTIVE) {
session_start();
}
if (empty($parts[1])) {
// End session
session_unset();
session_destroy();
$this->clear('COOKIE.' . session_name());
}
$this->sync('SESSION');
}
if (!isset($parts[1]) && array_key_exists($parts[0], $this->init)) {
// Reset global to default value
$this->hive[$parts[0]] = $this->init[$parts[0]];
} else {
eval('unset(' . $this->compile('@this->hive.' . $key) . ');');
if ($parts[0] == 'SESSION') {
session_commit();
session_start();
}
if ($cache->exists($hash = $this->hash($key) . '.var')) {
// Remove from cache
$cache->clear($hash);
}
}
}
/** * auth service callback * @param Base $f3 * @param $params */ function callback(\Base $f3, $params) { $Opauth = new \Opauth($this->config, false); switch ($Opauth->env['callback_transport']) { case 'session': $response = $f3->get('SESSION.opauth'); $f3->clear('SESSION.opauth'); break; case 'post': $response = unserialize(base64_decode($f3->get('POST.opauth'))); break; case 'get': $response = unserialize(base64_decode($f3->get('GET.opauth'))); break; default: $f3->error(400, 'Unsupported callback_transport'); break; } if (isset($response['error'])) { $f3->call($this->abortFunc, array($response)); return; } $data = $response['auth']; // validate if (empty($data) || empty($response['timestamp']) || empty($response['signature']) || empty($data['provider']) || empty($data['uid'])) { $f3->error(400, 'Invalid auth response: Missing key auth response components'); } elseif (!$Opauth->validate(sha1(print_r($data, true)), $response['timestamp'], $response['signature'], $reason)) { $f3->error(400, 'Invalid auth response: ' . $reason); } else { // It's all good $f3->call($this->successFunc, array($data)); } }