Authentication flow improvements

This commit is contained in:
mdecimus
2024-06-29 13:11:41 +02:00
parent d8a73cd0e4
commit 4e9b43b26d
13 changed files with 334 additions and 125 deletions

View File

@@ -7,7 +7,7 @@
use common::{
config::server::ServerProtocol,
listener::{limiter::ConcurrencyLimiter, SessionStream},
AuthResult,
AuthFailureReason, AuthResult,
};
use imap::op::authenticate::{decode_challenge_oauth, decode_challenge_plain};
use imap_proto::{
@@ -93,12 +93,14 @@ impl<T: SessionStream> Session<T> {
.await
{
AuthResult::Success(token) => Some(token),
AuthResult::Failure => None,
AuthResult::MissingTotp => {
AuthResult::Failure(
AuthFailureReason::InvalidCredentials | AuthFailureReason::InternalError(_),
) => None,
AuthResult::Failure(AuthFailureReason::MissingTotp) => {
is_totp_error = true;
None
}
AuthResult::Banned => {
AuthResult::Failure(AuthFailureReason::Banned) => {
return Err(StatusResponse::bye(
"Too many authentication requests from this IP address.",
))