Merge branch 'main' into feat/admin-api
# Conflicts: # crates/core/database/src/drivers/mod.rs # crates/core/database/src/drivers/reference.rs # crates/core/database/src/models/admin_migrations/ops/mongodb/init.rs # crates/core/database/src/models/channels/ops.rs # crates/core/database/src/models/server_members/ops.rs # crates/core/database/src/models/server_members/ops/mongodb.rs # crates/core/database/src/models/server_members/ops/reference.rs # crates/core/database/src/util/bridge/v0.rs # crates/core/result/src/axum.rs # crates/core/result/src/lib.rs # crates/core/result/src/rocket.rs # crates/delta/src/routes/mod.rs # crates/delta/src/routes/servers/server_edit.rs
This commit is contained in:
@@ -1,4 +1,8 @@
|
||||
use axum::{http::StatusCode, response::IntoResponse, Json};
|
||||
use axum::{
|
||||
http::{header, StatusCode},
|
||||
response::IntoResponse,
|
||||
Json,
|
||||
};
|
||||
|
||||
use crate::{Error, ErrorType};
|
||||
|
||||
@@ -95,6 +99,29 @@ impl IntoResponse for Error {
|
||||
ErrorType::FileTypeNotAllowed => StatusCode::BAD_REQUEST,
|
||||
ErrorType::ImageProcessingFailed => StatusCode::INTERNAL_SERVER_ERROR,
|
||||
ErrorType::NoEmbedData => StatusCode::BAD_REQUEST,
|
||||
ErrorType::RenderFail => StatusCode::INTERNAL_SERVER_ERROR,
|
||||
ErrorType::MissingHeaders => StatusCode::BAD_REQUEST,
|
||||
ErrorType::CaptchaFailed => StatusCode::BAD_REQUEST,
|
||||
ErrorType::BlockedByShield => StatusCode::BAD_REQUEST,
|
||||
ErrorType::UnverifiedAccount => StatusCode::FORBIDDEN,
|
||||
ErrorType::EmailFailed => StatusCode::INTERNAL_SERVER_ERROR,
|
||||
ErrorType::InvalidToken => StatusCode::UNAUTHORIZED,
|
||||
ErrorType::MissingInvite => StatusCode::BAD_REQUEST,
|
||||
ErrorType::InvalidInvite => StatusCode::BAD_REQUEST,
|
||||
ErrorType::CompromisedPassword => StatusCode::BAD_REQUEST,
|
||||
ErrorType::ShortPassword => StatusCode::BAD_REQUEST,
|
||||
ErrorType::Blacklisted => {
|
||||
return (
|
||||
StatusCode::UNAUTHORIZED,
|
||||
[(header::CONTENT_TYPE, "application/json")],
|
||||
"{\"type\":\"DisallowedContactSupport\", \"note\":\"If you see this messages right here, you're probably doing something you shouldn't be.\"}"
|
||||
).into_response()
|
||||
}
|
||||
ErrorType::LockedOut => StatusCode::FORBIDDEN,
|
||||
ErrorType::TotpAlreadyEnabled => StatusCode::BAD_REQUEST,
|
||||
ErrorType::DisallowedMFAMethod => StatusCode::BAD_REQUEST,
|
||||
ErrorType::OperationFailed => StatusCode::INTERNAL_SERVER_ERROR,
|
||||
ErrorType::IncorrectData { .. } => StatusCode::BAD_REQUEST,
|
||||
|
||||
ErrorType::ImATeaPot => StatusCode::IM_A_TEAPOT,
|
||||
|
||||
|
||||
@@ -166,6 +166,10 @@ pub enum ErrorType {
|
||||
FailedValidation {
|
||||
error: String,
|
||||
},
|
||||
OperationFailed,
|
||||
IncorrectData {
|
||||
with: String,
|
||||
},
|
||||
|
||||
// ? Voice errors
|
||||
LiveKitUnavailable,
|
||||
@@ -191,6 +195,25 @@ pub enum ErrorType {
|
||||
feature: String,
|
||||
},
|
||||
|
||||
// ? Authentication
|
||||
RenderFail,
|
||||
MissingHeaders,
|
||||
CaptchaFailed,
|
||||
BlockedByShield,
|
||||
UnverifiedAccount,
|
||||
EmailFailed,
|
||||
InvalidToken,
|
||||
MissingInvite,
|
||||
InvalidInvite,
|
||||
|
||||
CompromisedPassword,
|
||||
ShortPassword,
|
||||
Blacklisted,
|
||||
LockedOut,
|
||||
|
||||
TotpAlreadyEnabled,
|
||||
DisallowedMFAMethod,
|
||||
|
||||
// ? Admin API relate errors
|
||||
PrivilegedAccount,
|
||||
|
||||
|
||||
@@ -102,6 +102,32 @@ impl<'r> Responder<'r, 'static> for Error {
|
||||
ErrorType::NoEmbedData => Status::BadRequest,
|
||||
ErrorType::VosoUnavailable => Status::BadRequest,
|
||||
|
||||
ErrorType::RenderFail => Status::InternalServerError,
|
||||
ErrorType::MissingHeaders => Status::BadRequest,
|
||||
ErrorType::CaptchaFailed => Status::BadRequest,
|
||||
ErrorType::BlockedByShield => Status::BadRequest,
|
||||
ErrorType::UnverifiedAccount => Status::Forbidden,
|
||||
ErrorType::EmailFailed => Status::InternalServerError,
|
||||
ErrorType::InvalidToken => Status::Unauthorized,
|
||||
ErrorType::MissingInvite => Status::BadRequest,
|
||||
ErrorType::InvalidInvite => Status::BadRequest,
|
||||
ErrorType::CompromisedPassword => Status::BadRequest,
|
||||
ErrorType::ShortPassword => Status::BadRequest,
|
||||
ErrorType::Blacklisted => {
|
||||
// Fail blacklisted email addresses.
|
||||
const RESP: &str = "{\"type\":\"DisallowedContactSupport\", \"note\":\"If you see this messages right here, you're probably doing something you shouldn't be.\"}";
|
||||
|
||||
return Response::build()
|
||||
.status(Status::Unauthorized)
|
||||
.sized_body(RESP.len(), std::io::Cursor::new(RESP))
|
||||
.ok();
|
||||
}
|
||||
ErrorType::LockedOut => Status::Forbidden,
|
||||
ErrorType::TotpAlreadyEnabled => Status::BadRequest,
|
||||
ErrorType::DisallowedMFAMethod => Status::BadRequest,
|
||||
ErrorType::OperationFailed => Status::InternalServerError,
|
||||
ErrorType::IncorrectData { .. } => Status::BadRequest,
|
||||
|
||||
ErrorType::ImATeaPot => Status::ImATeapot,
|
||||
|
||||
ErrorType::PrivilegedAccount => Status::Forbidden,
|
||||
|
||||
Reference in New Issue
Block a user