<?php

require_once '../resources/config.php';
require_once LIBRARIES_PATH . "/Prismic.php";
$maybeCode = isset($_GET['code']) ? $_GET['code'] : null;
if (!isset($maybeCode)) {
    header('HTTP/1.1 400 Bad Request', true, 400);
    exit('Bad Request');
}
$maybeRedirectUri = isset($_GET['redirect_uri']) ? $_GET['redirect_uri'] : null;
$api = Prismic::apiHome();
$data = array("grant_type" => array('authorization_code'), "code" => $maybeCode, "redirect_uri" => Prismic::callback(), "client_id" => Prismic::config("prismic.clientId"), "client_secret" => Prismic::config("prismic.clientSecret"));
try {
    $response = Prismic\Api::getClient()->post($api->oauthTokenEndpoint(), null, $data)->send();
    $url = isset($maybeRedirectUri) ? $maybeRedirectUri : Routes::index();
    $json = $response->json();
    setcookie('ACCESS_TOKEN', $json['access_token']);
    header('Location: ' . $url);
} catch (Guzzle\Http\Exception\BadResponseException $e) {
    header('HTTP/1.0 401 Unauthorized');
    exit($response->getStatusCode());
}
<?php

require_once '../resources/config.php';
setcookie('ACCESS_TOKEN', "", time() - 1);
header('Location: ' . Routes::index());
 public static function handlePrismicException($e)
 {
     $response = $e->getResponse();
     if ($response->getStatusCode() == 403) {
         header('Location: ' . Routes::signin());
         exit('Forbidden');
     } elseif ($response->getStatusCode() == 401) {
         setcookie('ACCESS_TOKEN', "", time() - 1);
         header('Location: ' . Routes::index());
         exit('Unauthorized');
     } elseif ($response->getStatusCode() == 404) {
         header("HTTP/1.0 404 Not Found");
         exit("Not Found");
     } else {
         echo $response->getStatusCode();
         exit($response->getStatusCode());
     }
 }