From 8b88dffd84189de8bdb541ca9cfc590642d8a631 Mon Sep 17 00:00:00 2001 From: Samuel Walker Date: Fri, 12 Jul 2024 21:11:52 -0600 Subject: [PATCH] Created Administrative Sign in screen --- FCLauncher/src-tauri/Cargo.toml | 5 +--- FCLauncher/src-tauri/src/admin.rs | 15 ++++++++++ FCLauncher/src-tauri/src/ftp.rs | 11 +++++-- FCLauncher/src-tauri/src/main.rs | 3 +- FCLauncher/src/Admin.html | 30 +++++++++++++++++++ FCLauncher/src/Login.html | 33 +++++++++++++++++++++ FCLauncher/src/admin.js | 36 ++++++++++++++++++++++ FCLauncher/src/assets/back.png | Bin 0 -> 4841 bytes FCLauncher/src/assets/settings.jpg | Bin 0 -> 43078 bytes FCLauncher/src/assets/settings.png | Bin 0 -> 8735 bytes FCLauncher/src/index.html | 1 + FCLauncher/src/login.js | 37 +++++++++++++++++++++++ FCLauncher/src/main.js | 11 +++++++ FCLauncher/src/styles.css | 46 +++++++++++++++++++++++++++++ 14 files changed, 221 insertions(+), 7 deletions(-) create mode 100644 FCLauncher/src-tauri/src/admin.rs create mode 100644 FCLauncher/src/Admin.html create mode 100644 FCLauncher/src/Login.html create mode 100644 FCLauncher/src/admin.js create mode 100644 FCLauncher/src/assets/back.png create mode 100644 FCLauncher/src/assets/settings.jpg create mode 100644 FCLauncher/src/assets/settings.png create mode 100644 FCLauncher/src/login.js diff --git a/FCLauncher/src-tauri/Cargo.toml b/FCLauncher/src-tauri/Cargo.toml index 9de253f..66df6fa 100644 --- a/FCLauncher/src-tauri/Cargo.toml +++ b/FCLauncher/src-tauri/Cargo.toml @@ -21,11 +21,8 @@ zip-extract = "0.1.3" dirs = "5.0.1" gethostname = "0.4.3" self_update = "0.40.0" +parking_lot = "0.12.3" [features] # This feature is used for production builds or when a dev server is not specified, DO NOT REMOVE!! custom-protocol = ["tauri/custom-protocol"] - -[[bin]] -name = "FCLauncher" -path = "src/main.rs" diff --git a/FCLauncher/src-tauri/src/admin.rs b/FCLauncher/src-tauri/src/admin.rs new file mode 100644 index 0000000..e3cf0e7 --- /dev/null +++ b/FCLauncher/src-tauri/src/admin.rs @@ -0,0 +1,15 @@ +use crate::ftp::{self, test_cred}; + +static USERNAME: parking_lot::Mutex = parking_lot::const_mutex(String::new()); +static PASSWORD: parking_lot::Mutex = parking_lot::const_mutex(String::new()); + +#[tauri::command] +pub fn login(username: String, password: String, window: tauri::Window) { + if(test_cred(username.as_str(), password.as_str())){ + *USERNAME.lock() = username; + *PASSWORD.lock() = password; + window.emit("Login_Success", {}); + }else{ + window.emit("Login_Failed", {}); + } +} \ No newline at end of file diff --git a/FCLauncher/src-tauri/src/ftp.rs b/FCLauncher/src-tauri/src/ftp.rs index 16a3302..2daae13 100644 --- a/FCLauncher/src-tauri/src/ftp.rs +++ b/FCLauncher/src-tauri/src/ftp.rs @@ -12,6 +12,10 @@ fn ftp_connection_anonymous() -> Result{ ftp_connection("anonymous", "anonymous@") } +pub fn test_cred(username: &str, password: &str) -> bool{ + return ftp_connection(username, password).is_ok(); +} + fn ftp_connection(username: &str, password: &str) -> Result{ let ftp_stream = NativeTlsFtpStream::connect("gitea.piwalker.net:21").unwrap_or_else(|err| @@ -20,10 +24,13 @@ fn ftp_connection(username: &str, password: &str) -> Result, file: PathBuf , mut writer: impl Write, mut callback: impl FnMut(Option, usize, usize)) -> Result { let mut ftp_stream = ftp_connection_anonymous().unwrap(); let file = file.to_str().unwrap().replace("\\", "/"); diff --git a/FCLauncher/src-tauri/src/main.rs b/FCLauncher/src-tauri/src/main.rs index 785ce12..2f5b79c 100644 --- a/FCLauncher/src-tauri/src/main.rs +++ b/FCLauncher/src-tauri/src/main.rs @@ -15,6 +15,7 @@ mod prism; mod system_dirs; mod util; mod modpack; +mod admin; #[derive(Serialize, Deserialize)] struct ModpackEntry{ @@ -33,7 +34,7 @@ fn main() { modpack::get_modpacks(); //prism::install_prism(); tauri::Builder::default() - .invoke_handler(tauri::generate_handler![greet, modpack::get_modpacks, modpack::launch_modpack, prism::launch_prism, prism::install_prism]) + .invoke_handler(tauri::generate_handler![greet, modpack::get_modpacks, modpack::launch_modpack, prism::launch_prism, prism::install_prism, admin::login]) .run(tauri::generate_context!()) .expect("error while running tauri application"); } diff --git a/FCLauncher/src/Admin.html b/FCLauncher/src/Admin.html new file mode 100644 index 0000000..b3cfc72 --- /dev/null +++ b/FCLauncher/src/Admin.html @@ -0,0 +1,30 @@ + + + + + + + Tauri App + + + + + + + + + + +
+
+
+ + +
+

