From 312263219e8c3ae78b241104deccea4a82d767a2 Mon Sep 17 00:00:00 2001 From: cflip <36554078+cflip@users.noreply.github.com> Date: Sat, 21 Aug 2021 09:54:36 -0600 Subject: Add user generation numbers --- includes/model/User.php | 16 ++++++++++------ meta/setup.sql | 1 + register.php | 5 +++-- viewuser.php | 1 + 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/includes/model/User.php b/includes/model/User.php index e497fc6..8e28239 100755 --- a/includes/model/User.php +++ b/includes/model/User.php @@ -23,6 +23,7 @@ class User public $date_registered; public $level = 'user'; public $invite_code; + public $generation; private $has_value = false; @@ -30,7 +31,7 @@ class User // and PHP does not allow function overloading. public function get_by_id($id) { - $sql = "SELECT user_name, user_password, user_date_registered, user_level, user_invite_code FROM users WHERE user_id = ?;"; + $sql = "SELECT user_name, user_password, user_date_registered, user_level, user_invite_code, user_generation FROM users WHERE user_id = ?;"; $result = Database::get()->query($sql, "i", $id); if (empty($result)) { @@ -43,6 +44,7 @@ class User $this->date_registered = $result[0]['user_date_registered']; $this->level = $result[0]['user_level']; $this->invite_code = $result[0]['user_invite_code']; + $this->generation = $result[0]['user_generation']; $this->has_value = true; } @@ -50,7 +52,7 @@ class User // TODO: Duplicated code, there should be a common database read function for all models public function get_by_name($name) { - $sql = "SELECT user_id, user_password, user_date_registered, user_level, user_invite_code FROM users WHERE user_name = ?;"; + $sql = "SELECT user_id, user_password, user_date_registered, user_level, user_invite_code, user_generation FROM users WHERE user_name = ?;"; $result = Database::get()->query($sql, "s", $name); if (empty($result)) { @@ -63,13 +65,14 @@ class User $this->date_registered = $result[0]['user_date_registered']; $this->level = $result[0]['user_level']; $this->invite_code = $result[0]['user_invite_code']; + $this->generation = $result[0]['user_generation']; $this->has_value = true; } public function get_by_invite_code($invite_code) { - $sql = "SELECT user_id, user_name, user_password, user_date_registered, user_level FROM users WHERE user_invite_code = ?;"; + $sql = "SELECT user_id, user_name, user_password, user_date_registered, user_level, user_generation FROM users WHERE user_invite_code = ?;"; $result = Database::get()->query($sql, "s", $invite_code); if (empty($result)) { @@ -82,6 +85,7 @@ class User $this->date_registered = $result[0]['user_date_registered']; $this->level = $result[0]['user_level']; $this->invite_code = $invite_code; + $this->generation = $result[0]['user_generation']; $this->has_value = true; } @@ -91,12 +95,12 @@ class User return $this->has_value; } - public static function register(string $username, string $password) + public static function register(string $username, string $password, int $generation) { - $sql = "INSERT INTO users(user_name, user_password, user_date_registered, user_invite_code) VALUES(?, ?, NOW(), ?);"; + $sql = "INSERT INTO users(user_name, user_password, user_date_registered, user_invite_code, user_generation) VALUES(?, ?, NOW(), ?, ?);"; $pass_hash = password_hash($password, PASSWORD_DEFAULT); $invite_code = generate_invite_code(); - Database::get()->query($sql, "sss", $username, $pass_hash, $invite_code); + Database::get()->query($sql, "sssi", $username, $pass_hash, $invite_code, $generation); } public function update_invite_code() diff --git a/meta/setup.sql b/meta/setup.sql index 5d63ff7..dff7769 100644 --- a/meta/setup.sql +++ b/meta/setup.sql @@ -5,6 +5,7 @@ CREATE TABLE users ( user_level ENUM('user', 'moderator', 'administrator') NOT NULL DEFAULT 'user', user_date_registered DATETIME NOT NULL, user_invite_code VARCHAR(8) NOT NULL, + user_generation INT NOT NULL, UNIQUE INDEX user_name_unique (user_name), UNIQUE INDEX user_invite_unique (user_invite_code), PRIMARY KEY (user_id) diff --git a/register.php b/register.php index 44ab879..e286f01 100755 --- a/register.php +++ b/register.php @@ -32,12 +32,13 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') { $invite_code = $form->validate_invite_code($_POST['invite_code']); $form->on_success(function () use ($username, $password, $invite_code) { - User::register($username, $password); - $inviter = new User(); $inviter->get_by_invite_code($invite_code); $inviter->update_invite_code(); + $generation = $inviter->generation + 1; + User::register($username, $password, $generation); + echo '
Account successfully registered! You can now sign in
'; }); } diff --git a/viewuser.php b/viewuser.php index 9a42467..33d8636 100755 --- a/viewuser.php +++ b/viewuser.php @@ -25,6 +25,7 @@ if (!$current->has_value()) {Your invite code is = $current->invite_code ?>
-- cgit v1.2.3