diff --git a/.gitignore b/.gitignore index 8318c86..b90f3e8 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -Test \ No newline at end of file +Test +backend/user.db \ No newline at end of file diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 94b9f06..5fda0f5 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -90,6 +90,7 @@ dependencies = [ "axum", "axum-server", "serde", + "sqlite", "tokio", "tower-http", "tracing-subscriber", @@ -107,6 +108,16 @@ version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +[[package]] +name = "cc" +version = "1.2.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e928d4b69e3077709075a938a05ffbedfa53a84c8f766efbf8220bb1ff60e1" +dependencies = [ + "find-msvc-tools", + "shlex", +] + [[package]] name = "cfg-if" version = "1.0.4" @@ -135,6 +146,12 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + [[package]] name = "fnv" version = "1.0.7" @@ -450,6 +467,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + [[package]] name = "proc-macro2" version = "1.0.106" @@ -563,6 +586,12 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook-registry" version = "1.4.8" @@ -595,6 +624,34 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "sqlite" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f66e9c01a11936154f3910dbba732c01f8b591543bc4d6672bddee79fd9c4783" +dependencies = [ + "sqlite3-sys", +] + +[[package]] +name = "sqlite3-src" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5b6d3c860886b0a33e69e421796a5f4a27f23597a182c2450f6d7ace5103120" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "sqlite3-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7781d97adc13a1d5081127a9ee29afad8427f3757bd984daf814d8265267039" +dependencies = [ + "sqlite3-src", +] + [[package]] name = "syn" version = "2.0.117" diff --git a/backend/Cargo.toml b/backend/Cargo.toml index a3725bf..98f43a9 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -10,3 +10,4 @@ serde = "1.0.228" tokio = { version = "1.50.0", features = ["full"] } tracing-subscriber = "0.3.23" tower-http = { version = "0.6", features = ["fs"] } +sqlite = "*" diff --git a/backend/src/main.rs b/backend/src/main.rs index 476046b..e26e427 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -4,9 +4,12 @@ use std::path::Path; use tokio::fs::File; use tokio::io::{self, AsyncReadExt}; use tower_http::services::ServeDir; +mod user; #[tokio::main] async fn main() { + let db = user::DataBase::open(String::from("user")); + db.create_table("users", "name TEXT, level TEXT, password TEXT"); let app = Router::new() .route("/", get(handler)) .route("/game", get(game)) @@ -34,6 +37,20 @@ async fn game() -> Html { Html(html_content) } +async fn register() -> Html { + let html_content = read_html_from_file("../web/templates/view/register.html") + .await + .unwrap_or_else(|_| "

Error loading HTML file

".to_string()); + Html(html_content) +} + +async fn login() -> Html { + let html_content = read_html_from_file("../web/templates/view/login.html") + .await + .unwrap_or_else(|_| "

Error loading HTML file

".to_string()); + Html(html_content) +} + async fn read_html_from_file>(path: P) -> io::Result { let mut file = File::open(path).await?; let mut contents = String::new(); diff --git a/backend/user.rs b/backend/src/user.rs similarity index 80% rename from backend/user.rs rename to backend/src/user.rs index d8d8ad0..f1fbaff 100644 --- a/backend/user.rs +++ b/backend/src/user.rs @@ -1,24 +1,17 @@ use sqlite::Connection; -// use sodiumoxide::crypto::secretbox; pub struct User { name: String, level: u32, - // password: [u8], } impl User { - pub fn open(name: String, level: u32, password: [u8]) -> User { - User {name, level, password} + pub fn open(name: String, level: u32) -> User { + User {name, level} } pub fn get_name(&self) -> String{return self.name.clone()} pub fn get_level(&self) -> u32{return self.level} - // pub fn get_password(&self) -> [u8]{return self.password.clone()} - - // pub fn check_password(&self,nonce:secretbox::Nonce,key:secretbox::Key){ - // assert!("" == secretbox::open(self.get_password(), &nonce, &key).unwrap()[..]); - // } }