| 
<?php
 $page = "authPage";
 
 $utils = new Uploady\Utils();
 $database = new Uploady\Database();
 $user = new Uploady\User($database, $utils);
 $auth = new Uploady\Auth($database, $utils, $user);
 
 // Check if the user is loggedin
 if (!isset($_SESSION['loggedin'])) {
 $utils->redirect($utils->siteUrl("/logout.php"));
 } elseif (isset($_SESSION['OTP']) && ($_SESSION['OTP'] == true)) {
 $utils->redirect($utils->siteUrl("/index.php"));
 } else {
 $_SESSION['OTP'] = false;
 }
 
 $uniqueid = $auth->generateDeviceID();
 
 if ($auth->checkDeviceId($uniqueid) == true) {
 $user->regenerateSession();
 }
 
 $g = new \RobThree\Auth\TwoFactorAuth(new \RobThree\Auth\Providers\Qr\ImageChartsQRCodeProvider(), "Uploady");
 
 if ($_SERVER["REQUEST_METHOD"] == "POST") {
 $code = $utils->sanitize($_POST['otp_code']);
 $secret = $user->getSecret($_SESSION['username']);
 
 if ($g->verifyCode($secret, $code)) {
 if (isset($_POST['remberme'])) {
 if (!isset($_COOKIE['2fa'])) {
 $utils->createCookie("2fa", true);
 $utils->createCookie("device_id", $uniqueid);
 }
 }
 
 $user->regenerateSession();
 } else {
 $error = $lang["general"]["two_factor_auth_failed"];
 }
 }
 
 $title = $lang["general"]['two_factor_title'];
 
 |