diff --git a/ecs/jskult-webapp/src/model/db/user_master.py b/ecs/jskult-webapp/src/model/db/user_master.py index 879cd008..d86253ae 100644 --- a/ecs/jskult-webapp/src/model/db/user_master.py +++ b/ecs/jskult-webapp/src/model/db/user_master.py @@ -2,6 +2,7 @@ from datetime import datetime from typing import Optional from src.model.db.base_db_model import BaseDBModel +from src.system_var import constants class UserMasterModel(BaseDBModel): user_id: Optional[str] @@ -34,4 +35,7 @@ class UserMasterModel(BaseDBModel): return self.mntuser_flg == '1' def is_groupware_user(self): - return self.mntuser_flg == '0' or self.mntuser_flg is None \ No newline at end of file + return self.mntuser_flg == '0' or self.mntuser_flg is None + + def is_login_failed_limit_exceeded(self): + return self.mntuser_login_failed_cnt >= constants.LOGIN_FAIL_LIMIT \ No newline at end of file diff --git a/ecs/jskult-webapp/src/repositories/user_master_repository.py b/ecs/jskult-webapp/src/repositories/user_master_repository.py index 0516ec79..dcb10aa9 100644 --- a/ecs/jskult-webapp/src/repositories/user_master_repository.py +++ b/ecs/jskult-webapp/src/repositories/user_master_repository.py @@ -35,8 +35,14 @@ class UserMasterRepository(BaseRepository): SET mntuser_login_failed_cnt = CASE - WHEN DATE(mntuser_last_login_failed_datetime) = CURRENT_DATE() THEN mntuser_login_failed_cnt + 1 - ELSE 1 + WHEN + DATE(mntuser_last_login_failed_datetime) = CURRENT_DATE() + OR + mntuser_login_failed_cnt >= 10 + THEN + mntuser_login_failed_cnt + 1 + ELSE + 1 END, mntuser_last_login_failed_datetime = CURRENT_TIMESTAMP() WHERE diff --git a/ecs/jskult-webapp/src/services/login_service.py b/ecs/jskult-webapp/src/services/login_service.py index fa75b5bf..2ea0724a 100644 --- a/ecs/jskult-webapp/src/services/login_service.py +++ b/ecs/jskult-webapp/src/services/login_service.py @@ -59,7 +59,7 @@ class LoginService(BaseService): user_record: UserMasterModel = self.user_repository.fetch_one({'user_id': user_id}) if user_record is None: return False - return user_record.mntuser_login_failed_cnt >= constants.LOGIN_FAIL_LIMIT + return user_record.is_login_failed_limit_exceeded() def __secret_hash(self, username: str): # see - https://aws.amazon.com/jp/premiumsupport/knowledge-center/cognito-unable-to-verify-secret-hash/ # noqa