Files
ibsite/user/callback.php
2019-03-30 22:43:34 -04:00

76 lines
2.8 KiB
PHP

<?php
require_once("config.php");
require $_SERVER['DOCUMENT_ROOT']."/globalFuncs.php";
conn();
if($GLOBALS["verified"]){
//No idea what this used to do, but I'm scared to get rid of it
//header("Location: https://ib.lukeogburn.com/user/?user=".$_COOKIE["IBSITE_ID"]);
}
if(isset($_GET['code'])) {
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
} else {
reportError('callback.php: $_GET["code"] was not set!');
msg("Internal error. It has been reported.");
header("Location: /");
}
$oAuth = new Google_Service_Oauth2($client);
$user = $oAuth->userinfo->get();
//Adding cookie token thing
conn();
$stmt = $conn->prepare("INSERT INTO login_tokens (token, user_id) VALUES (:ac, :id)");
$id = substr($user->email, 0, strlen("@students.hcps.us"));
$access = password_hash($token["access_token"], PASSWORD_DEFAULT);
$stmt->bindParam(':ac', $access);
$stmt->bindParam(':id', $id);
$stmt->execute();
//Updating last login timestamp
$stmt = $conn->prepare("UPDATE users SET last_login = CURRENT_TIMESTAMP WHERE id = :id");
$stmt->bindParam(':id', $id);
$stmt->execute();
setcookie("IB_SESSION", $token["access_token"], time() + (60*60*24*14), "/", NULL, true, true);
setcookie("IB_ID", substr($user->email, 0, strlen("@students.hcps.us")), time() + (60*60*24*14), "/", NULL, true, true);
//Checking if user is in database
$dbID = getUserInfo($id)->id; //$id from above used
if(substr($user->email, -7) != "hcps.us"){
header("Location: https://ib.lukeogburn.com/user/reqHcps.php");
}else if($id!=$dbID){
//putting user in database if they aren't already
$stmt = $conn->prepare("INSERT INTO users (id, name, image_url, teacher) VALUES (:id, :nm, :im, :tc)");
$stmt->bindParam(':id', $id);
$name = str_replace(" ", "_", $user["name"]);
$stmt->bindParam(':nm', $name);
$stmt->bindParam(':im', $user["picture"]);
$teacher = is_numeric($id)?NULL:true;
$stmt->bindParam(':tc', $teacher);
$stmt->execute();
if(!$stmt){
reportError("Error signing in (013)");
msg("Error. Try again, maybe? This has been reported.");
header("Location: /");
}
msg("You have been logged in");
header("Location: https://ib.lukeogburn.com/forum/");
}else{
//updating the user's profile picture just in case they changed it in Google
$stmt = $GLOBALS['conn']->prepare("UPDATE users SET image_url = :im WHERE id = :id");
$stmt->bindParam(':im', $user->picture);
$stmt->bindParam(':id', $id);
$result = $stmt->execute();
if(!$result){
reportError("Error in callback - code 014");
msg("Error. It has been reported. Try again, maybe?");
header("Location: /");
}
msg("You have been logged in");
header("Location: https://ib.lukeogburn.com/forum/");
}
?>