diff --git a/crates/ezidam/src/error.rs b/crates/ezidam/src/error.rs index 96ea2ef..35f1290 100644 --- a/crates/ezidam/src/error.rs +++ b/crates/ezidam/src/error.rs @@ -47,4 +47,8 @@ impl Error { pub fn bad_request(value: M) -> Self { Self::new(Status::BadRequest, value) } + + pub fn forbidden(value: M) -> Self { + Self::new(Status::Forbidden, value) + } } diff --git a/crates/ezidam/src/routes/oauth/redirect.rs b/crates/ezidam/src/routes/oauth/redirect.rs index e125e3b..aaae0c2 100644 --- a/crates/ezidam/src/routes/oauth/redirect.rs +++ b/crates/ezidam/src/routes/oauth/redirect.rs @@ -40,6 +40,11 @@ pub async fn redirect_page( .await? .ok_or_else(|| Error::not_found("Could not find user"))?; + // Check if user is archived + if user.is_archived() { + return Err(Error::forbidden("User is archived")); + } + // Mark code as used code.use_code(&mut transaction).await?;