Administration

+
+ + diff --git a/FCLauncher/src/Login.html b/FCLauncher/src/Login.html new file mode 100644 index 0000000..6bfcfe9 --- /dev/null +++ b/FCLauncher/src/Login.html @@ -0,0 +1,33 @@ + + + + + + + Tauri App + + + + + + + + + + + + +
+

Username or Password is incorrect!

+ + +
+ + +
+
+ + diff --git a/FCLauncher/src/admin.js b/FCLauncher/src/admin.js new file mode 100644 index 0000000..d9f5c3b --- /dev/null +++ b/FCLauncher/src/admin.js @@ -0,0 +1,36 @@ +const { invoke } = window.__TAURI__.tauri; +const { listen } = window.__TAURI__.event; +const { ask } = window.__TAURI__.dialog; +const downBar = document.querySelector(".progressFinished"); +//import { listen } from '@tauri-apps/api'; + +const download_progress = listen("download_progress", (progress) => { + console.log("Downloading"); + //console.log("Downloaded "+progress.payload.downloaded/(1024*1024) +"MB / " + progress.payload.total/(1024*1024) + "MB"); + let downProgress = (progress.payload.downloaded/(1024*1024)).toFixed(2); + let downTotal = (progress.payload.total/(1024*1024)).toFixed(2); + document.getElementById("download_name").textContent = "Downloading "+progress.payload.download_name; + document.getElementById("download_progress").textContent = downProgress + "MB / "+downTotal+"MB"; + document.getElementById("launchGame").disabled = true; + downBar.style.width = `${(progress.payload.downloaded / progress.payload.total) * 100}%`; + document.querySelector(".progress").style.visibility = "visible"; +}); + +const download_finished = listen("download_finished", (event) => { + document.getElementById("download_name").textContent = ""; + document.getElementById("download_progress").textContent = ""; + document.getElementById("launchGame").disabled = false; + document.getElementById("launchGame").textContent ="Launch Minecraft"; + downBar.style.width = 0; + document.querySelector(".progress").style.visibility = "hidden"; +}); + +window.addEventListener("DOMContentLoaded", () => { + + document.getElementById("back").addEventListener("click", back); + +}); + +function back(){ + window.location.href = "index.html"; +} \ No newline at end of file diff --git a/FCLauncher/src/assets/back.png b/FCLauncher/src/assets/back.png new file mode 100644 index 0000000000000000000000000000000000000000..32cd3770374af9f3d7fad4b643c146b94210f09d GIT binary patch literal 4841 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 literal 0 HcmV?d00001 diff --git a/FCLauncher/src/assets/settings.jpg b/FCLauncher/src/assets/settings.jpg new file mode 100644 index 0000000000000000000000000000000000000000..304202fd96c94b9a65d1bd140b8c74821daac9cb GIT binary patch literal 43078 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 KAA3Fi8v8%0z&5e~ literal 0 HcmV?d00001 diff --git a/FCLauncher/src/assets/settings.png b/FCLauncher/src/assets/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..54031081bb34600c9d3a24076e3d1619e07b55e6 GIT binary patch literal 8735 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 Ps0z3)@o+l1n4A1RJuW>L literal 0 HcmV?d00001 diff --git a/FCLauncher/src/index.html b/FCLauncher/src/index.html index a7b97d8..d342cf5 100644 --- a/FCLauncher/src/index.html +++ b/FCLauncher/src/index.html @@ -15,6 +15,7 @@
diff --git a/FCLauncher/src/login.js b/FCLauncher/src/login.js new file mode 100644 index 0000000..f959680 --- /dev/null +++ b/FCLauncher/src/login.js @@ -0,0 +1,37 @@ +const { invoke } = window.__TAURI__.tauri; +const { listen } = window.__TAURI__.event; +const { ask } = window.__TAURI__.dialog; +const downBar = document.querySelector(".progressFinished"); +//import { listen } from '@tauri-apps/api'; + +window.addEventListener("DOMContentLoaded", () => { + + document.getElementById("back").addEventListener("click", back); + document.getElementById("Cancel").addEventListener("click", back); + document.getElementById("Login").addEventListener("click", login); + document.getElementById("Password").addEventListener("keypress", keypress); + +}); + +function back(){ + window.location.href = "index.html"; +} + +function login(){ + invoke("login", { username: document.getElementById("Username").value, password: document.getElementById("Password").value}); +} + +function keypress(e){ + if(e.keyCode === 13){ + e.preventDefault(); + login(); + } +} + +const failed = listen("Login_Failed", (event) => { + document.getElementById("Incorrect").style.visibility = "visible"; +}) + +const success = listen("Login_Success", (event) => { + window.location.href = "Admin.html"; +}) \ No newline at end of file diff --git a/FCLauncher/src/main.js b/FCLauncher/src/main.js index 7f7808e..9c73265 100644 --- a/FCLauncher/src/main.js +++ b/FCLauncher/src/main.js @@ -33,6 +33,8 @@ window.addEventListener("DOMContentLoaded", () => { document.getElementById("launchGame").addEventListener("click", gameLaunch); document.getElementById("prism").addEventListener("click", prism); + document.getElementById("settings").addEventListener("click", login); + document.getElementById("back").addEventListener("click", back); }); function packSelect() { @@ -40,6 +42,15 @@ function packSelect() { } +function login(){ + window.location.href = "Login.html"; +} + +function back(){ + console.log("test"); + window.location.href = "index.html"; +} + function load() { console.log("loading"); var dropdown = document.getElementById("Modpacks"); diff --git a/FCLauncher/src/styles.css b/FCLauncher/src/styles.css index 969ac31..c704f69 100644 --- a/FCLauncher/src/styles.css +++ b/FCLauncher/src/styles.css @@ -228,3 +228,49 @@ button { display: block; margin: 0.5em; } + +#settings{ + width: 2em; + height: 2.5em; + top: 5px; + left: 5px; + float: right; + position: absolute; + background-image: url('assets/settings.png'); + background-size:cover; + background-repeat: no-repeat; +} + +#back{ + width: 2em; + height: 2.5em; + top: 5px; + left: 5px; + float: right; + position: absolute; + background-image: url('assets/back.png'); + background-size:cover; + background-repeat: no-repeat; +} + +.container input{ + margin: 0.5em; + width: 45% +} + +.loginButtons{ + display: flex; + margin: 0.5em; + flex-direction: row; + margin-left: auto; + margin-right: auto; + width: 50%; + gap: .5em; +} + +.Error{ + color: black; + background-color: red; + margin: 0; + visibility: hidden; +} \ No newline at end of file