diff --git a/Cargo.lock b/Cargo.lock index 872ee2a0..5d455e04 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7330,6 +7330,7 @@ dependencies = [ "serde_json", "sha1 0.10.6", "tokio", + "tokio-stream", "totp-lite", "ulid", "unicode-segmentation", diff --git a/Cargo.toml b/Cargo.toml index dcbdb01d..45cd92b4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,6 +28,7 @@ futures-locks = "0.7.1" async-lock = "2.8.0" async-recursion = "1.0.4" tokio-util = { version = "0.7.18" } +tokio-stream = "0.1.18" # Error Handling anyhow = "1.0.100" diff --git a/crates/core/database/Cargo.toml b/crates/core/database/Cargo.toml index 38d83174..5096e0c2 100644 --- a/crates/core/database/Cargo.toml +++ b/crates/core/database/Cargo.toml @@ -82,6 +82,7 @@ async-recursion = { workspace = true } # Async tokio = { workspace = true, optional = true } +tokio-stream = { workspace = true } # Axum Impl axum = { workspace = true, optional = true } diff --git a/crates/core/database/src/drivers/mod.rs b/crates/core/database/src/drivers/mod.rs index 0215a153..bd82e396 100644 --- a/crates/core/database/src/drivers/mod.rs +++ b/crates/core/database/src/drivers/mod.rs @@ -2,16 +2,6 @@ mod mongodb; mod reference; -use authifier::config::Captcha; -use authifier::config::EmailVerificationConfig; -use authifier::config::PasswordScanning; -use authifier::config::ResolveIp; -use authifier::config::SMTPSettings; -use authifier::config::Shield; -use authifier::config::Template; -use authifier::config::Templates; -use authifier::config::EmailExpiryConfig; -use authifier::Authifier; use rand::Rng; use revolt_config::config; use revolt_result::Result; diff --git a/crates/core/database/src/models/admin_audits/ops/mongodb.rs b/crates/core/database/src/models/admin_audits/ops/mongodb.rs index 5689ec56..1d8a0007 100644 --- a/crates/core/database/src/models/admin_audits/ops/mongodb.rs +++ b/crates/core/database/src/models/admin_audits/ops/mongodb.rs @@ -1,4 +1,4 @@ -use async_std::stream::StreamExt; +use tokio_stream::StreamExt; use revolt_result::Result; use crate::AdminAuditItem; diff --git a/crates/core/database/src/models/admin_cases/ops/mongodb.rs b/crates/core/database/src/models/admin_cases/ops/mongodb.rs index f0f38757..5ec50714 100644 --- a/crates/core/database/src/models/admin_cases/ops/mongodb.rs +++ b/crates/core/database/src/models/admin_cases/ops/mongodb.rs @@ -1,4 +1,4 @@ -use async_std::stream::StreamExt; +use tokio_stream::StreamExt; use bson::Document; use revolt_result::Result; diff --git a/crates/core/database/src/models/admin_tokens/rocket.rs b/crates/core/database/src/models/admin_tokens/rocket.rs index 34a2d7aa..4b32dce9 100644 --- a/crates/core/database/src/models/admin_tokens/rocket.rs +++ b/crates/core/database/src/models/admin_tokens/rocket.rs @@ -1,6 +1,6 @@ use iso8601_timestamp::Timestamp; use revolt_config::{capture_internal_error, report_error}; -use revolt_result::Result; +use revolt_result::{Error, Result}; use rocket::http::Status; use rocket::request::{self, FromRequest, Outcome, Request}; @@ -8,7 +8,7 @@ use crate::{AdminAuthorization, AdminMachineToken, AdminUser, Database}; #[rocket::async_trait] impl<'r> FromRequest<'r> for AdminMachineToken { - type Error = authifier::Error; + type Error = Error; async fn from_request(request: &'r Request<'_>) -> request::Outcome { let user: &Option = request @@ -48,14 +48,14 @@ impl<'r> FromRequest<'r> for AdminMachineToken { if let Some(user) = user { Outcome::Success(user.clone()) } else { - Outcome::Error((Status::Unauthorized, authifier::Error::InvalidSession)) + Outcome::Error((Status::Unauthorized, create_error!(InvalidSession))) } } } #[rocket::async_trait] impl<'r> FromRequest<'r> for AdminAuthorization { - type Error = authifier::Error; + type Error = Error; async fn from_request(request: &'r Request<'_>) -> request::Outcome { let machine: &Option = request @@ -94,7 +94,7 @@ impl<'r> FromRequest<'r> for AdminAuthorization { if let Some(machine) = machine { if !machine.on_behalf_of.active { - Outcome::Error((Status::Unauthorized, authifier::Error::LockedOut)) + Outcome::Error((Status::Unauthorized, create_error!(LockedOut))) } else { Outcome::Success(AdminAuthorization::AdminMachine(machine.clone())) } @@ -134,12 +134,12 @@ impl<'r> FromRequest<'r> for AdminAuthorization { if let Some(user) = user { if !user.active { - Outcome::Error((Status::Unauthorized, authifier::Error::LockedOut)) + Outcome::Error((Status::Unauthorized, create_error!(LockedOut))) } else { Outcome::Success(AdminAuthorization::AdminUser(user.clone())) } } else { - Outcome::Error((Status::Unauthorized, authifier::Error::InvalidCredentials)) + Outcome::Error((Status::Unauthorized, create_error!(InvalidSession))) } } } diff --git a/crates/core/database/src/models/admin_users/rocket.rs b/crates/core/database/src/models/admin_users/rocket.rs index acba6691..76e861b6 100644 --- a/crates/core/database/src/models/admin_users/rocket.rs +++ b/crates/core/database/src/models/admin_users/rocket.rs @@ -1,11 +1,11 @@ use rocket::http::Status; use rocket::request::{self, FromRequest, Outcome, Request}; - +use revolt_result::Error; use crate::{AdminUser, Database}; #[rocket::async_trait] impl<'r> FromRequest<'r> for AdminUser { - type Error = authifier::Error; + type Error = Error; async fn from_request(request: &'r Request<'_>) -> request::Outcome { let user: &Option = request @@ -32,12 +32,12 @@ impl<'r> FromRequest<'r> for AdminUser { if let Some(user) = user { if !user.active { - Outcome::Error((Status::Unauthorized, authifier::Error::LockedOut)) + Outcome::Error((Status::Unauthorized, create_error!(LockedOut))) } else { Outcome::Success(user.clone()) } } else { - Outcome::Error((Status::Unauthorized, authifier::Error::InvalidCredentials)) + Outcome::Error((Status::Unauthorized, create_error!(InvalidCredentials))) } } } diff --git a/crates/delta/src/routes/admin/accounts/account_delete.rs b/crates/delta/src/routes/admin/accounts/account_delete.rs index 1c12adb8..48e3d7be 100644 --- a/crates/delta/src/routes/admin/accounts/account_delete.rs +++ b/crates/delta/src/routes/admin/accounts/account_delete.rs @@ -37,7 +37,10 @@ pub async fn admin_account_delete( } } - db.delete_authifier_account(&target.id).await?; + db.fetch_account(&target.id) + .await? + .mark_deleted(db) + .await?; create_audit_action( db, diff --git a/crates/delta/src/routes/admin/accounts/account_disable.rs b/crates/delta/src/routes/admin/accounts/account_disable.rs index 4e96c2ed..5b3b311f 100644 --- a/crates/delta/src/routes/admin/accounts/account_disable.rs +++ b/crates/delta/src/routes/admin/accounts/account_disable.rs @@ -39,7 +39,9 @@ pub async fn admin_account_disable( } } - db.disable_authifier_account(&target.id).await?; + db.fetch_account(&target.id).await? + .disable(db) + .await?; create_audit_action( db, diff --git a/crates/delta/src/routes/servers/server_edit.rs b/crates/delta/src/routes/servers/server_edit.rs index a3a47cb8..a437ce8c 100644 --- a/crates/delta/src/routes/servers/server_edit.rs +++ b/crates/delta/src/routes/servers/server_edit.rs @@ -190,5 +190,5 @@ pub async fn edit_data( .update(db, partial, remove.into_iter().map(Into::into).collect()) .await?; - Ok(Json(server.into())) + Ok(()) }