close(); header("Location: ."); exit(); } // Check if login is disabled $adminQuery = "SELECT login_disabled FROM admin"; $adminResult = $db->query($adminQuery); $adminRow = $adminResult->fetchArray(SQLITE3_ASSOC); if ($adminRow['login_disabled'] == 1) { $query = "SELECT id, username, main_currency, language FROM user WHERE id = :id"; $stmt = $db->prepare($query); $stmt->bindValue(':id', 1, SQLITE3_INTEGER); $result = $stmt->execute(); $row = $result->fetchArray(SQLITE3_ASSOC); if ($row === false) { // Something is wrong with admin user. Reenable login $updateQuery = "UPDATE admin SET login_disabled = 0"; $updateStmt = $db->prepare($updateQuery); $updateStmt->execute(); $db->close(); header("Location: login.php"); } else { $userId = $row['id']; $main_currency = $row['main_currency']; $username = $row['username']; $language = $row['language']; $_SESSION['username'] = $username; $_SESSION['loggedin'] = true; $_SESSION['main_currency'] = $main_currency; $_SESSION['userId'] = $userId; $cookieExpire = time() + (30 * 24 * 60 * 60); setcookie('language', $language, $cookieExpire); $query = "SELECT color_theme FROM settings"; $stmt = $db->prepare($query); $result = $stmt->execute(); $settings = $result->fetchArray(SQLITE3_ASSOC); setcookie('colorTheme', $settings['color_theme'], $cookieExpire); $cookieValue = $username . "|" . "abc123ABC" . "|" . $main_currency; setcookie('wallos_login', $cookieValue, $cookieExpire); $db->close(); header("Location: ."); } } $theme = "light"; if (isset($_COOKIE['theme'])) { $theme = $_COOKIE['theme']; } $colorTheme = "blue"; if (isset($_COOKIE['colorTheme'])) { $colorTheme = $_COOKIE['colorTheme']; } $loginFailed = false; $hasSuccessMessage = (isset($_GET['validated']) && $_GET['validated'] == "true") || (isset($_GET['registered']) && $_GET['registered'] == true) ? true : false; $userEmailWaitingVerification = false; if (isset($_POST['username']) && isset($_POST['password'])) { $username = $_POST['username']; $password = $_POST['password']; $rememberMe = isset($_POST['remember']) ? true : false; $query = "SELECT id, password, main_currency, language FROM user WHERE username = :username"; $stmt = $db->prepare($query); $stmt->bindValue(':username', $username, SQLITE3_TEXT); $result = $stmt->execute(); $row = $result->fetchArray(SQLITE3_ASSOC); if ($row) { $hashedPasswordFromDb = $row['password']; $userId = $row['id']; $main_currency = $row['main_currency']; $language = $row['language']; if (password_verify($password, $hashedPasswordFromDb)) { // Check if the user is in the email_verification table $query = "SELECT 1 FROM email_verification WHERE user_id = :userId"; $stmt = $db->prepare($query); $stmt->bindValue(':userId', $userId, SQLITE3_INTEGER); $result = $stmt->execute(); $verificationRow = $result->fetchArray(SQLITE3_ASSOC); if ($verificationRow) { $userEmailWaitingVerification = true; $loginFailed = true; } else { $_SESSION['username'] = $username; $_SESSION['loggedin'] = true; $_SESSION['main_currency'] = $main_currency; $_SESSION['userId'] = $userId; $cookieExpire = time() + (30 * 24 * 60 * 60); setcookie('language', $language, $cookieExpire); if ($rememberMe) { $query = "SELECT color_theme FROM settings"; $stmt = $db->prepare($query); $result = $stmt->execute(); $settings = $result->fetchArray(SQLITE3_ASSOC); setcookie('colorTheme', $settings['color_theme'], $cookieExpire); $token = bin2hex(random_bytes(32)); $addLoginTokens = "INSERT INTO login_tokens (user_id, token) VALUES (:userId, :token)"; $addLoginTokensStmt = $db->prepare($addLoginTokens); $addLoginTokensStmt->bindParam(':userId', $userId, SQLITE3_INTEGER); $addLoginTokensStmt->bindParam(':token', $token, SQLITE3_TEXT); $addLoginTokensStmt->execute(); $_SESSION['token'] = $token; $cookieValue = $username . "|" . $token . "|" . $main_currency; setcookie('wallos_login', $cookieValue, $cookieExpire); } $db->close(); header("Location: ."); exit(); } } else { $loginFailed = true; } } else { $loginFailed = true; } } //Check if registration is open $registrations = false; $adminQuery = "SELECT registrations_open, max_users, server_url, smtp_address FROM admin"; $adminResult = $db->query($adminQuery); $adminRow = $adminResult->fetchArray(SQLITE3_ASSOC); $registrationsOpen = $adminRow['registrations_open']; $maxUsers = $adminRow['max_users']; if ($registrationsOpen == 1 && $maxUsers == 0) { $registrations = true; } else if ($registrationsOpen == 1 && $maxUsers > 0) { $userCountQuery = "SELECT COUNT(id) as userCount FROM user"; $userCountResult = $db->query($userCountQuery); $userCountRow = $userCountResult->fetchArray(SQLITE3_ASSOC); $userCount = $userCountRow['userCount']; if ($userCount < $maxUsers) { $registrations = true; } } $resetPasswordEnabled = false; if ($adminRow['smtp_address'] != "" && $adminRow['server_url'] != "") { $resetPasswordEnabled = true; } ?> "/> Wallos - Subscription Tracker > > > >
Wallos Logo Wallos Logo