X-Git-Url: https://jfr.im/git/irc/unrealircd/unrealircd-webpanel.git/blobdiff_plain/ce9cf366c3d7fdf1f45129f70eb75ebce522d1c4..ea90b321a4b3768028d841b307c362af97a5e6e1:/plugins/sql_auth/sql_auth.php
diff --git a/plugins/sql_auth/sql_auth.php b/plugins/sql_auth/sql_auth.php
index 1b77ba9..16b1a9a 100644
--- a/plugins/sql_auth/sql_auth.php
+++ b/plugins/sql_auth/sql_auth.php
@@ -1,9 +1,7 @@
id) // doesn't exist, add it with full privileges
{
- create_new_user(["user_name" => SQL_DEFAULT_USER['username'], "user_pass" => SQL_DEFAULT_USER['password']]);
+ $user = [];
+ $user['user_name'] = SQL_DEFAULT_USER['username'];
+ $user['user_pass'] = SQL_DEFAULT_USER['password'];
+ $user['err'] = "";
+ create_new_user($user);
}
+ $lkup = new PanelUser(SQL_DEFAULT_USER['username']);
+ if (!user_can($lkup, PERMISSION_MANAGE_USERS))
+ $lkup->add_permission(PERMISSION_MANAGE_USERS);
}
}
- public static function add_navbar(&$pages)
+
+ public static function add_footer_info($empty)
{
- session_start();
- if (!unreal_get_current_user()->id)
- {
- $pages = NULL;
+ if (!($user = unreal_get_current_user()))
return;
+
+ else {
+ echo "Admin Panel v" . WEBPANEL_VERSION . "
";
}
- $pages["Panel Access"] = "plugins/sql_auth/";
- if (isset($_SESSION['id']))
- {
- $pages["Logout"] = "plugins/sql_auth/login.php?logout=true";
- }
}
+ public static function add_pre_overview_card($empty)
+ {
+ if (defined('SQL_DEFAULT_USER'))
+ Message::Fail("Warning: SQL_DEFAULT_USER is set in config.php. You should remove that item now, as it is only used during installation.");
+ }
+
+ /* pre-Header hook */
public static function session_start($n)
{
-
- if (!isset($_SESSION['id']))
+ $current_page = $_SERVER['REQUEST_URI'];
+ if (str_ends_with($current_page,"setup.php"))
+ return;
+
+ if (!isset($_SESSION))
{
+ session_set_cookie_params(3600);
+ session_start();
+ }
+ if (!isset($_SESSION['id']) || empty($_SESSION))
+ {
+
$tok = split($_SERVER['SCRIPT_FILENAME'], "/");
if ($check = security_check() && $tok[count($tok) - 1] !== "error.php") {
- header("Location: " . BASE_URL . "plugins/sql_auth/error.php");
+ header("Location: " . get_config("base_url") . "plugins/sql_auth/error.php");
die();
}
+ header("Location: ".get_config("base_url")."login/?redirect=".urlencode($current_page));
+ die();
}
else
{
- if (!unreal_get_current_user()->id) // user no longer exists
+ if (!unreal_get_current_user()) // user no longer exists
{
session_destroy();
- header("Location: ".BASE_URL."plugins/sql_auth/login.php");
+ header("Location: ".get_config("base_url")."login");
die();
}
+ // you'll be automatically logged out after one hour of inactivity
+ $_SESSION['last-activity'] = time();
+
}
}
@@ -73,73 +105,209 @@ class sql_auth
*/
public static function create_tables()
{
+ $script = $_SERVER['SCRIPT_FILENAME'];
+ if (str_ends_with($script,"setup.php"))
+ return;
$conn = sqlnew();
- $conn->query("CREATE TABLE IF NOT EXISTS " . SQL_PREFIX . "users (
- user_id int AUTO_INCREMENT NOT NULL,
- user_name VARCHAR(255) NOT NULL,
- user_pass VARCHAR(255) NOT NULL,
-
- user_fname VARCHAR(255),
- user_lname VARCHAR(255),
- user_bio VARCHAR(255),
- created VARCHAR(255),
- PRIMARY KEY (user_id)
- )");
- $conn->query("CREATE TABLE IF NOT EXISTS " . SQL_PREFIX . "user_meta (
- meta_id int AUTO_INCREMENT NOT NULL,
- user_id int NOT NULL,
- meta_key VARCHAR(255) NOT NULL,
- meta_value VARCHAR(255),
- PRIMARY KEY (meta_id)
- )");
- $conn->query("CREATE TABLE IF NOT EXISTS " . SQL_PREFIX . "auth_settings (
- id int AUTO_INCREMENT NOT NULL,
- setting_key VARCHAR(255) NOT NULL,
- setting_value VARCHAR(255),
- PRIMARY KEY (id)
- )");
+ $stmt = $conn->query("SHOW TABLES LIKE '".get_config("mysql::table_prefix")."%'");
+ if ($stmt->rowCount() < 4)
+ {
+ header("Location: ".get_config("base_url")."plugins/sql_auth/setup.php");
+ die();
+ }
}
- /**
- * Summary of add_overview_card
- * @param mixed $stats
- * @return void
- */
- public static function add_overview_card(object &$stats) : void
+ /* We convert $u with a full user as an object ;D*/
+ public static function get_user(&$u)
+ {
+ $id = $u['id'];
+ $name = $u['name'];
+ $conn = sqlnew();
+
+ if ($id)
+ {
+ $prep = $conn->prepare("SELECT * FROM " . get_config("mysql::table_prefix") . "users WHERE user_id = :id LIMIT 1");
+ $prep->execute(["id" => strtolower($id)]);
+ }
+ elseif ($name)
+ {
+ $prep = $conn->prepare("SELECT * FROM " . get_config("mysql::table_prefix") . "users WHERE LOWER(user_name) = :name LIMIT 1");
+ $prep->execute(["name" => strtolower($name)]);
+ }
+ $data = NULL;
+ $obj = (object) [];
+ if ($prep)
+ $data = $prep->fetchAll();
+ if (isset($data[0]) && $data = $data[0])
+ {
+ $obj->id = $data['user_id'];
+ $obj->username = $data['user_name'];
+ $obj->passhash = $data['user_pass'];
+ $obj->first_name = $data['user_fname'] ?? NULL;
+ $obj->last_name = $data['user_lname'] ?? NULL;
+ $obj->created = $data['created'];
+ $obj->bio = $data['user_bio'];
+ $obj->email = $data['user_email'];
+ $obj->user_meta = (new PanelUser_Meta($obj->id))->list;
+ }
+ $u['object'] = $obj;
+ }
+
+ public static function get_usermeta(&$u)
+ {
+ $list = &$u['meta'];
+ $id = $u['id'];
+ $conn = sqlnew();
+ if (isset($id))
+ {
+ $prep = $conn->prepare("SELECT * FROM " . get_config("mysql::table_prefix") . "user_meta WHERE user_id = :id");
+ $prep->execute(["id" => $id]);
+ }
+ foreach ($prep->fetchAll() as $row)
+ {
+ $list[$row['meta_key']] = $row['meta_value'];
+ }
+ }
+
+ public static function add_usermeta(&$meta)
+ {
+ $meta = $meta['meta'];
+ $conn = sqlnew();
+ /* check if it exists first, update it if it does */
+ $query = "SELECT * FROM " . get_config("mysql::table_prefix") . "user_meta WHERE user_id = :id AND meta_key = :key";
+ $stmt = $conn->prepare($query);
+ $stmt->execute(["id" => $meta['id'], "key" => $meta['key']]);
+ if ($stmt->rowCount()) // it exists, update instead of insert
+ {
+ $query = "UPDATE " . get_config("mysql::table_prefix") . "user_meta SET meta_value = :value WHERE user_id = :id AND meta_key = :key";
+ $stmt = $conn->prepare($query);
+ $stmt->execute($meta);
+ if ($stmt->rowCount())
+ return true;
+ return false;
+ }
+
+ else
+ {
+ $query = "INSERT INTO " . get_config("mysql::table_prefix") . "user_meta (user_id, meta_key, meta_value) VALUES (:id, :key, :value)";
+ $stmt = $conn->prepare($query);
+ $stmt->execute($meta);
+ if ($stmt->rowCount())
+ return true;
+ return false;
+ }
+ }
+ public static function del_usermeta(&$u)
+ {
+ $conn = sqlnew();
+ $query = "DELETE FROM " . get_config("mysql::table_prefix") . "user_meta WHERE user_id = :id AND meta_key = :key";
+ $stmt = $conn->prepare($query);
+ $stmt->execute($u['meta']);
+ if ($stmt->rowCount())
+ return true;
+ return false;
+ }
+ public static function user_create(&$u)
{
- $num_of_panel_admins = sqlnew()->query("SELECT COUNT(*) FROM " . SQL_PREFIX . "users")->fetchColumn();
- ?>
-
-