diff --git a/src/database/controller/login_protection.rs b/src/database/controller/login_protection.rs index 5fea7e2..ae76543 100644 --- a/src/database/controller/login_protection.rs +++ b/src/database/controller/login_protection.rs @@ -28,12 +28,11 @@ pub fn login_attempts_exceeded(settings: &State, email: String) -> Res if result.count > settings.application.max_login_attempts as i64 { Ok(true) }else{ - add_login_attempt(settings, email)?; Ok(false) } } -fn add_login_attempt(settings: &State, email2: String) -> Result<(), diesel::result::Error>{ +pub(crate) fn add_login_attempt(settings: &State, email2: String) -> Result<(), diesel::result::Error>{ use crate::schema::login_attempts::dsl::{login_attempts, email}; let connection = establish_connection(settings); diff --git a/src/modules/welcome/controller/login.rs b/src/modules/welcome/controller/login.rs index 9b84fac..dd86e76 100644 --- a/src/modules/welcome/controller/login.rs +++ b/src/modules/welcome/controller/login.rs @@ -4,10 +4,12 @@ use crate::helper::session_cookies::model::SessionCookieStorage; use crate::modules::welcome::model::login_error_type::LoginError; use crate::helper::settings::Settings; use crate::modules::welcome::model::login_form::LoginForm; +use crate::database::controller::login_protection::add_login_attempt; use chrono::{Duration, Utc}; use rocket::http::{Cookie, Cookies}; use rocket::State; use crate::database::controller::login_protection::login_attempts_exceeded; +use diesel::result::Error; pub fn check_login(login_form: LoginForm, settings: &State) -> Result { let user: User = match get_user_by_email(login_form.login_email.clone().to_lowercase(), &settings){ @@ -29,7 +31,10 @@ pub fn check_login(login_form: LoginForm, settings: &State) -> Result< if result{ return Err(LoginError::MaxLoginAttemptsExceeded) }else{ - return Err(LoginError::UserNotFound) + match add_login_attempt(settings, login_form.login_email.to_lowercase()){ + Ok(_) => return Err(LoginError::UserNotFound), + Err(_) => return Err(LoginError::DatabaseError) + } } }, Err(_) => {