<?php
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/prerequisites.inc.php';

if (!isset($_SESSION['mailcow_cc_role'])) {
  $_SESSION['oauth2_request'] = $_SERVER['REQUEST_URI'];
  header('Location: /?oauth');
}

$request = OAuth2\Request::createFromGlobals();
$response = new OAuth2\Response();

if (!$oauth2_server->validateAuthorizeRequest($request, $response)) {
  $response->send();
  exit();
}

if (!isset($_POST['authorized'])):
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/header.inc.php';

?>
<div class="container">
  <div class="panel panel-default">
    <div class="panel-heading"><?=$lang['oauth2']['authorize_app'];?></div>
    <div class="panel-body">
      <?php
      if ($_SESSION['mailcow_cc_role'] != 'user'):
      $request = '';
      ?>
      <p><?=$lang['oauth2']['access_denied'];?></p>
      <?php
      else:
      ?>
      <p><?=$lang['oauth2']['scope_ask_permission'];?>:</p>
      <dl class="dl-horizontal">
        <dt><?=$lang['oauth2']['profile'];?></dt>
        <dd><?=$lang['oauth2']['profile_desc'];?></dd>
      </dl>
      <form class="form-horizontal" autocapitalize="none" autocorrect="off" role="form" method="post">
        <div class="form-group">
          <div class="col-sm-10 text-center">
            <button class="btn btn-success" name="authorized" type="submit" value="1"><?=$lang['oauth2']['permit'];?></button>
            <a href="#" class="btn btn-default" onclick="window.history.back()" role="button"><?=$lang['oauth2']['deny'];?></a>
            <input type="hidden" name="csrf_token" value="<?=$_SESSION['CSRF']['TOKEN'];?>">
          </div>
        </div>
      </form>
      <?php
      endif;
      ?>
    </div>
  </div>
</div> <!-- /container -->
<?php
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/footer.inc.php';
exit();
endif;

// print the authorization code if the user has authorized your client
$is_authorized = ($_POST['authorized'] == '1');
$oauth2_server->handleAuthorizeRequest($request, $response, $is_authorized, $_SESSION['mailcow_cc_username']);
if ($is_authorized) {
  unset($_SESSION['oauth2_request']);
  if ($GLOBALS['OAUTH2_FORGET_SESSION_AFTER_LOGIN'] === true) {
    session_unset();
    session_destroy();
  }
  header('Location: ' . $response->getHttpHeader('Location'));
  exit;
}