diff options
author | Minteck <46352972+Minteck@users.noreply.github.com> | 2021-08-01 22:28:15 +0200 |
---|---|---|
committer | Minteck <46352972+Minteck@users.noreply.github.com> | 2021-08-01 22:28:15 +0200 |
commit | 9852b6cd074cceec0d0b549bb6c9bd7fe50c86f2 (patch) | |
tree | 22d9b851864f9370282f21d10113afd5d565e4cf /admin/callback/index.php | |
parent | b028da9fea70c65ccd52d1d478859739027d756a (diff) | |
download | main-9852b6cd074cceec0d0b549bb6c9bd7fe50c86f2.tar.gz main-9852b6cd074cceec0d0b549bb6c9bd7fe50c86f2.tar.bz2 main-9852b6cd074cceec0d0b549bb6c9bd7fe50c86f2.zip |
Update
Diffstat (limited to 'admin/callback/index.php')
-rw-r--r-- | admin/callback/index.php | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/admin/callback/index.php b/admin/callback/index.php new file mode 100644 index 0000000..d5462f9 --- /dev/null +++ b/admin/callback/index.php @@ -0,0 +1,48 @@ +<?php + +// TODO: handle errors + +if (!isset($_GET['code'])) { + die(); +} + +$appdata = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/admin/private/app.json"), true); + +$crl = curl_init('https://jetbrains.minteck.ro.lt:1024/hub/hub/api/rest/oauth2/token'); +curl_setopt($crl, CURLOPT_RETURNTRANSFER, true); +curl_setopt($crl, CURLINFO_HEADER_OUT, true); +curl_setopt($crl, CURLOPT_POST, true); +curl_setopt($crl, CURLOPT_HTTPHEADER, [ + "Authorization: Basic " . base64_encode($appdata["id"] . ":" . $appdata["secret"]), + "Content-Type: application/x-www-form-urlencoded", + "Accept: application/json" +]); +curl_setopt($crl, CURLOPT_POSTFIELDS, "grant_type=authorization_code&redirect_uri=" . urlencode("https://minteck.ro.lt/admin/callback") . "&code=" . $_GET['code']); + +$result = curl_exec($crl); +$result = json_decode($result, true); + +curl_close($crl); + +if (isset($result["access_token"])) { + $crl = curl_init('https://jetbrains.minteck.ro.lt:1024/hub/hub/api/rest/users/me'); + curl_setopt($crl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($crl, CURLINFO_HEADER_OUT, true); + curl_setopt($crl, CURLOPT_HTTPHEADER, [ + "Authorization: Bearer " . $result["access_token"], + "Accept: application/json" + ]); + + $result = curl_exec($crl); + $result = json_decode($result, true); + + if ($result["id"] === "74bca7d2-4694-477c-8bc1-9003315abbee") { + $token = bin2hex(random_bytes(32)); + file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/admin/private/tokens/" . $token, json_encode($result)); + setcookie("ADMIN_TOKEN", $token, 0, "/", ".minteck.ro.lt", true, true); + + header("Location: /admin"); + } else { + header("Location: /"); + } +}
\ No newline at end of file |