chore (database): move `utils/database` to `database`
This commit is contained in:
parent
bf5422b47f
commit
36fba1dd1d
|
@ -28,12 +28,41 @@ dependencies = [
|
||||||
"version_check",
|
"version_check",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "alloc-no-stdlib"
|
||||||
|
version = "2.0.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "35ef4730490ad1c4eae5c4325b2a95f521d023e5c885853ff7aca0a6a1631db3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "alloc-stdlib"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "697ed7edc0f1711de49ce108c541623a0af97c6c60b2f6e2b65229847ac843c2"
|
||||||
|
dependencies = [
|
||||||
|
"alloc-no-stdlib",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "anyhow"
|
name = "anyhow"
|
||||||
version = "1.0.57"
|
version = "1.0.57"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc"
|
checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "async-compression"
|
||||||
|
version = "0.3.12"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f2bf394cfbbe876f0ac67b13b6ca819f9c9f2fb9ec67223cceb1555fbab1c31a"
|
||||||
|
dependencies = [
|
||||||
|
"brotli",
|
||||||
|
"flate2",
|
||||||
|
"futures-core",
|
||||||
|
"memchr",
|
||||||
|
"pin-project-lite",
|
||||||
|
"tokio",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "async-trait"
|
name = "async-trait"
|
||||||
version = "0.1.53"
|
version = "0.1.53"
|
||||||
|
@ -115,7 +144,7 @@ dependencies = [
|
||||||
"cc",
|
"cc",
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"libc",
|
"libc",
|
||||||
"miniz_oxide",
|
"miniz_oxide 0.4.4",
|
||||||
"object",
|
"object",
|
||||||
"rustc-demangle",
|
"rustc-demangle",
|
||||||
]
|
]
|
||||||
|
@ -151,6 +180,27 @@ dependencies = [
|
||||||
"generic-array",
|
"generic-array",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "brotli"
|
||||||
|
version = "3.3.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68"
|
||||||
|
dependencies = [
|
||||||
|
"alloc-no-stdlib",
|
||||||
|
"alloc-stdlib",
|
||||||
|
"brotli-decompressor",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "brotli-decompressor"
|
||||||
|
version = "2.3.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80"
|
||||||
|
dependencies = [
|
||||||
|
"alloc-no-stdlib",
|
||||||
|
"alloc-stdlib",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bumpalo"
|
name = "bumpalo"
|
||||||
version = "3.9.1"
|
version = "3.9.1"
|
||||||
|
@ -231,6 +281,15 @@ version = "1.1.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ccaeedb56da03b09f598226e25e80088cb4cd25f316e6e4df7d695f0feeb1403"
|
checksum = "ccaeedb56da03b09f598226e25e80088cb4cd25f316e6e4df7d695f0feeb1403"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crc32fast"
|
||||||
|
version = "1.3.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "crossbeam-queue"
|
name = "crossbeam-queue"
|
||||||
version = "0.3.5"
|
version = "0.3.5"
|
||||||
|
@ -315,6 +374,18 @@ version = "2.5.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71"
|
checksum = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "flate2"
|
||||||
|
version = "1.0.23"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b39522e96686d38f4bc984b9198e3a0613264abaebaff2c5c918bfa6b6da09af"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"crc32fast",
|
||||||
|
"libc",
|
||||||
|
"miniz_oxide 0.5.1",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "flume"
|
name = "flume"
|
||||||
version = "0.10.12"
|
version = "0.10.12"
|
||||||
|
@ -512,21 +583,34 @@ name = "homedisk-core"
|
||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"better-panic",
|
"better-panic",
|
||||||
|
"homedisk-database",
|
||||||
"homedisk-server",
|
"homedisk-server",
|
||||||
"homedisk-types",
|
"homedisk-types",
|
||||||
"homedisk-utils",
|
|
||||||
"log",
|
"log",
|
||||||
"simplelog",
|
"simplelog",
|
||||||
"tokio",
|
"tokio",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "homedisk-database"
|
||||||
|
version = "0.0.0"
|
||||||
|
dependencies = [
|
||||||
|
"futures-util",
|
||||||
|
"log",
|
||||||
|
"rust_utilities",
|
||||||
|
"serde",
|
||||||
|
"sqlx",
|
||||||
|
"tokio",
|
||||||
|
"uuid",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "homedisk-server"
|
name = "homedisk-server"
|
||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"axum",
|
"axum",
|
||||||
|
"homedisk-database",
|
||||||
"homedisk-types",
|
"homedisk-types",
|
||||||
"homedisk-utils",
|
|
||||||
"hyper",
|
"hyper",
|
||||||
"log",
|
"log",
|
||||||
"rust_utilities",
|
"rust_utilities",
|
||||||
|
@ -549,19 +633,6 @@ dependencies = [
|
||||||
"zeroize",
|
"zeroize",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "homedisk-utils"
|
|
||||||
version = "0.0.0"
|
|
||||||
dependencies = [
|
|
||||||
"futures-util",
|
|
||||||
"log",
|
|
||||||
"rust_utilities",
|
|
||||||
"serde",
|
|
||||||
"sqlx",
|
|
||||||
"tokio",
|
|
||||||
"uuid",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "http"
|
name = "http"
|
||||||
version = "0.2.6"
|
version = "0.2.6"
|
||||||
|
@ -656,6 +727,15 @@ dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "iri-string"
|
||||||
|
version = "0.4.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8f0f7638c1e223529f1bfdc48c8b133b9e0b434094d1d28473161ee48b235f78"
|
||||||
|
dependencies = [
|
||||||
|
"nom",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itertools"
|
name = "itertools"
|
||||||
version = "0.10.3"
|
version = "0.10.3"
|
||||||
|
@ -760,6 +840,16 @@ version = "0.3.16"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
|
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]]
|
[[package]]
|
||||||
name = "minimal-lexical"
|
name = "minimal-lexical"
|
||||||
version = "0.2.1"
|
version = "0.2.1"
|
||||||
|
@ -776,6 +866,15 @@ dependencies = [
|
||||||
"autocfg",
|
"autocfg",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "miniz_oxide"
|
||||||
|
version = "0.5.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d2b29bd4bc3f33391105ebee3589c19197c4271e3e5a9ec9bfe8127eeff8f082"
|
||||||
|
dependencies = [
|
||||||
|
"adler",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mio"
|
name = "mio"
|
||||||
version = "0.8.2"
|
version = "0.8.2"
|
||||||
|
@ -1581,6 +1680,8 @@ version = "0.2.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "aba3f3efabf7fb41fae8534fc20a817013dd1c12cb45441efb6c82e6556b4cd8"
|
checksum = "aba3f3efabf7fb41fae8534fc20a817013dd1c12cb45441efb6c82e6556b4cd8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"async-compression",
|
||||||
|
"base64",
|
||||||
"bitflags",
|
"bitflags",
|
||||||
"bytes",
|
"bytes",
|
||||||
"futures-core",
|
"futures-core",
|
||||||
|
@ -1588,10 +1689,18 @@ dependencies = [
|
||||||
"http",
|
"http",
|
||||||
"http-body",
|
"http-body",
|
||||||
"http-range-header",
|
"http-range-header",
|
||||||
|
"httpdate",
|
||||||
|
"iri-string",
|
||||||
|
"mime",
|
||||||
|
"mime_guess",
|
||||||
|
"percent-encoding",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
|
"tokio",
|
||||||
|
"tokio-util",
|
||||||
"tower",
|
"tower",
|
||||||
"tower-layer",
|
"tower-layer",
|
||||||
"tower-service",
|
"tower-service",
|
||||||
|
"tracing",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1651,6 +1760,15 @@ version = "1.15.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
|
checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicase"
|
||||||
|
version = "2.6.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
|
||||||
|
dependencies = [
|
||||||
|
"version_check",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-bidi"
|
name = "unicode-bidi"
|
||||||
version = "0.3.7"
|
version = "0.3.7"
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
[workspace]
|
[workspace]
|
||||||
members = [
|
members = [
|
||||||
"core",
|
"core",
|
||||||
|
"database",
|
||||||
"server",
|
"server",
|
||||||
"types",
|
"types",
|
||||||
"utils",
|
|
||||||
]
|
]
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
|
@ -16,22 +16,8 @@ path = "./src/main.rs"
|
||||||
[dependencies]
|
[dependencies]
|
||||||
better-panic = "0.3.0"
|
better-panic = "0.3.0"
|
||||||
simplelog = "0.12.0"
|
simplelog = "0.12.0"
|
||||||
|
tokio = { version = "1.17.0", features = ["full"] }
|
||||||
[dependencies.tokio]
|
log = { version = "0.4.16", features = ["max_level_debug", "release_max_level_warn"] }
|
||||||
version = "1.17.0"
|
homedisk-database = { path = "../database" }
|
||||||
features = ["full"]
|
homedisk-server = { path = "../server" }
|
||||||
|
homedisk-types = { path = "../types", features = ["config"] }
|
||||||
[dependencies.log]
|
|
||||||
version = "0.4.16"
|
|
||||||
features = ["max_level_debug", "release_max_level_warn"]
|
|
||||||
|
|
||||||
[dependencies.homedisk-utils]
|
|
||||||
path = "../utils"
|
|
||||||
features = ["full"]
|
|
||||||
|
|
||||||
[dependencies.homedisk-server]
|
|
||||||
path = "../server"
|
|
||||||
|
|
||||||
[dependencies.homedisk-types]
|
|
||||||
path = "../types"
|
|
||||||
features = ["config"]
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
mod init;
|
mod init;
|
||||||
|
|
||||||
|
use homedisk_database::Database;
|
||||||
use homedisk_types::config::types::Config;
|
use homedisk_types::config::types::Config;
|
||||||
use homedisk_utils::database::Database;
|
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() {
|
async fn main() {
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
[package]
|
||||||
|
name = "homedisk-database"
|
||||||
|
version = "0.0.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
log = "0.4.16"
|
||||||
|
futures-util = "0.3.21"
|
||||||
|
serde = { version = "1.0.136", features = ["derive"] }
|
||||||
|
sqlx = { version = "0.5.13", features = ["runtime-tokio-rustls", "sqlite"] }
|
||||||
|
uuid = { version = "1.0.0", features = ["v5"] }
|
||||||
|
rust_utilities = { version = "0.2.0", features = ["sha"] }
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
tokio = { version = "1.17.0", features = ["full"] }
|
|
@ -13,7 +13,7 @@ pub struct Database {
|
||||||
impl Database {
|
impl Database {
|
||||||
/// Open SQLite Database file
|
/// Open SQLite Database file
|
||||||
/// ```ignore
|
/// ```ignore
|
||||||
/// use homedisk_utils::database::Database;
|
/// use homedisk_database::Database;
|
||||||
///
|
///
|
||||||
/// Database::open("sqlite::memory:").await?;
|
/// Database::open("sqlite::memory:").await?;
|
||||||
/// ```
|
/// ```
|
||||||
|
@ -27,7 +27,7 @@ impl Database {
|
||||||
|
|
||||||
/// Create new User
|
/// Create new User
|
||||||
/// ```ignore
|
/// ```ignore
|
||||||
/// use homedisk_utils::database::{Database, User};
|
/// use homedisk_database::{Database, User};
|
||||||
///
|
///
|
||||||
/// let user = User::new("username", "password");
|
/// let user = User::new("username", "password");
|
||||||
/// db.create_user(&user).await?;
|
/// db.create_user(&user).await?;
|
||||||
|
@ -74,7 +74,7 @@ mod tests {
|
||||||
|
|
||||||
use sqlx::Executor;
|
use sqlx::Executor;
|
||||||
|
|
||||||
use crate::database::{Database, User};
|
use crate::{Database, User};
|
||||||
|
|
||||||
async fn open_db() -> Database {
|
async fn open_db() -> Database {
|
||||||
Database::open("sqlite::memory:").await.expect("open db")
|
Database::open("sqlite::memory:").await.expect("open db")
|
|
@ -1,4 +1,4 @@
|
||||||
use rust_utilities::crypto::sha::{CryptographicHash, encode, Algorithm};
|
use rust_utilities::crypto::sha::{encode, Algorithm, CryptographicHash};
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
#[derive(Debug, sqlx::FromRow)]
|
#[derive(Debug, sqlx::FromRow)]
|
||||||
|
@ -14,7 +14,7 @@ impl User {
|
||||||
/// This function creates a unique UUID for a user and creates a password hash using SHA-512
|
/// This function creates a unique UUID for a user and creates a password hash using SHA-512
|
||||||
/// and returns in the User type
|
/// and returns in the User type
|
||||||
/// ```
|
/// ```
|
||||||
/// use homedisk_utils::database::User;
|
/// use homedisk_database::User;
|
||||||
///
|
///
|
||||||
/// let user = User::new("medzik", "SuperSecretPassword123!");
|
/// let user = User::new("medzik", "SuperSecretPassword123!");
|
||||||
/// ```
|
/// ```
|
||||||
|
@ -26,7 +26,11 @@ impl User {
|
||||||
let sha1_name = CryptographicHash::hash(Algorithm::SHA1, username.as_bytes());
|
let sha1_name = CryptographicHash::hash(Algorithm::SHA1, username.as_bytes());
|
||||||
let id = Uuid::new_v5(&Uuid::NAMESPACE_X500, &sha1_name).to_string();
|
let id = Uuid::new_v5(&Uuid::NAMESPACE_X500, &sha1_name).to_string();
|
||||||
|
|
||||||
let password = encode(CryptographicHash::hash(Algorithm::SHA512, password.as_bytes()));
|
// hash password using SHA-512
|
||||||
|
let password = encode(CryptographicHash::hash(
|
||||||
|
Algorithm::SHA512,
|
||||||
|
password.as_bytes(),
|
||||||
|
));
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
id,
|
id,
|
||||||
|
@ -48,7 +52,7 @@ mod tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn check_password_is_hashed() {
|
fn check_if_password_is_hashed() {
|
||||||
let password = "password";
|
let password = "password";
|
||||||
let user = User::new("test", password);
|
let user = User::new("test", password);
|
||||||
|
|
|
@ -7,27 +7,9 @@ edition = "2021"
|
||||||
axum = "0.5.3"
|
axum = "0.5.3"
|
||||||
log = "0.4.16"
|
log = "0.4.16"
|
||||||
thiserror = "1.0.30"
|
thiserror = "1.0.30"
|
||||||
|
serde = { version = "1.0.136", features = ["derive"] }
|
||||||
[dependencies.tower-http]
|
tower-http = { version = "0.2.5", features = ["full"] }
|
||||||
version = "0.2.5"
|
hyper = { version = "0.14.18", features = ["full"] }
|
||||||
features = ["cors"]
|
rust_utilities = { version = "0.2.0", features = ["jsonwebtoken"] }
|
||||||
|
homedisk-database = { path = "../database" }
|
||||||
[dependencies.hyper]
|
homedisk-types = { path = "../types", features = ["axum"] }
|
||||||
version = "0.14.18"
|
|
||||||
features = ["full"]
|
|
||||||
|
|
||||||
[dependencies.serde]
|
|
||||||
version = "1.0.136"
|
|
||||||
features = ["derive"]
|
|
||||||
|
|
||||||
[dependencies.rust_utilities]
|
|
||||||
version = "0.2.0"
|
|
||||||
features = ["jsonwebtoken"]
|
|
||||||
|
|
||||||
[dependencies.homedisk-utils]
|
|
||||||
path = "../utils"
|
|
||||||
features = ["database"]
|
|
||||||
|
|
||||||
[dependencies.homedisk-types]
|
|
||||||
path = "../types"
|
|
||||||
features = ["axum"]
|
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
use axum::{Extension, Json};
|
use axum::{Extension, Json};
|
||||||
|
use homedisk_database::{Database, Error, User};
|
||||||
use homedisk_types::{
|
use homedisk_types::{
|
||||||
auth::login::{Request, Response},
|
auth::login::{Request, Response},
|
||||||
config::types::Config,
|
config::types::Config,
|
||||||
errors::{AuthError, ServerError},
|
errors::{AuthError, ServerError},
|
||||||
};
|
};
|
||||||
use homedisk_utils::database::{Database, Error, User};
|
|
||||||
use rust_utilities::crypto::jsonwebtoken::{Claims, Token};
|
use rust_utilities::crypto::jsonwebtoken::{Claims, Token};
|
||||||
|
|
||||||
pub async fn handle(
|
pub async fn handle(
|
||||||
db: Extension<Database>,
|
db: Extension<Database>,
|
||||||
config: Extension<Config>,
|
config: Extension<Config>,
|
||||||
Json(request): Json<Request>,
|
request: Json<Request>,
|
||||||
) -> Result<Json<Response>, ServerError> {
|
) -> Result<Json<Response>, ServerError> {
|
||||||
let user = User::new(&request.username, &request.password);
|
let user = User::new(&request.username, &request.password);
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
use axum::{Extension, Json};
|
use axum::{Extension, Json};
|
||||||
|
use homedisk_database::{Database, User};
|
||||||
use homedisk_types::{
|
use homedisk_types::{
|
||||||
auth::login::{Request, Response},
|
auth::login::{Request, Response},
|
||||||
config::types::Config,
|
config::types::Config,
|
||||||
errors::{AuthError, ServerError},
|
errors::{AuthError, ServerError},
|
||||||
};
|
};
|
||||||
use homedisk_utils::database::{Database, User};
|
|
||||||
use rust_utilities::crypto::jsonwebtoken::{Claims, Token};
|
use rust_utilities::crypto::jsonwebtoken::{Claims, Token};
|
||||||
|
|
||||||
pub async fn handle(
|
pub async fn handle(
|
||||||
db: Extension<Database>,
|
db: Extension<Database>,
|
||||||
config: Extension<Config>,
|
config: Extension<Config>,
|
||||||
Json(request): Json<Request>,
|
request: Json<Request>,
|
||||||
) -> Result<Json<Response>, ServerError> {
|
) -> Result<Json<Response>, ServerError> {
|
||||||
let user = User::new(&request.username, &request.password);
|
let user = User::new(&request.username, &request.password);
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ impl fmt::Display for Error {
|
||||||
match self {
|
match self {
|
||||||
Error::Axum(err) => write!(f, "axum error: {}", err),
|
Error::Axum(err) => write!(f, "axum error: {}", err),
|
||||||
Error::Hyper(err) => write!(f, "hyper error: {}", err),
|
Error::Hyper(err) => write!(f, "hyper error: {}", err),
|
||||||
Error::AddrParseError(err) => write!(f, "AddrParse error: {}", err),
|
Error::AddrParseError(err) => write!(f, "std::net::AddrParseError: {}", err),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
pub mod auth;
|
pub mod auth;
|
||||||
|
|
||||||
mod error;
|
mod error;
|
||||||
|
|
||||||
use axum::{http::HeaderValue, routing::get, Extension, Router, Server};
|
use axum::{http::HeaderValue, routing::get, Extension, Router, Server};
|
||||||
|
use homedisk_database::Database;
|
||||||
use homedisk_types::config::types::Config;
|
use homedisk_types::config::types::Config;
|
||||||
use homedisk_utils::database::Database;
|
|
||||||
use log::{debug, info};
|
use log::{debug, info};
|
||||||
use tower_http::cors::{CorsLayer, Origin};
|
use tower_http::cors::{CorsLayer, Origin};
|
||||||
|
|
||||||
|
|
|
@ -10,23 +10,10 @@ config = ["toml", "dirs"]
|
||||||
thiserror = "1.0.30"
|
thiserror = "1.0.30"
|
||||||
uuid = "1.0.0"
|
uuid = "1.0.0"
|
||||||
anyhow = "1.0.57"
|
anyhow = "1.0.57"
|
||||||
|
serde = { version = "1.0.136", features = ["derive"] }
|
||||||
[dependencies.serde]
|
zeroize = { version = "1.5.4", features = ["derive"] }
|
||||||
version = "1.0.136"
|
axum = { version = "0.5.3", optional = true }
|
||||||
features = ["derive"]
|
|
||||||
|
|
||||||
[dependencies.zeroize]
|
|
||||||
version = "1.5.4"
|
|
||||||
features = ["derive"]
|
|
||||||
|
|
||||||
[dependencies.axum]
|
|
||||||
version = "0.5.3"
|
|
||||||
optional = true
|
|
||||||
|
|
||||||
# config
|
# config
|
||||||
[dependencies.toml]
|
toml = { version = "0.5.9", optional = true }
|
||||||
version = "0.5.9"
|
dirs = { version = "4.0.0", optional = true }
|
||||||
optional = true
|
|
||||||
[dependencies.dirs]
|
|
||||||
version = "4.0.0"
|
|
||||||
optional = true
|
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
[package]
|
|
||||||
name = "homedisk-utils"
|
|
||||||
version = "0.0.0"
|
|
||||||
edition = "2021"
|
|
||||||
|
|
||||||
[features]
|
|
||||||
full = ["database"]
|
|
||||||
database = ["sqlx", "uuid"]
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
log = "0.4.16"
|
|
||||||
futures-util = "0.3.21"
|
|
||||||
|
|
||||||
[dependencies.serde]
|
|
||||||
version = "1.0.136"
|
|
||||||
features = ["derive"]
|
|
||||||
|
|
||||||
# database
|
|
||||||
[dependencies.sqlx]
|
|
||||||
version = "0.5.13"
|
|
||||||
features = ["runtime-tokio-rustls", "sqlite"]
|
|
||||||
optional = true
|
|
||||||
[dependencies.uuid]
|
|
||||||
version = "1.0.0"
|
|
||||||
features = ["v5"]
|
|
||||||
optional = true
|
|
||||||
[dependencies.rust_utilities]
|
|
||||||
version = "0.2.0"
|
|
||||||
features = ["sha"]
|
|
||||||
|
|
||||||
[dev-dependencies.tokio]
|
|
||||||
version = "1.17.0"
|
|
||||||
features = ["full"]
|
|
|
@ -1,2 +0,0 @@
|
||||||
#[cfg(feature = "database")]
|
|
||||||
pub mod database;
|
|
Loading…
Reference in New Issue