From 88209d88236c3d865a9f5174a0dced31920859bf Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Thu, 26 Jan 2023 17:29:16 -0500 Subject: [PATCH] i did things --- .gitignore | 2 + Cargo.lock | 1063 ++++++++++++++++++++++++++++++++++++ Cargo.toml | 17 + public/404.html | 18 + public/css/404.css | 20 + public/css/console.css | 60 ++ public/css/header.css | 55 ++ public/css/home.css | 182 ++++++ public/css/login.css | 47 ++ public/css/main.css | 307 +++++++++++ public/css/people.css | 44 ++ public/css/profile.css | 121 ++++ public/fonts/facebook.otf | Bin 0 -> 25740 bytes public/fonts/sfpro.otf | Bin 0 -> 298944 bytes public/fonts/sfprobold.otf | Bin 0 -> 334728 bytes public/home.html | 17 + public/js/api.js | 63 +++ public/js/header.js | 25 + public/js/home.js | 233 ++++++++ public/js/login.js | 29 + public/js/main.js | 22 + public/js/people.js | 65 +++ public/js/profile.js | 88 +++ public/login.html | 170 ++++++ public/people.html | 15 + public/profile.html | 17 + src/api/auth.rs | 98 ++++ src/api/mod.rs | 4 + src/api/pages.rs | 58 ++ src/api/posts.rs | 102 ++++ src/api/users.rs | 52 ++ src/database/mod.rs | 16 + src/database/posts.rs | 94 ++++ src/database/sessions.rs | 42 ++ src/database/users.rs | 79 +++ src/main.rs | 48 ++ src/types/extract.rs | 65 +++ src/types/mod.rs | 5 + src/types/post.rs | 83 +++ src/types/response.rs | 60 ++ src/types/session.rs | 38 ++ src/types/user.rs | 79 +++ 42 files changed, 3603 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 public/404.html create mode 100644 public/css/404.css create mode 100644 public/css/console.css create mode 100644 public/css/header.css create mode 100644 public/css/home.css create mode 100644 public/css/login.css create mode 100644 public/css/main.css create mode 100644 public/css/people.css create mode 100644 public/css/profile.css create mode 100755 public/fonts/facebook.otf create mode 100644 public/fonts/sfpro.otf create mode 100644 public/fonts/sfprobold.otf create mode 100644 public/home.html create mode 100644 public/js/api.js create mode 100644 public/js/header.js create mode 100644 public/js/home.js create mode 100644 public/js/login.js create mode 100644 public/js/main.js create mode 100644 public/js/people.js create mode 100644 public/js/profile.js create mode 100644 public/login.html create mode 100644 public/people.html create mode 100644 public/profile.html create mode 100644 src/api/auth.rs create mode 100644 src/api/mod.rs create mode 100644 src/api/pages.rs create mode 100644 src/api/posts.rs create mode 100644 src/api/users.rs create mode 100644 src/database/mod.rs create mode 100644 src/database/posts.rs create mode 100644 src/database/sessions.rs create mode 100644 src/database/users.rs create mode 100644 src/main.rs create mode 100644 src/types/extract.rs create mode 100644 src/types/mod.rs create mode 100644 src/types/post.rs create mode 100644 src/types/response.rs create mode 100644 src/types/session.rs create mode 100644 src/types/user.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bce9d97 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +xssbook.db \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..f275ca6 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,1063 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "async-trait" +version = "0.1.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eff18d764974428cf3a9328e23fc5c986f5fbed46e6cd4cdf42544df5d297ec1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "axum" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5694b64066a2459918d8074c2ce0d5a88f409431994c2356617c8ae0c4721fc" +dependencies = [ + "async-trait", + "axum-core", + "bitflags", + "bytes", + "futures-util", + "headers", + "http", + "http-body", + "hyper", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-http", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cae3e661676ffbacb30f1a824089a8c9150e71017f7e1e38f2aa32009188d34" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "mime", + "rustversion", + "tower-layer", + "tower-service", +] + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block-buffer" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bytes" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" + +[[package]] +name = "cc" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cookie" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "cpufeatures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "digest" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" + +[[package]] +name = "futures-macro" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" + +[[package]] +name = "futures-task" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" + +[[package]] +name = "futures-util" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +dependencies = [ + "futures-core", + "futures-macro", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashlink" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69fe1fcf8b4278d860ad0548329f892a3631fb63f82574df68275f34cdbe0ffa" +dependencies = [ + "hashbrown", +] + +[[package]] +name = "headers" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" +dependencies = [ + "base64", + "bitflags", + "bytes", + "headers-core", + "http", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" +dependencies = [ + "http", +] + +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + +[[package]] +name = "http" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "http-range-header" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "hyper" +version = "0.14.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "itoa" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" + +[[package]] +name = "libc" +version = "0.2.139" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" + +[[package]] +name = "libsqlite3-sys" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29f835d03d717946d28b1d1ed632eb6f0e24a299388ee623d0c23118d3e8a7fa" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "matchit" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "mime" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" + +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "mio" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys", +] + +[[package]] +name = "num_cpus" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "once_cell" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" + +[[package]] +name = "pin-project" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro2" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "rusqlite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e213bc3ecb39ac32e81e51ebe31fd888a940515173e3a18a35f8c6e896422a" +dependencies = [ + "bitflags", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "smallvec", +] + +[[package]] +name = "rustversion" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" + +[[package]] +name = "ryu" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "serde" +version = "1.0.152" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.152" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b04f22b563c91331a10074bda3dd5492e3cc39d56bd557e91c0af42b6c7341" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +dependencies = [ + "libc", +] + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "socket2" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "syn" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20518fe4a4c9acf048008599e464deb21beeae3d3578418951a189c235a7a9a8" + +[[package]] +name = "time" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" +dependencies = [ + "itoa", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + +[[package]] +name = "time-macros" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +dependencies = [ + "time-core", +] + +[[package]] +name = "tokio" +version = "1.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a12a59981d9e3c38d216785b0c37399f6e415e8d0712047620f189371b0bb" +dependencies = [ + "autocfg", + "bytes", + "libc", + "memchr", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys", +] + +[[package]] +name = "tokio-macros" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-util" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-cookies" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4efe6d9c78aae53650a340d0e702e4f103582dce6af6bf897dc1b56c8ed5d4f6" +dependencies = [ + "async-trait", + "axum-core", + "cookie", + "futures-util", + "http", + "parking_lot", + "pin-project-lite", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858" +dependencies = [ + "bitflags", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-range-header", + "httpdate", + "mime", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "tokio", + "tokio-util", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "log", + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "unicase" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-ident" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" + +[[package]] +name = "xssbook" +version = "0.0.1" +dependencies = [ + "axum", + "bytes", + "rand", + "rusqlite", + "serde", + "serde_json", + "time", + "tokio", + "tower", + "tower-cookies", + "tower-http", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..ce2f3f3 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "xssbook" +version = "0.0.1" +edition = "2021" + +[dependencies] +tokio = { version = "1.23.0", features = ["full"] } +axum = { version = "0.6.4", features = ["headers"] } +tower-http = { version = "0.3.5", features = ["fs"] } +tower-cookies = "0.8.0" +tower = "0.4.13" +serde = { version = "1.0.152", features = ["derive"] } +serde_json = "1.0" +rusqlite = { version = "0.28.0", features = ["bundled"] } +rand = "0.8.5" +time = "0.3.17" +bytes = "1.3.0" \ No newline at end of file diff --git a/public/404.html b/public/404.html new file mode 100644 index 0000000..04ddadc --- /dev/null +++ b/public/404.html @@ -0,0 +1,18 @@ + + + + + + + + XSSBook - Not Found + + + +
+ + Page not found. +
+ \ No newline at end of file diff --git a/public/css/404.css b/public/css/404.css new file mode 100644 index 0000000..38035a4 --- /dev/null +++ b/public/css/404.css @@ -0,0 +1,20 @@ +body { + background-color: #f0f2f5; +} + +.error { + display: flex; + justify-content: center; + align-items: center; + width: 100vw; + height: 100vh; + flex-direction: column; +} + +.error .logo { + font-size: 100px; +} + +.desc { + font-size: 40px; +} \ No newline at end of file diff --git a/public/css/console.css b/public/css/console.css new file mode 100644 index 0000000..bc07969 --- /dev/null +++ b/public/css/console.css @@ -0,0 +1,60 @@ +body { + margin: 0; + padding: 0; + background-color: #181818; + display: flex; + flex-direction: column-reverse; +} + +@font-face { + font-family: sfpro; + src: url("../fonts/sfpro.otf") format("opentype"); +} + +div { + background-color: #282828; + font-family: sfpro; + margin: 15px; + margin-bottom: 0px; + border-radius: 5px; + padding: 10px; + width: calc(100% - 50px) +} + +span { + display: inline-block; + padding: 0; + margin: 0; + color: #ffffff; + font-family: sfpro; + margin-right: 10px; +} + +.json span { + display: inline; + margin: 0; +} + +.key { + color: white; +} + +.value { + color: white; +} + +.boolean { + color: aqua; +} + +.null { + color: blue; +} + +.number { + color: yellow; +} + +.string { + color: #4ae04a +} \ No newline at end of file diff --git a/public/css/header.css b/public/css/header.css new file mode 100644 index 0000000..a491f33 --- /dev/null +++ b/public/css/header.css @@ -0,0 +1,55 @@ +#header { + height: 3.5em; + background-color: white; + position: fixed; + width: 100vw; + box-shadow: 0 2px 4px rgba(0, 0, 0, .05), 0 8px 16px rgba(0, 0, 0, .05); + display: flex; + align-items: center; + justify-content: space-between; + z-index: 5; +} + +.spacer { + margin-bottom: 5em; +} + +#header .logo { + position: absolute; + font-size: 2.5em; + padding-left: .5em; + padding-top: .2em; +} + +#header .buttons { + flex: 1; + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; +} + +#header .buttons a { + padding: 0px 50px; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + color: #606770; +} + +#header .buttons a:hover { + background-color: #dddfe2; +} + +.selected { + color: #1778f2 !important; + border-bottom: 3px solid #1778f2; +} + +#header .pfp, #header .pfp img { + position: absolute; + right: 1em; + top: .5em; +} \ No newline at end of file diff --git a/public/css/home.css b/public/css/home.css new file mode 100644 index 0000000..33d72c0 --- /dev/null +++ b/public/css/home.css @@ -0,0 +1,182 @@ +body { + background-color: #f0f2f5; +} + +#posts { + display: flex; + flex-direction: column; + align-items: center; +} + +.post, .create { + width: 40em; + height: fit-content; + background-color: white; + border-radius: 10px; + padding: 15px; + box-shadow: 0 2px 4px rgba(0, 0, 0, .05); + margin-bottom: 1.5em; +} + +.post { + padding-bottom: 0; +} + +.create { + display: flex; + flex-direction: row; +} + +.create button { + all: unset; + background-color: #f0f2f5; + border-radius: 3em; + margin-left: 1em; + flex: 1; +} + +.create button:hover { + background-color: #e4e6e8; + cursor: pointer; +} + +.create button p { + margin-left: 1em; + font-size: 18px; +} + +.postheader { + display: flex; + flex-direction: row; + margin-bottom: .5em; +} + +.postbuttons { + display: flex; + flex-direction: row; +} + +.postbuttons>span { + flex: 1; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + padding: 7px; + border-radius: 5px; + color: #606770; + margin: 3px +} + +.postbuttons>span:hover { + background-color: #e4e6e8; +} + +.postname { + margin-left: 1em; + display: flex; + flex-direction: column; +} + +.icons { + background-image: url('data:image/png;base64,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'); + display: inline-block; + width: 18px; + height: 18px; + background-size: auto; + background-repeat: no-repeat; + margin-right: .5em; + filter: invert(39%) sepia(21%) saturate(200%) saturate(109.5%) hue-rotate(174deg) brightness(94%) contrast(86%); +} + +.blue { + filter: invert(39%) sepia(57%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(147.75%) hue-rotate(202deg) brightness(97%) contrast(96%); +} + +.like { + background-position: 0px -132px; +} + +.comm { + background-position: 0px -113px; +} + +.createpost { + position: relative; + background-color: white; + width: 450px; + padding: 20px; + border-radius: .5em; + box-shadow: 0 2px 4px rgba(0, 0, 0, .1), 0 8px 16px rgba(0, 0, 0, .1); +} + +.createpost .postheader { + margin-top: 20px; +} + +.createpost textarea { + border: none; + resize: none; + outline: none; + font-family: sfpro; + font-size: 24px; + margin-top: 10px; + width: 100%; + height: 120px; + margin-bottom: 20px; +} + +.createpost>span { + margin-top: -10px; +} + +.primary { + margin: 0; + width: calc(100% - 20px); + font-family: sfprobold; + height: 15px; +} + +.close { + top: 1em; + right: 1em; +} + +.comment { + display: flex; + flex-direction: row; + margin-bottom: 10px; +} + +.comment p, .post p { + word-break: break-all; + white-space: normal; +} + +.comment>span { + display: flex; + flex-direction: column; + margin-left: 10px; + background-color: #f0f2f5; + border-radius: 10px; + padding: 10px; + padding-right: 10px; +} + +.larger { + font-size: 18px; +} + +.newcomment { + display: flex; + flex-direction: row; +} + +#comments input { + all: unset; + padding: 10px; + border-radius: 10px; + width: calc(100% - 20px); + background-color: #f0f2f5; + font-family: sfpro; +} \ No newline at end of file diff --git a/public/css/login.css b/public/css/login.css new file mode 100644 index 0000000..7e5cde7 --- /dev/null +++ b/public/css/login.css @@ -0,0 +1,47 @@ +.login { + background-color: #f0f2f5; + display: flex; + justify-content: center; + align-content: center; + flex-direction: row; + padding: 8em 0em; +} + +.prompt { + display: flex; + position: relative; + flex-direction: column; + background-color: white; + box-shadow: 0 2px 4px rgba(0, 0, 0, .1), 0 8px 16px rgba(0, 0, 0, .1); + border-radius: 8px; + width: 396px; + padding: 10px +} + +.show { + display: flex; + flex-direction: column; + justify-content: center; +} + +.login-button { + margin-bottom: 10px; + font-size: 20px; +} + +.newacc { + margin: 10px 70px; + margin-bottom: 20px; +} + +.signacc { + margin: 10px 70px; + margin-bottom: 0; +} + +@media (max-aspect-ratio: 2/3) { + .login { + flex-direction: column; + align-items: center; + } +} \ No newline at end of file diff --git a/public/css/main.css b/public/css/main.css new file mode 100644 index 0000000..c1b4fa2 --- /dev/null +++ b/public/css/main.css @@ -0,0 +1,307 @@ +body { + background-color: white; + width: 100vw; + height: 100vh; + margin: 0; + padding: 0; + display: flex; + flex-direction: column; +} + +@font-face { + font-family: facebook; + src: url("../fonts/facebook.otf") format("opentype"); +} + +@font-face { + font-family: sfpro; + src: url("../fonts/sfpro.otf") format("opentype"); +} + +@font-face { + font-family: sfprobold; + src: url("../fonts/sfprobold.otf") format("opentype"); +} + +.logo { + color: #1778f2; + font-size: 3.5em; + font-family: facebook; +} + +.text { + font-family: sfpro; + font-size: 28px; + font-weight: normal; + line-height: 32px; + width: 500px; +} + +.btext { + font-family: sfpro; + color: #1778f2 +} + +.error { + font-family: sfpro; + color: #f02849; + padding-top: 10px; + margin-bottom: -10px; + font-size: 15px; +} + +.gtext { + font-family: sfpro; + color: #606770 +} + +.label { + font-family: sfpro; + color: #606770; + font-size: 15px; + padding-top: 10px; + padding-left: 10px; +} + +.stext { + font-family: sfpro; + font-size: 10px; +} + +.mtext { + font-family: sfpro; + font-size: 15px; +} + +.ltext { + font-family: sfpro; + font-size: 22px; +} + +.ctext { + display: block; + font-family: sfpro; + text-align: center; +} + +a { + color: inherit; + text-decoration: none; + cursor: pointer; +} + +p { + padding: 0; + margin: 0; +} + +span { + padding: 0; + margin: 0; +} + +footer { + bottom: 0; + height: 400px; + background-color: white; +} + +input { + flex: 1; + font-family: sfpro; + background-color: white; + padding: 10px; + margin: 10px; + margin-bottom: 0; + border-radius: 5px; + border: 1px solid #dddfe2; + color: #1d2129; + font-size: 18px; +} + +.radiomenu { + display: flex; + flex-wrap: wrap; +} + +.radiomenu span { + display: inline-block; + position: relative; + font-family: sfpro; + background-color: white; + margin: 10px; + margin-bottom: 0; + border-radius: 5px; + border: 1px solid #dddfe2; + color: #1d2129; + font-size: 15px; + flex: 1 0 auto; +} + +.radiomenu span label { + padding: 10px; + display: block; + box-sizing: border-box; + width: auto; + color: #1d2129; +} + +[type="radio"] { + height: 40px; + margin: 0; + position: absolute; + right: 10px; + top: 0; + text-align: left; +} + +select { + all: unset; + flex: 1; + font-family: sfpro; + background-color: white; + padding: 10px; + margin: 10px; + margin-bottom: 0; + border-radius: 5px; + border: 1px solid #dddfe2; + color: #1d2129; + font-size: 15px; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYAgMAAACdGdVrAAAADFBMVEVMaXEFBQUFBQUFBQXG+MOgAAAAA3RSTlMAn3BcqiM3AAAAOUlEQVQIW53BsQ2AMAwAMJelV6C80qPYw4k9JmskbqA2px5uNIlcoxF7FmbFxuhckA2iwNzgev3wAR4FDUQbc/qhAAAAAElFTkSuQmCC"); + background-position: right 10px center; + background-repeat: no-repeat; + background-size: 15px; +} + +input:focus { + border: 1px solid #1778f2; +} + +.primary { + all: unset; + font-family: sfpro; + background-color: #1778f2; + color: white; + padding: 10px; + margin: 20px; + border-radius: 5px; + padding-bottom: 15px; + text-align: center; + cursor: pointer; +} + +.success { + all: unset; + font-family: sfpro; + background-color: #42b72a; + color: white; + padding: 10px; + margin-left: 10px; + margin-right: 10px; + border-radius: 5px; + text-align: center; + cursor: pointer; +} + +.bold { + font-family: sfprobold; +} + +.line { + width: calc(100% - 40px); + margin-left: 20px; + margin-right: 20px; + border-bottom: 1px solid #dadde1; + margin-bottom: 10px; + margin-top: 10px; +} + +.fullline { + width: calc(100%); + border-bottom: 1px solid #dadde1; + margin-bottom: 10px; + margin-top: 10px; +} + +footer { + text-align: center; + font-family: sfpro; + padding-top: 30px; + padding-bottom: 30px; + font-size: 13px; + color: #737373; +} + +#popup { + position: absolute; + width: 100vw; + height: 100vh; + background-color: rgba(255, 255, 255, .8); + margin: 0; + padding: 0; + top: 0; + display: flex; + justify-content: center; + align-items: center; +} + +.row { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; +} + +.row input { + width: 50% +} + +.close { + position: absolute; + z-index: 2; + width: 20px; + height: 20px; + right: 12px; + top: 12px; + cursor: pointer; + background-size: 20px; + background-position: right; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYAgMAAACdGdVrAAAADFBMVEVgZ3FHcExgZ3FgZ3Fd28LEAAAAA3RSTlOfAHBcPEovAAAASklEQVQIW2MIBQMG7FRmaGgmUG5PaKgdkNovGvIPSPkfDf4IpII/+h8FUiF/7EVB2u3/gE3x/4hMQQShSqAaoNqhhkGNhlqE2y0A1E85Y0JErBoAAAAASUVORK5CYII='); +} + +.hidden { + visibility: hidden; + pointer-events: none; + display: none !important; +} + +.pfp, .pfp img { + display: block; + width: 2.5em; + height: 2.5em; + border-radius: 3em; + background-color: #e4e6e8; + flex-shrink: 0; +} + +.nb { + margin-bottom: 0; +} + +form { + all: unset; + border-radius: 10px; + margin-left: 10px; + width: 100%; +} + +#load { + width: 100%; + display: flex; + justify-content: center; + padding-bottom: 20px; +} + +#load a:hover { + border-bottom: #606770 1px solid; +} \ No newline at end of file diff --git a/public/css/people.css b/public/css/people.css new file mode 100644 index 0000000..b8cf025 --- /dev/null +++ b/public/css/people.css @@ -0,0 +1,44 @@ +body { + background-color: #f0f2f5; +} + +#users { + display: flex; + flex-direction: column; + align-items: center; +} + +.person { + width: 30em; + height: fit-content; + background-color: white; + border-radius: 10px; + box-shadow: 0 2px 4px rgba(0, 0, 0, .05); + margin-bottom: 1.5em; + display: flex; + flex-direction: row; +} + +.profile, .profile img { + border-radius: 10px 0px 0px 10px; + width: 10em; + height: 10em; + padding: 0; + display: block; + background-color: #e4e6e8; + flex-shrink: 0; +} + +.info { + margin: 20px; + display: flex; + flex-direction: column; +} + +.info span { + width: 280px; + margin-bottom: 5px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} \ No newline at end of file diff --git a/public/css/profile.css b/public/css/profile.css new file mode 100644 index 0000000..4c5ae10 --- /dev/null +++ b/public/css/profile.css @@ -0,0 +1,121 @@ +body { + background-color: #f0f2f5; +} + +.spacer { + margin-bottom: 3.5em; +} + +#top { + background-color: white; + display: flex; + flex-direction: column; + align-items: center; + width: 100%; + box-shadow: 0 2px 4px rgba(0, 0, 0, .05); +} + +#banner { + background-image: linear-gradient(#949494, white, white); + height: 30em; + width: 100%; + display: flex; + justify-content: center; +} + +#banner div, #banner img { + width: 80em; + height: inherit; + background-color: #e4e6e8; + border-radius: 0px 0px 20px 20px; +} + +#info { + width: 80em; + display: flex; + flex-direction: row; +} + +.face { + background-color: #e4e6e8; + height: 12em; + width: 12em; + border-radius: 7em; + border: solid 5px white; + margin-top: -2em; + margin-left: 2em; + margin-right: 2em; +} + +.infodata { + margin-top: 2em; + display: flex; + flex-direction: column; +} + +.infodata span { + margin-bottom: .5em; +} + +.profilebuttons { + width: 80em; + height: 3em; + display: flex; + align-items: center; +} + +.profilebuttons button { + all: unset; + font-family: sfprobold; + padding: 0px 50px; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + color: #606770; + cursor: pointer; +} + +.profilebuttons button:hover { + background-color: #dddfe2; +} + +.selected { + color: #1778f2 !important; + border-bottom: 3px solid #1778f2 !important; +} + +#about { + margin-top: 2em; + align-self: center; + padding: 0; + display: flex; + flex-direction: row; +} + +#posts { + margin-top: 2em; +} + +#about .ltext { + border-right: 2px solid #dadde1; + padding: 10px; + padding-right: 3em; +} + +#about .data { + display: flex; + flex-direction: column; + padding: 10px; + padding-left: 20px; + padding-top: 15px; +} + +#about .data span { + margin-bottom: 10px; + width: 28em; + margin-bottom: 5px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} \ No newline at end of file diff --git a/public/fonts/facebook.otf b/public/fonts/facebook.otf new file mode 100755 index 0000000000000000000000000000000000000000..97d5c6f1949228fa2642718c5c93ba08dc423b34 GIT binary patch literal 25740 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 GjQM}m!^9#0 literal 0 HcmV?d00001 diff --git a/public/fonts/sfpro.otf b/public/fonts/sfpro.otf new file mode 100644 index 0000000000000000000000000000000000000000..09aaca9fcc08ccfd0666b128a23a3ba6066757a5 GIT binary patch literal 298944 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⩰e1tBA=ub1t;gHv*+Ev(c+EVRy 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 C@aFUY literal 0 HcmV?d00001 diff --git a/public/fonts/sfprobold.otf b/public/fonts/sfprobold.otf new file mode 100644 index 0000000000000000000000000000000000000000..025b25c27aae647e146418e2f8bc12260015382f GIT binary patch literal 334728 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|@`5Yvhx`oR^)3{8uiJsK{ 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 + + + + + + + XSSBook - Home + + + + + + + + + \ No newline at end of file diff --git a/public/js/api.js b/public/js/api.js new file mode 100644 index 0000000..07769f6 --- /dev/null +++ b/public/js/api.js @@ -0,0 +1,63 @@ +const endpoint = '/api' + +const request = async (url, body, method) => { + if (method === undefined) method = 'POST' + const response = await fetch(endpoint + url, { + method, + body: JSON.stringify(body), + headers: { + 'Content-Type': 'application/json' + } + }); + if (response.status == 401) { + location.href = 'login' + } + const contentType = response.headers.get("content-type"); + if (contentType && contentType.indexOf("application/json") !== -1) { + const json = await response.json() + return { status: response.status, msg: json.msg, json } + } else { + const msg = await response.text(); + return { status: response.status, msg } + } +} + +const login = async (email, password) => { + return await request('/auth/login', {email, password}) +} + +const register = async (firstname, lastname, email, password, gender, day, month, year) => { + return await request('/auth/register', {firstname, lastname, email, password, gender, day, month, year}) +} + +const loadpostspage = async (page) => { + return await request('/posts/page', {page}) +} + +const loadusersposts = async (user_id) => { + return await request('/posts/user', {user_id}) +} + +const loadusers = async (ids) => { + return await request('/users/load', {ids}) +} + +const loaduserspage = async (page) => { + return await request('/users/page', {page}) +} + +const loadself = async () => { + return await request("/users/self", {}) +} + +const postcomment = async (post_id, content) => { + return await request('/posts/comment', {post_id, content}, 'PATCH') +} + +const postlike = async (post_id, state) => { + return await request('/posts/like', {post_id, state}, 'PATCH') +} + +const createpost = async (content) => { + return await request('/posts/create', {content}) +} \ No newline at end of file diff --git a/public/js/header.js b/public/js/header.js new file mode 100644 index 0000000..8fe03e5 --- /dev/null +++ b/public/js/header.js @@ -0,0 +1,25 @@ +function header(home, people) { + const html = ` +

+
+ ` + + add(html, 'header') +} \ No newline at end of file diff --git a/public/js/home.js b/public/js/home.js new file mode 100644 index 0000000..fd40ebf --- /dev/null +++ b/public/js/home.js @@ -0,0 +1,233 @@ +const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', + 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + +function parseDate(date) { + return months[date.getUTCMonth()] + ' ' + date.getUTCDate() + ', ' + date.getUTCFullYear() + ' ' + date.toLocaleTimeString(); +} + +function parseComment(comment) { + const author = data.users[comment[0]] + if (author === undefined) { + author = {} + } + const html = ` +
+ + + + + ${author.firstname + ' ' + author.lastname} +

${comment[1]}

+
+
+ ` + return html +} + +function parsePost(post) { + console.log(post.likes) + const author = data.users[post.user_id] + if (author === undefined) { + author = {} + } + const html = ` +
+
+ + + +
+ ${author.firstname + ' ' + author.lastname} + ${parseDate(new Date(post.date))} +
+
+

+ ${post.content.replace(/\n/g,'
')} +

+ + ${Object.keys(post.likes).map(k => post.likes[k]).filter(v => v !== false).length} Likes + +
+
+ + + Like + + + + Comment + +
+
+
+ ${post.comments.map(parseComment).join('')} +
+ + + +
+ +
+
+
+
+ ` + + return html +} + +function getPost(post_id) { + for (let i = 0; i < data.posts.length; i++) { + if (data.posts[i].post_id === post_id) { + return i + } + } + return -1 +} + +async function like(span) { + const id = parseInt(span.parentElement.parentElement.getAttribute('postid')) + const post = data.posts[getPost(id)] + const index = post.likes.indexOf(data.user.user_id) + const current = index !== -1 + const response = await postlike(id, !current) + if (response.status != 200) return; + if (current) { + post.likes.splice(index, 1) + } else { + post.likes.push(data.user.user_id) + } + render() +} + +async function comment(event) { + event.preventDefault(); + const text = event.target.elements.text.value.trim(); + if (text.length < 1) return; + const id = parseInt(event.target.parentElement.parentElement.parentElement.getAttribute('postid')) + var index = getPost(id); + if (index === -1) return; + const response = await postcomment(id, text) + if (response.status != 200) return; + event.target.elements.text.value = ''; + data.posts[index].comments.push([data.user.user_id, text]) + render() +} + +async function post() { + const text = document.getElementById("text").value.trim() + const error = document.getElementsByClassName('error')[0] + if (text.length < 1) return; + const response = await createpost(text); + if (response.status != 201) { + error.innerHTML = response.msg + return; + } + error.innerHTML = ''; + data.posts.unshift({ + post_id: response.msg, + user_id: data.user.user_id, + date: Date.now(), + content: text, + likes: [], + comments: [] + }) + render() +} + +function render() { + const html = ` +
+
+ + + + +
+ ${data.posts.map(p => parsePost(p)).join('')} +
+ ` + + add(html, 'posts') + + const popup = ` + + ` + + add(popup, 'popup') + + const load = ` + + ` + + if (page !== -1) { + add(load, 'load') + } else { + remove('load') + } +} + +var page = 0 +const data = { + user: {}, + users: {}, + posts: [] +} + +async function load() { + const posts = (await loadpostspage(page)).json + if (posts.length === 0) { + page = -1 + } else { + page++ + } + data.posts.push(... posts) + const batch = [] + for (const post of posts) { + for(const comment of post.comments) { + if (data.users[comment[0]] !== undefined) continue + if (batch.includes(comment[0])) continue + batch.push(comment[0]) + } + if (data.users[post.user_id] !== undefined) continue + if (batch.includes(post.user_id)) continue + batch.push(post.user_id) + } + const users = (await loadusers(batch)).json + for (const id in users) { + data.users[id] = users[id] + } + render() +} + + +async function init() { + header(true, false) + data.user = (await loadself()).json + data.users[data.user.user_id] = data.user + load() +} \ No newline at end of file diff --git a/public/js/login.js b/public/js/login.js new file mode 100644 index 0000000..f65808b --- /dev/null +++ b/public/js/login.js @@ -0,0 +1,29 @@ +async function onlogin() { + const email = document.getElementById('email').value + const password = document.getElementById('pass').value + const response = await login(email, password) + if (response.status !== 200) { + const error = document.getElementsByClassName('error')[0] + error.innerHTML = response.msg + } else { + location.href = '/home' + } +} + +async function onregister() { + const first = document.getElementById('firstname').value + const last = document.getElementById('lastname').value + const email = document.getElementById('newemail').value + const pass = document.getElementById('newpass').value + const month = document.getElementById('month').value + const day = document.getElementById('day').value + const year = document.getElementById('year').value + const gender = document.querySelector('input[name="gender"]:checked').value + const response = await register(first, last, email, pass, gender, parseInt(day), parseInt(month), parseInt(year)) + if (response.status !== 200) { + const error = document.getElementsByClassName('error')[1] + error.innerHTML = response.msg + } else { + location.href = '/home' + } +} \ No newline at end of file diff --git a/public/js/main.js b/public/js/main.js new file mode 100644 index 0000000..0003c0d --- /dev/null +++ b/public/js/main.js @@ -0,0 +1,22 @@ +var range; + +function add(html, id) { + const old = document.getElementById(id) + if (old !== null) { + old.remove() + } + if (range === undefined) { + var range = document.createRange() + range.setStart(document.body, 0) + } + document.body.appendChild( + range.createContextualFragment(html) + ) +} + +function remove(id) { + const old = document.getElementById(id) + if (old !== null) { + old.remove() + } +} \ No newline at end of file diff --git a/public/js/people.js b/public/js/people.js new file mode 100644 index 0000000..ddd1875 --- /dev/null +++ b/public/js/people.js @@ -0,0 +1,65 @@ +const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', + 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + +function parseDate(date) { + return months[date.getUTCMonth()] + ' ' + date.getUTCDate() + ', ' + date.getUTCFullYear() + ' ' + date.toLocaleTimeString(); +} + +function parseUser(user) { + const html = ` + +
+ +
+
+ ${user.firstname + ' ' + user.lastname} + Joined ${parseDate(new Date(user.date))} + Gender: ${user.gender} + Birthday: ${months[user.month] + ' ' + user.day + ', ' + user.year} + User ID: ${user.user_id} +
+
+ ` + return html +} + +function render() { + const html = ` +
+ ${data.users.map(u => parseUser(u)).join('')} +
+ ` + + add(html, 'users') + + const load = ` + + ` + + if (page !== -1) { + add(load, 'load') + } else { + remove('load') + } +} + +var page = 0 +var data = { + users: [] +} + +async function load() { + const users = (await loaduserspage(page)).json + if (users.length === 0) { + page = -1 + } else { + page++ + } + data.users.push(... users) + render() +} + +header(false, true) +load() \ No newline at end of file diff --git a/public/js/profile.js b/public/js/profile.js new file mode 100644 index 0000000..79dbe2f --- /dev/null +++ b/public/js/profile.js @@ -0,0 +1,88 @@ +function render() { + const html = ` +
+ +
+
+ +
+
+ ${data.user.firstname + ' ' + data.user.lastname} + Joined ${parseDate(new Date(data.user.date))} +
+
+
+
+ + +
+
+ ` + + add(html, 'top') + + const postsh = ` +
+ ${data.posts.map(p => parsePost(p)).join('')} +
+ ` + + add(postsh, 'posts') + + const about = ` +
+ About +
+ Name: ${data.user.firstname + ' ' + data.user.lastname} + Email: ${data.user.email} + Gender: ${data.user.gender} + Birthday: ${months[data.user.month] + ' ' + data.user.day + ', ' + data.user.year} + User ID: ${data.user.user_id} +
+
+ ` + + add(about, 'about') +} + +var posts = true + +async function load() { + header(false, false) + + var params = {}; + for (const [key, value] of new URLSearchParams(location.search)) { + params[key] = value + } + + const id = params.id !== undefined && !isNaN(params.id) ? parseInt(params.id) : (await loadself()).json.user_id + const posts = (await loadusersposts(id)).json + data.posts.push(... posts) + const batch = [id] + for (const post of posts) { + for(const comment of post.comments) { + if (data.users[comment[0]] !== undefined) continue + if (batch.includes(comment[0])) continue + batch.push(comment[0]) + } + if (data.users[post.user_id] !== undefined) continue + if (batch.includes(post.user_id)) continue + batch.push(post.user_id) + } + const users = (await loadusers(batch)).json + for (const user of users) { + data.users[user.user_id] = user + } + data.user = data.users[id] + render() +} + +load() \ No newline at end of file diff --git a/public/login.html b/public/login.html new file mode 100644 index 0000000..97398f9 --- /dev/null +++ b/public/login.html @@ -0,0 +1,170 @@ + + + + + + + + + XSSBook - Login + + + +
+ Metashit © 2023 | This website does not care about you +
+ + \ No newline at end of file diff --git a/public/people.html b/public/people.html new file mode 100644 index 0000000..399751a --- /dev/null +++ b/public/people.html @@ -0,0 +1,15 @@ + + + + + + + + XSSBook - People + + + + + + + \ No newline at end of file diff --git a/public/profile.html b/public/profile.html new file mode 100644 index 0000000..d17ab09 --- /dev/null +++ b/public/profile.html @@ -0,0 +1,17 @@ + + + + + + + + + XSSBook - Profile + + + + + + + + \ No newline at end of file diff --git a/src/api/auth.rs b/src/api/auth.rs new file mode 100644 index 0000000..d60483f --- /dev/null +++ b/src/api/auth.rs @@ -0,0 +1,98 @@ +use axum::{Router, routing::post, response::Response}; +use serde::Deserialize; +use time::{OffsetDateTime, Duration}; +use tower_cookies::{Cookies, Cookie}; + +use crate::types::{user::User, response::ResponseCode, session::Session, extract::{Json, AuthorizedUser}}; + +#[derive(Deserialize)] +struct RegistrationRequet { + firstname: String, + lastname: String, + email: String, + password: String, + gender: String, + day: u8, + month: u8, + year: u32 +} + + +async fn register(cookies: Cookies, Json(body): Json) -> Response { + + let user = match User::new(body.firstname, body.lastname, body.email, body.password, body.gender, body.day, body.month, body.year) { + Ok(user) => user, + Err(err) => return err + }; + + let session = match Session::new(user.user_id) { + Ok(session) => session, + Err(err) => return err + }; + + let mut now = OffsetDateTime::now_utc(); + now += Duration::weeks(52); + + let mut cookie = Cookie::new("auth", session.token); + cookie.set_secure(false); + cookie.set_http_only(false); + cookie.set_expires(now); + cookie.set_path("/"); + + cookies.add(cookie); + + ResponseCode::Created.msg("Successfully created new user") +} + +#[derive(Deserialize)] +struct LoginRequest { + email: String, + password: String, +} + +async fn login(cookies: Cookies, Json(body): Json) -> Response { + + let Ok(user) = User::from_email(&body.email) else { + return ResponseCode::BadRequest.msg("Email is not registered") + }; + + if user.password != body.password { + return ResponseCode::BadRequest.msg("Password is not correct") + } + + let session = match Session::new(user.user_id) { + Ok(session) => session, + Err(err) => return err + }; + + let mut now = OffsetDateTime::now_utc(); + now += Duration::weeks(52); + + let mut cookie = Cookie::new("auth", session.token); + cookie.set_secure(false); + cookie.set_http_only(false); + cookie.set_expires(now); + cookie.set_path("/"); + + cookies.add(cookie); + + ResponseCode::Success.msg("Successfully logged in") +} + +async fn logout(cookies: Cookies, AuthorizedUser(user): AuthorizedUser) -> Response { + + cookies.remove(Cookie::new("auth", "")); + + if let Err(err) = Session::delete(user.user_id) { + return err + } + + ResponseCode::Success.msg("Successfully logged out") +} + +pub fn router() -> Router { + Router::new() + .route("/register", post(register)) + .route("/login", post(login)) + .route("/logout", post(logout)) +} \ No newline at end of file diff --git a/src/api/mod.rs b/src/api/mod.rs new file mode 100644 index 0000000..ba38aeb --- /dev/null +++ b/src/api/mod.rs @@ -0,0 +1,4 @@ +pub mod auth; +pub mod pages; +pub mod posts; +pub mod users; \ No newline at end of file diff --git a/src/api/pages.rs b/src/api/pages.rs new file mode 100644 index 0000000..749a686 --- /dev/null +++ b/src/api/pages.rs @@ -0,0 +1,58 @@ +use axum::{Router, response::{Response, Redirect, IntoResponse}, routing::get}; + +use crate::types::{extract::AuthorizedUser, response::ResponseCode}; + +async fn root(user: Option) -> Response { + println!("{}", user.is_some()); + if user.is_some() { + return Redirect::to("/home").into_response() + } else { + return Redirect::to("/login").into_response() + } +} + +async fn login(user: Option) -> Response { + if user.is_some() { + return Redirect::to("/home").into_response() + } else { + return ResponseCode::Success.file("/login.html").await.unwrap() + } +} + +async fn home(user: Option) -> Response { + if user.is_none() { + return Redirect::to("/login").into_response() + } else { + return ResponseCode::Success.file("/home.html").await.unwrap() + } +} + +async fn people(user: Option) -> Response { + if user.is_none() { + return Redirect::to("/login").into_response() + } else { + return ResponseCode::Success.file("/people.html").await.unwrap() + } +} + +async fn profile(user: Option) -> Response { + if user.is_none() { + return Redirect::to("/login").into_response() + } else { + return ResponseCode::Success.file("/profile.html").await.unwrap() + } +} + +async fn wordpress() -> Response { + ResponseCode::ImATeapot.msg("Hello i am a teapot owo") +} + +pub fn router() -> Router { + Router::new() + .route("/", get(root)) + .route("/login", get(login)) + .route("/home", get(home)) + .route("/people", get(people)) + .route("/profile", get(profile)) + .route("/wp-admin", get(wordpress)) +} \ No newline at end of file diff --git a/src/api/posts.rs b/src/api/posts.rs new file mode 100644 index 0000000..405dfa6 --- /dev/null +++ b/src/api/posts.rs @@ -0,0 +1,102 @@ +use axum::{response::Response, Router, routing::{post, patch}}; +use serde::Deserialize; + +use crate::types::{extract::{AuthorizedUser, Json}, post::Post, response::ResponseCode}; + + +#[derive(Deserialize)] +struct PostCreateRequest { + content: String +} + +async fn create(AuthorizedUser(user): AuthorizedUser, Json(body): Json) -> Response { + + let Ok(_post) = Post::new(user.user_id, body.content) else { + return ResponseCode::InternalServerError.msg("Failed to create post") + }; + + ResponseCode::Created.msg("Successfully created new post") +} + +#[derive(Deserialize)] +struct PostPageRequest { + page: u64 +} + +async fn page(AuthorizedUser(_user): AuthorizedUser, Json(body): Json) -> Response { + + let Ok(posts) = Post::from_post_page(body.page) else { + return ResponseCode::InternalServerError.msg("Failed to fetch posts") + }; + + let Ok(json) = serde_json::to_string(&posts) else { + return ResponseCode::InternalServerError.msg("Failed to fetch posts") + }; + + ResponseCode::Success.json(&json) +} + +#[derive(Deserialize)] +struct UsersPostsRequest { + user_id: u64 +} + +async fn user(AuthorizedUser(_user): AuthorizedUser, Json(body): Json) -> Response { + + let Ok(posts) = Post::from_user_id(body.user_id) else { + return ResponseCode::InternalServerError.msg("Failed to fetch posts") + }; + + let Ok(json) = serde_json::to_string(&posts) else { + return ResponseCode::InternalServerError.msg("Failed to fetch posts") + }; + + ResponseCode::Success.json(&json) +} + +#[derive(Deserialize)] +struct PostCommentRequest { + content: String, + post_id: u64 +} + +async fn comment(AuthorizedUser(user): AuthorizedUser, Json(body): Json) -> Response { + + let Ok(mut post) = Post::from_post_id(body.post_id) else { + return ResponseCode::InternalServerError.msg("Failed to fetch posts") + }; + + if let Err(err) = post.comment(user.user_id, body.content) { + return err; + } + + ResponseCode::Success.msg("Successfully commented on post") +} + +#[derive(Deserialize)] +struct PostLikeRequest { + state: bool, + post_id: u64 +} + +async fn like(AuthorizedUser(user): AuthorizedUser, Json(body): Json) -> Response { + + let Ok(mut post) = Post::from_post_id(body.post_id) else { + return ResponseCode::InternalServerError.msg("Failed to fetch posts") + }; + + if let Err(err) = post.like(user.user_id, body.state) { + return err; + } + + ResponseCode::Success.msg("Successfully changed like status on post") +} + +pub fn router() -> Router { + Router::new() + .route("/create", post(create)) + .route("/page", post(page)) + .route("/user", post(user)) + .route("/comment", patch(comment)) + .route("/like", patch(like)) +} \ No newline at end of file diff --git a/src/api/users.rs b/src/api/users.rs new file mode 100644 index 0000000..283ec96 --- /dev/null +++ b/src/api/users.rs @@ -0,0 +1,52 @@ +use axum::{Router, response::Response, routing::post}; +use serde::Deserialize; +use crate::types::{extract::{AuthorizedUser, Json}, response::ResponseCode, user::User}; + +#[derive(Deserialize)] +struct UserLoadRequest { + ids: Vec +} + +async fn load_batch(AuthorizedUser(_user): AuthorizedUser, Json(body): Json) -> Response { + + let users = User::from_user_ids(body.ids); + let Ok(json) = serde_json::to_string(&users) else { + return ResponseCode::InternalServerError.msg("Failed to fetch users") + }; + + ResponseCode::Success.json(&json) +} + +#[derive(Deserialize)] +struct UserPageReqiest { + page: u64 +} + +async fn load_page(AuthorizedUser(_user): AuthorizedUser, Json(body): Json) -> Response { + + let Ok(users) = User::from_user_page(body.page) else { + return ResponseCode::InternalServerError.msg("Failed to fetch users") + }; + + let Ok(json) = serde_json::to_string(&users) else { + return ResponseCode::InternalServerError.msg("Failed to fetch users") + }; + + ResponseCode::Success.json(&json) +} + +async fn load_self(AuthorizedUser(user): AuthorizedUser) -> Response { + + let Ok(json) = serde_json::to_string(&user) else { + return ResponseCode::InternalServerError.msg("Failed to fetch user") + }; + + ResponseCode::Success.json(&json) +} + +pub fn router() -> Router { + Router::new() + .route("/load", post(load_batch)) + .route("/self", post(load_self)) + .route("/page", post(load_page)) +} \ No newline at end of file diff --git a/src/database/mod.rs b/src/database/mod.rs new file mode 100644 index 0000000..7227074 --- /dev/null +++ b/src/database/mod.rs @@ -0,0 +1,16 @@ +use rusqlite::Result; + +pub mod posts; +pub mod users; +pub mod sessions; + +pub fn connect() -> Result { + return rusqlite::Connection::open("xssbook.db"); +} + +pub fn init() -> Result<()> { + users::init()?; + posts::init()?; + sessions::init()?; + Ok(()) +} \ No newline at end of file diff --git a/src/database/posts.rs b/src/database/posts.rs new file mode 100644 index 0000000..77d2387 --- /dev/null +++ b/src/database/posts.rs @@ -0,0 +1,94 @@ +use std::collections::HashSet; +use std::time::{SystemTime, UNIX_EPOCH}; + +use rusqlite::{OptionalExtension, Row}; + +use crate::types::post::Post; +use crate::database; + +pub fn init() -> Result<(), rusqlite::Error> { + let sql = " + CREATE TABLE IF NOT EXISTS posts ( + post_id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL, + content TEXT NOT NULL, + likes TEXT NOT NULL, + comments TEXT NOT NULL, + date INTEGER NOT NULL, + FOREIGN KEY(user_id) REFERENCES users(user_id) + ); + "; + let conn = database::connect()?; + conn.execute(sql, ())?; + Ok(()) +} + +fn post_from_row(row: &Row) -> Result { + let post_id = row.get(0)?; + let user_id = row.get(1)?; + let content = row.get(2)?; + let likes_json: String = row.get(3)?; + let comments_json: String = row.get(4)?; + let date = row.get(5)?; + + let Ok(likes) = serde_json::from_str(&likes_json) else { + return Err(rusqlite::Error::InvalidQuery) + }; + + let Ok(comments) = serde_json::from_str(&comments_json) else { + return Err(rusqlite::Error::InvalidQuery) + }; + + Ok(Post{post_id, user_id, content, likes, comments, date}) +} + +pub fn get_post(post_id: u64) -> Result, rusqlite::Error> { + let conn = database::connect()?; + let mut stmt = conn.prepare("SELECT * FROM posts WHERE post_id = ?")?; + let row = stmt.query_row([post_id], |row| Ok(post_from_row(row)?)).optional()?; + Ok(row) +} + +pub fn get_post_page(page: u64) -> Result, rusqlite::Error> { + let page_size = 10; + let conn = database::connect()?; + let mut stmt = conn.prepare("SELECT * FROM posts ORDER BY post_id DESC LIMIT ? OFFSET ?")?; + let row = stmt.query_map([page_size, page_size * page], |row| Ok(post_from_row(row)?))?; + Ok(row.into_iter().flatten().collect()) +} + +pub fn get_users_posts(user_id: u64) -> Result, rusqlite::Error> { + let conn = database::connect()?; + let mut stmt = conn.prepare("SELECT * FROM posts WHERE user_id = ? ORDER BY post_id DESC")?; + let row = stmt.query_map([user_id], |row| Ok(post_from_row(row)?))?; + Ok(row.into_iter().flatten().collect()) +} + +pub fn add_post(user_id: u64, content: &str) -> Result { + let likes: HashSet = HashSet::new(); + let comments: Vec<(u64, String)> = Vec::new(); + let Ok(likes_json) = serde_json::to_string(&likes) else { + return Err(rusqlite::Error::InvalidQuery) + }; + let Ok(comments_json) = serde_json::to_string(&comments) else { + return Err(rusqlite::Error::InvalidQuery) + }; + let date = SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis() as u64; + let conn = database::connect()?; + let mut stmt = conn.prepare("INSERT INTO posts (user_id, content, likes, comments, date) VALUES(?,?,?,?,?) RETURNING *;")?; + let post = stmt.query_row((user_id, content, likes_json, comments_json, date), |row| Ok(post_from_row(row)?))?; + Ok(post) +} + +pub fn update_post(post_id: u64, likes: &HashSet, comments: &Vec<(u64, String)>) -> Result<(), rusqlite::Error> { + let Ok(likes_json) = serde_json::to_string(&likes) else { + return Err(rusqlite::Error::InvalidQuery) + }; + let Ok(comments_json) = serde_json::to_string(&comments) else { + return Err(rusqlite::Error::InvalidQuery) + }; + let conn = database::connect()?; + let sql = "UPDATE posts SET likes = ?, comments = ? WHERE post_id = ?"; + conn.execute(sql, (likes_json, comments_json, post_id))?; + Ok(()) +} \ No newline at end of file diff --git a/src/database/sessions.rs b/src/database/sessions.rs new file mode 100644 index 0000000..7866d76 --- /dev/null +++ b/src/database/sessions.rs @@ -0,0 +1,42 @@ +use rusqlite::OptionalExtension; + +use crate::{database, types::session::Session}; + +pub fn init() -> Result<(), rusqlite::Error> { + let sql = " + CREATE TABLE IF NOT EXISTS sessions ( + user_id INTEGER PRIMARY KEY NOT NULL, + token TEXT NOT NULL, + FOREIGN KEY(user_id) REFERENCES users(user_id) + ); + "; + let conn = database::connect()?; + conn.execute(sql, ())?; + Ok(()) +} + +pub fn get_session(token: &str) -> Result, rusqlite::Error> { + let conn = database::connect()?; + let mut stmt = conn.prepare("SELECT * FROM sessions WHERE token = ?")?; + let row = stmt.query_row([token], |row| { + Ok(Session { + user_id: row.get(0)?, + token: row.get(1)?, + }) + }).optional()?; + Ok(row) +} + +pub fn set_session(user_id: u64, token: &str) -> Result<(), Box> { + let conn = database::connect()?; + let sql = "INSERT OR REPLACE INTO sessions (user_id, token) VALUES (?, ?);"; + conn.execute(sql, (user_id, token))?; + Ok(()) +} + +pub fn delete_session(user_id: u64) -> Result<(), Box> { + let conn = database::connect()?; + let sql = "DELETE FROM sessions WHERE user_id = ?;"; + conn.execute(sql, [user_id])?; + Ok(()) +} \ No newline at end of file diff --git a/src/database/users.rs b/src/database/users.rs new file mode 100644 index 0000000..2618dce --- /dev/null +++ b/src/database/users.rs @@ -0,0 +1,79 @@ +use std::time::{SystemTime, UNIX_EPOCH}; +use rusqlite::{OptionalExtension, Row}; + +use crate::{database, types::user::User}; + +pub fn init() -> Result<(), rusqlite::Error> { + let sql = " + CREATE TABLE IF NOT EXISTS users ( + user_id INTEGER PRIMARY KEY AUTOINCREMENT, + firstname VARCHAR(20) NOT NULL, + lastname VARCHAR(20) NOT NULL, + email VARCHAR(50) NOT NULL, + password VARCHAR(50) NOT NULL, + gender VARCHAR(100) NOT NULL, + date BIGINT NOT NULL, + day TINYINT NOT NULL, + month TINYINT NOT NULL, + year INTEGER NOT NULL + ); + "; + let conn = database::connect()?; + conn.execute(sql, ())?; + Ok(()) +} + +fn user_from_row(row: &Row, hide_password: bool) -> Result { + let user_id = row.get(0)?; + let firstname = row.get(1)?; + let lastname = row.get(2)?; + let email = row.get(3)?; + let password = row.get(4)?; + let gender = row.get(5)?; + let date = row.get(6)?; + let day = row.get(7)?; + let month = row.get(8)?; + let year = row.get(9)?; + + let password = if hide_password { "".to_string() } else { password }; + + Ok(User{user_id, firstname, lastname, email, password, gender,date, day, month, year}) +} + +pub fn get_user_by_id(user_id: u64, hide_password: bool) -> Result, rusqlite::Error> { + let conn = database::connect()?; + let mut stmt = conn.prepare("SELECT * FROM users WHERE user_id = ?")?; + let row = stmt.query_row([user_id], |row| Ok(user_from_row(row, hide_password)?)).optional()?; + Ok(row) +} + +pub fn get_user_by_email(email: &str, hide_password: bool) -> Result, rusqlite::Error> { + let conn = database::connect()?; + let mut stmt = conn.prepare("SELECT * FROM users WHERE email = ?")?; + let row = stmt.query_row([email], |row| Ok(user_from_row(row, hide_password)?)).optional()?; + Ok(row) +} + +pub fn get_user_by_password(password: &str, hide_password: bool) -> Result, rusqlite::Error> { + let conn = database::connect()?; + let mut stmt = conn.prepare("SELECT * FROM users WHERE password = ?")?; + let row = stmt.query_row([password], |row| Ok(user_from_row(row, hide_password)?)).optional()?; + Ok(row) +} + +pub fn get_user_page(page: u64, hide_password: bool) -> Result, rusqlite::Error> { + let page_size = 5; + let conn = database::connect()?; + let mut stmt = conn.prepare("SELECT * FROM users ORDER BY user_id DESC LIMIT ? OFFSET ?")?; + let row = stmt.query_map([page_size, page_size * page], |row| Ok(user_from_row(row, hide_password)?))?; + Ok(row.into_iter().flatten().collect()) +} + +pub fn add_user(firstname: &str, lastname: &str, email: &str, password: &str, gender: &str, day: u8, month: u8, year: u32) -> Result { + let date = SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis() as u64; + + let conn = database::connect()?; + let mut stmt = conn.prepare("INSERT INTO users (firstname, lastname, email, password, gender, date, day, month, year) VALUES(?,?,?,?,?,?,?,?,?) RETURNING *;")?; + let user = stmt.query_row((firstname, lastname, email, password, gender, date, day, month, year), |row| Ok(user_from_row(row, false)?))?; + Ok(user) +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..9ad772d --- /dev/null +++ b/src/main.rs @@ -0,0 +1,48 @@ +use std::net::SocketAddr; +use axum::{Router, response::Response, http::Request, middleware::{Next, self}}; +use tower_cookies::CookieManagerLayer; +use types::response::ResponseCode; + +use crate::api::{pages, auth, users, posts}; + +mod api; +mod database; +mod types; + +async fn serve(req: Request, next: Next) -> Response { + let Ok(file) = ResponseCode::Success.file(&req.uri().to_string()).await else { + return next.run(req).await + }; + file +} + +async fn not_found() -> Response { + match ResponseCode::NotFound.file("/404.html").await { + Ok(file) => file, + Err(err) => err + } +} + +#[tokio::main] +async fn main() { + + database::init().unwrap(); + + let app = Router::new() + .fallback(not_found) + .layer(middleware::from_fn(serve)) + .nest("/", pages::router()) + .nest("/api/auth", auth::router()) + .nest("/api/users", users::router()) + .nest("/api/posts", posts::router()) + .layer(CookieManagerLayer::new()); + + let addr = SocketAddr::from(([127, 0, 0, 1], 8080)); + println!("Listening on {}", addr); + + axum::Server::bind(&addr) + .serve(app.into_make_service()) + .await + .unwrap(); + +} diff --git a/src/types/extract.rs b/src/types/extract.rs new file mode 100644 index 0000000..6518ca1 --- /dev/null +++ b/src/types/extract.rs @@ -0,0 +1,65 @@ +use std::io::Read; + +use axum::{extract::{FromRequestParts, FromRequest}, async_trait, response::Response, http::{request::Parts, Request}, TypedHeader, headers::Cookie, body::HttpBody, BoxError}; +use bytes::Bytes; +use serde::de::DeserializeOwned; + +use crate::types::{user::User, response::{ResponseCode, Result}, session::Session}; + +pub struct AuthorizedUser(pub User); + +#[async_trait] +impl FromRequestParts for AuthorizedUser where S: Send + Sync { + type Rejection = Response; + + async fn from_request_parts(parts: &mut Parts, state: &S) -> Result { + + let Ok(Some(cookies)) = Option::>::from_request_parts(parts, state).await else { + return Err(ResponseCode::Forbidden.msg("No cookies provided")) + }; + + let Some(token) = cookies.get("auth") else { + return Err(ResponseCode::Forbidden.msg("No auth token provided")) + }; + + let Ok(session) = Session::from_token(&token) else { + return Err(ResponseCode::Unauthorized.msg("Auth token invalid")) + }; + + let Ok(user) = User::from_user_id(session.user_id, true) else { + return Err(ResponseCode::InternalServerError.msg("Valid token but no valid user")) + }; + + Ok(AuthorizedUser(user)) + } +} + +pub struct Json(pub T); + +#[async_trait] +impl FromRequest for Json where + T: DeserializeOwned, + B: HttpBody + Send + 'static, + B::Data: Send, + B::Error: Into, + S: Send + Sync, +{ + type Rejection = Response; + + async fn from_request(req: Request, state: &S) -> Result { + + let Ok(bytes) = Bytes::from_request(req, state).await else { + return Err(ResponseCode::InternalServerError.msg("Failed to read request body")); + }; + + let Ok(string) = String::from_utf8(bytes.bytes().flatten().collect()) else { + return Err(ResponseCode::BadRequest.msg("Invalid utf8 body")) + }; + + let Ok(value) = serde_json::from_str(&string) else { + return Err(ResponseCode::BadRequest.msg("Invalid request body")) + }; + + Ok(Json(value)) + } +} \ No newline at end of file diff --git a/src/types/mod.rs b/src/types/mod.rs new file mode 100644 index 0000000..089885e --- /dev/null +++ b/src/types/mod.rs @@ -0,0 +1,5 @@ +pub mod user; +pub mod post; +pub mod session; +pub mod extract; +pub mod response; \ No newline at end of file diff --git a/src/types/post.rs b/src/types/post.rs new file mode 100644 index 0000000..94f0a9e --- /dev/null +++ b/src/types/post.rs @@ -0,0 +1,83 @@ +use std::collections::HashSet; +use serde::Serialize; + +use crate::database; +use crate::types::response::{Result, ResponseCode}; + +#[derive(Serialize)] +pub struct Post { + pub post_id: u64, + pub user_id: u64, + pub content: String, + pub likes: HashSet, + pub comments: Vec<(u64, String)>, + pub date: u64 +} + +impl Post { + + pub fn from_post_id(post_id: u64) -> Result { + let Ok(Some(post)) = database::posts::get_post(post_id) else { + return Err(ResponseCode::BadRequest.msg("Post does not exist")) + }; + + Ok(post) + } + + // pub fn from_post_ids(post_ids: Vec) -> Vec { + // post_ids.iter().map(|id| { + // let Ok(post) = Post::from_post_id(*id) else { + // return None; + // }; + // Some(post) + // }).flatten().collect() + // } + + pub fn from_post_page(page: u64) -> Result> { + let Ok(posts) = database::posts::get_post_page(page) else { + return Err(ResponseCode::BadRequest.msg("Failed to fetch posts")) + }; + Ok(posts) + } + + pub fn from_user_id(user_id: u64) -> Result> { + let Ok(posts) = database::posts::get_users_posts(user_id) else { + return Err(ResponseCode::BadRequest.msg("Failed to fetch posts")) + }; + Ok(posts) + } + + pub fn new(user_id: u64, content: String) -> Result { + let Ok(post) = database::posts::add_post(user_id, &content) else { + return Err(ResponseCode::InternalServerError.msg("Failed to create post")) + }; + + Ok(post) + } + + pub fn comment(&mut self, user_id: u64, content: String) -> Result<()> { + self.comments.push((user_id, content)); + + if database::posts::update_post(self.post_id, &self.likes, &self.comments).is_err() { + return Err(ResponseCode::InternalServerError.msg("Failed to comment on post")) + } + + Ok(()) + } + + pub fn like(&mut self, user_id: u64, state: bool) -> Result<()> { + + if state { + self.likes.insert(user_id); + } else { + self.likes.remove(&user_id); + } + + if database::posts::update_post(self.post_id, &self.likes, &self.comments).is_err() { + return Err(ResponseCode::InternalServerError.msg("Failed to comment on post")) + } + + Ok(()) + } + +} \ No newline at end of file diff --git a/src/types/response.rs b/src/types/response.rs new file mode 100644 index 0000000..bea3406 --- /dev/null +++ b/src/types/response.rs @@ -0,0 +1,60 @@ +use axum::{response::{IntoResponse, Response}, http::{StatusCode, Request, HeaderValue}, body::Body, headers::HeaderName}; +use tower::ServiceExt; +use tower_http::services::ServeFile; + +#[derive(Debug)] +pub enum ResponseCode { + Success, + Created, + BadRequest, + Unauthorized, + Forbidden, + NotFound, + ImATeapot, + InternalServerError +} + +impl ResponseCode { + pub fn code(self) -> StatusCode { + match self { + Self::Success => StatusCode::OK, + Self::Created => StatusCode::CREATED, + Self::BadRequest => StatusCode::BAD_REQUEST, + Self::Unauthorized => StatusCode::UNAUTHORIZED, + Self::Forbidden => StatusCode::FORBIDDEN, + Self::NotFound => StatusCode::NOT_FOUND, + Self::ImATeapot => StatusCode::IM_A_TEAPOT, + Self::InternalServerError => StatusCode::INTERNAL_SERVER_ERROR + } + } + + pub fn msg(self, msg: &str) -> Response { + (self.code(), msg.to_owned()).into_response() + } + + pub fn json(self, json: &str) -> Response { + let mut res = (self.code(), json.to_owned()).into_response(); + res.headers_mut().insert( + HeaderName::from_static("content-type"), HeaderValue::from_static("application/json"), + ); + res + } + + pub async fn file(self, path: &str) -> Result { + if path.chars().position(|c| c == '.' ).is_none() { + return Err(ResponseCode::BadRequest.msg("Folders cannot be served")); + } + let path = format!("public{}", path); + let svc = ServeFile::new(path); + let Ok(mut res) = svc.oneshot(Request::new(Body::empty())).await else { + return Err(ResponseCode::InternalServerError.msg("Error wile fetching file")); + }; + if res.status() != StatusCode::OK { + return Err(ResponseCode::NotFound.msg("File not found")); + } + *res.status_mut() = self.code(); + Ok(res.into_response()) + } +} + +pub type Result = std::result::Result; \ No newline at end of file diff --git a/src/types/session.rs b/src/types/session.rs new file mode 100644 index 0000000..8064fb1 --- /dev/null +++ b/src/types/session.rs @@ -0,0 +1,38 @@ +use rand::{distributions::Alphanumeric, Rng}; +use serde::Serialize; + +use crate::database; +use crate::types::response::{Result, ResponseCode}; + +#[derive(Serialize)] +pub struct Session { + pub user_id: u64, + pub token: String +} + +impl Session { + + pub fn from_token(token: &str) -> Result { + let Ok(Some(session)) = database::sessions::get_session(token) else { + return Err(ResponseCode::BadRequest.msg("Invalid auth token")); + }; + + Ok(session) + } + + pub fn new(user_id: u64) -> Result { + let token: String = rand::thread_rng().sample_iter(&Alphanumeric).take(32).map(char::from).collect(); + match database::sessions::set_session(user_id, &token) { + Err(_) => return Err(ResponseCode::BadRequest.msg("Failed to create session")), + Ok(_) => return Ok(Session {user_id, token}) + }; + } + + pub fn delete(user_id: u64) -> Result<()> { + if let Err(_) = database::sessions::delete_session(user_id) { + return Err(ResponseCode::InternalServerError.msg("Failed to logout")); + }; + Ok(()) + } + +} \ No newline at end of file diff --git a/src/types/user.rs b/src/types/user.rs new file mode 100644 index 0000000..1213a75 --- /dev/null +++ b/src/types/user.rs @@ -0,0 +1,79 @@ +use serde::{Serialize, Deserialize}; + +use crate::database; +use crate::types::response::{Result, ResponseCode}; + + +#[derive(Serialize, Deserialize, Debug)] +pub struct User { + pub user_id: u64, + pub firstname: String, + pub lastname: String, + pub email: String, + pub password: String, + pub gender: String, + pub date: u64, + pub day: u8, + pub month: u8, + pub year: u32, +} + +impl User { + + pub fn from_user_id(user_id: u64, hide_password: bool) -> Result { + let Ok(Some(user)) = database::users::get_user_by_id(user_id, hide_password) else { + return Err(ResponseCode::BadRequest.msg("User does not exist")) + }; + + Ok(user) + } + + pub fn from_user_ids(user_ids: Vec) -> Vec { + user_ids.iter().map(|user_id| { + let Ok(Some(user)) = database::users::get_user_by_id(*user_id, true) else { + return None; + }; + Some(user) + }).flatten().collect() + } + + pub fn from_user_page(page: u64) -> Result> { + let Ok(users) = database::users::get_user_page(page, true) else { + return Err(ResponseCode::BadRequest.msg("Failed to fetch users")) + }; + Ok(users) + } + + pub fn from_email(email: &str) -> Result { + let Ok(Some(user)) = database::users::get_user_by_email(email, false) else { + return Err(ResponseCode::BadRequest.msg("User does not exist")) + }; + + Ok(user) + } + + pub fn from_password(password: &str) -> Result { + let Ok(Some(user)) = database::users::get_user_by_password(password, true) else { + return Err(ResponseCode::BadRequest.msg("User does not exist")) + }; + + Ok(user) + } + + pub fn new(firstname: String, lastname: String, email: String, password: String, gender: String, day: u8, month: u8, year: u32) -> Result { + if let Ok(_) = User::from_email(&email) { + return Err(ResponseCode::BadRequest.msg(&format!("Email is already in use by {}", &email))) + } + + if let Ok(user) = User::from_password(&password) { + return Err(ResponseCode::BadRequest.msg(&format!("Password is already in use by {}", user.email))) + } + + let Ok(user) = database::users::add_user(&firstname, &lastname, &email, &password, &gender, day, month, year) else { + return Err(ResponseCode::InternalServerError.msg("Failed to create new uesr")) + }; + + Ok(user) + } + +} \ No newline at end of file