summaryrefslogtreecommitdiff
path: root/public/account/index.php
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2025-12-08 21:53:36 +0500
committerilotterytea <iltsu@alright.party>2025-12-08 21:53:36 +0500
commit57472eab3c7b035392c6a5aa240593ecaa7d1ccf (patch)
tree9da30829290f225be2dab3d383549cbfda82ed19 /public/account/index.php
parent6541d0f3888862ab049055fd418b700f73eed367 (diff)
upd: moved all /public/ files to the root folder
Diffstat (limited to 'public/account/index.php')
-rw-r--r--public/account/index.php306
1 files changed, 0 insertions, 306 deletions
diff --git a/public/account/index.php b/public/account/index.php
deleted file mode 100644
index 2b9e790..0000000
--- a/public/account/index.php
+++ /dev/null
@@ -1,306 +0,0 @@
-<?php
-include_once "../../src/alert.php";
-include "../../src/accounts.php";
-include "../../src/partials.php";
-include_once "../../src/config.php";
-include_once "../../src/utils.php";
-include_once "../../src/images.php";
-
-authorize_user();
-
-if (!isset($_SESSION["user_id"], $_SESSION["user_name"])) {
- header("Location: /account/login");
- exit;
-}
-
-$db = new PDO(DB_URL, DB_USER, DB_PASS);
-
-if ($_SERVER['REQUEST_METHOD'] == "POST") {
- $username = str_safe($_POST["username"] ?? "", ACCOUNT_USERNAME_LENGTH[1]);
-
- if (!empty($username) && $username != $_SESSION["user_name"]) {
- if (!preg_match(ACCOUNT_USERNAME_REGEX, $username)) {
- generate_alert("/account", "Bad username");
- exit;
- }
-
- $stmt = $db->prepare("SELECT id FROM users WHERE username = ?");
- $stmt->execute([$username]);
-
- if ($stmt->rowCount() == 0) {
- $stmt = $db->prepare("UPDATE users SET username = ? WHERE id = ?");
- $stmt->execute([$username, $_SESSION["user_id"]]);
- } else {
- generate_alert("/account", "The username has already taken");
- exit;
- }
- }
-
- if (isset($_FILES["pfp"]) && !empty($_FILES["pfp"]["tmp_name"])) {
- $pfp = $_FILES["pfp"];
-
- if (
- $err = create_image_bundle(
- $pfp["tmp_name"],
- $_SERVER["DOCUMENT_ROOT"] . "/static/userdata/avatars/" . $_SESSION["user_id"],
- ACCOUNT_PFP_MAX_SIZE[0],
- ACCOUNT_PFP_MAX_SIZE[1],
- true,
- true
- )
- ) {
- generate_alert("/account", sprintf("Error occurred while processing the profile picture (%d)", $err));
- exit;
- }
- }
-
- if (isset($_FILES["banner"]) && !empty($_FILES["banner"]["tmp_name"])) {
- $banner = $_FILES["banner"];
-
- if (
- $err = create_image_bundle(
- $banner["tmp_name"],
- $_SERVER["DOCUMENT_ROOT"] . "/static/userdata/banners/" . $_SESSION["user_id"],
- ACCOUNT_BANNER_MAX_SIZE[0],
- ACCOUNT_BANNER_MAX_SIZE[1],
- true,
- true
- )
- ) {
- generate_alert("/account", sprintf("Error occurred while processing the profile banner (%d)", $err));
- exit;
- }
- }
-
- if (isset($_FILES["badge"]) && !empty($_FILES["badge"]["tmp_name"])) {
- $badge = $_FILES["badge"];
- $badge_id = bin2hex(random_bytes(16));
- if (
- $err = create_image_bundle(
- $badge["tmp_name"],
- $_SERVER["DOCUMENT_ROOT"] . "/static/userdata/badges/" . $badge_id,
- ACCOUNT_BADGE_MAX_SIZE[0],
- ACCOUNT_BADGE_MAX_SIZE[1],
- true,
- true
- )
- ) {
- generate_alert("/account", sprintf("Error occurred while processing the personal badge (%d)", $err));
- exit;
- }
-
- $db->prepare("DELETE FROM user_badges WHERE badge_id != ? AND user_id = ?")->execute([$badge_id, $_SESSION["user_id"]]);
- $db->prepare("INSERT INTO badges(id, uploaded_by) VALUES (?, ?)")->execute([$badge_id, $_SESSION["user_id"]]);
- $db->prepare("INSERT INTO user_badges(badge_id, user_id) VALUES (?, ?)")->execute([$badge_id, $_SESSION["user_id"]]);
- }
-
- $db = null;
- generate_alert("/account", "Your changes have been applied!", 200);
- exit;
-}
-
-?>
-
-<html>
-
-<head>
- <title>Account management - <?php echo INSTANCE_NAME ?></title>
- <link rel="stylesheet" href="/static/style.css">
- <link rel="shortcut icon" href="/static/favicon.ico" type="image/x-icon">
-</head>
-
-<body>
- <div class="container">
- <div class="wrapper">
- <?php html_navigation_bar() ?>
-
- <section class="content">
- <?php display_alert() ?>
- <section class="box accman">
- <h1>Account management</h1>
-
- <form action="/account/" method="POST" enctype="multipart/form-data">
- <h2>Profile</h2>
- <h3>Profile picture</h3>
- <?php
- $has_pfp = is_dir("../static/userdata/avatars/" . $_SESSION["user_id"]);
- if ($has_pfp) {
- echo '<img src="/static/userdata/avatars/' . $_SESSION["user_id"] . '/2x.webp" id="pfp" width="64" height="64">';
- } else {
- echo "<p>You don't have profile picture</p>";
- }
- ?>
- <div>
- <input type="file" name="pfp">
- <?php if ($has_pfp): ?>
- <a href="/account/delete.php?pfp=true">
- <img src="/static/img/icons/bin.png" alt="Remove profile picture"
- title="Remove profile picture">
- </a>
- <?php endif; ?>
- </div>
-
- <h3>Profile banner</h3>
- <?php
- $has_banner = is_dir("../static/userdata/banners/" . $_SESSION["user_id"]);
- if ($has_banner) {
- echo '<img src="/static/userdata/banners/' . $_SESSION["user_id"] . '/2x.webp" id="banner" width="256">';
- } else {
- echo "<p>You don't have profile banner</p>";
- }
- ?>
- <div>
- <input type="file" name="banner">
- <?php if ($has_banner): ?>
- <a href="/account/delete.php?banner=true">
- <img src="/static/img/icons/bin.png" alt="Remove banner" title="Remove banner">
- </a>
- <?php endif; ?>
- </div>
-
- <h3>Personal badge</h3>
- <?php
- $stmt = $db->prepare("SELECT badge_id FROM user_badges WHERE user_id = ?");
- $stmt->execute([$_SESSION["user_id"]]);
-
- $has_badge = false;
-
- if ($row = $stmt->fetch()) {
- echo '<div class="box row items-center justify-between">';
- echo '<img src="/static/userdata/badges/' . $row["badge_id"] . '/1x.webp" id="badge">';
- echo '<img src="/static/userdata/badges/' . $row["badge_id"] . '/2x.webp" id="badge">';
- echo '<img src="/static/userdata/badges/' . $row["badge_id"] . '/3x.webp" id="badge">';
- echo '</div>';
- $has_badge = true;
- } else {
- echo "<p>You don't have personal badge</p>";
- }
- ?>
- <div>
- <input type="file" name="badge">
- <?php if ($has_badge): ?>
- <a href="/account/delete.php?badge=true">
- <img src="/static/img/icons/bin.png" alt="Remove badge" title="Remove badge">
- </a>
- <?php endif; ?>
- </div>
-
- <h3>Username</h3>
- <input type="text" name="username" id="username" value="<?php echo $_SESSION["user_name"] ?>">
-
- <button type="submit">Save</button>
- </form>
-
- <hr>
-
- <div>
- <h2>Connections</h2>
- <div>
- <?php
- $stmt = $db->prepare("SELECT * FROM connections WHERE user_id = ?");
- $stmt->execute([$_SESSION["user_id"]]);
- $connections = $stmt->fetchAll();
- $platforms = ["twitch"];
-
- foreach ($platforms as $platform) {
- $connection = null;
- $key = array_search($platform, array_column($connections, "platform"));
-
- if (!is_bool($key)) {
- $connection = $connections[$key];
- }
-
- echo "<div class='box $platform row small-gap items-center'>";
- echo "<div><img src='/static/img/icons/connections/$platform.webp' alt='' width='52' height='52' /></div>";
-
- echo "<div class='column grow'>";
- echo "<b>" . ucfirst($platform) . "</b>";
-
- // TODO: check if connection is still alive
- if ($connection == null) {
- echo "<i>Not connected</i>";
- } else {
- echo "<i>" . $connection["alias_id"] . "</i>";
- }
-
- echo "</div>";
-
- echo "<div class='column'>";
-
- if ($connection == null) {
- echo "<a href='/account/login/$platform.php'>";
- echo '<img src="/static/img/icons/disconnect.png" alt="Connect" title="Connect" />';
- echo "</a>";
- } else {
- echo "<a href='/account/login/$platform.php?disconnect'>";
- echo '<img src="/static/img/icons/connect.png" alt="Disconnect" title="Disconnect" />';
- echo "</a>";
- }
-
- echo "</div></div>";
- }
- ?>
- </div>
- </div>
-
- <hr>
-
- <form action="/account/security.php" method="post">
- <h2>Security & Privacy</h2>
- <div>
- <?php
- $stmt = $db->prepare("SELECT CASE WHEN password IS NOT NULL THEN 1 ELSE 0 END as set_password FROM users WHERE id = ?");
- $stmt->execute([$_SESSION["user_id"]]);
- $set_password = $stmt->fetch()[0];
- if ($set_password): ?>
- <label for="password-current">Current password:</label>
- <input type="password" name="password-current" id="form-password-current" required>
- <?php endif; ?>
- <label for="password-new">New password:</label>
- <input type="password" name="password-new" id="form-password-new">
- </div>
- <div>
- <input type="checkbox" name="make-private" value="1" id="form-make-private" <?php
- $stmt = $db->prepare("SELECT private_profile FROM user_preferences WHERE id = ?");
- $stmt->execute([$_SESSION["user_id"]]);
- if (intval($stmt->fetch()[0]) == 1) {
- echo 'checked';
- }
- ?>>
- <label for="make-private" class="inline">Make profile private</label>
- <p class="font-small">Enabling this feature will hide your authorship of uploaded emotes and
- actions.</p>
-
- </div>
- <div>
- <input type="checkbox" name="signout-everywhere" value="1" id="form-signout-everywhere">
- <label for="signout-everywhere" class="inline">Sign out everywhere</label>
- </div>
-
- <button type="submit">Apply</button>
- </form>
-
- <a href="/account/delete.php?profile=true" class="red button" style="text-align: center;">Delete
- me</a>
- </section>
- </section>
- </div>
- </div>
-</body>
-
-<script>
- const username = document.getElementById("username");
- let validUsername = "";
-
- username.addEventListener("input", (e) => {
- const regex = <?php echo ACCOUNT_USERNAME_REGEX ?>;
-
- if (regex.test(e.target.value) && e.target.value.length <= <?php echo ACCOUNT_USERNAME_LENGTH[1] ?>) {
- validUsername = e.target.value;
- } else {
- e.target.value = validUsername;
- }
- });
-</script>
-
-</html> \ No newline at end of file