From cfdac2b9f424a5c9e3d534b2dfdcd9f2ed93a085 Mon Sep 17 00:00:00 2001 From: "nik.n" Date: Thu, 4 Apr 2024 10:08:08 +0900 Subject: [PATCH] =?UTF-8?q?SQL=E6=9B=B4=E6=96=B0=E3=83=AD=E3=82=B8?= =?UTF-8?q?=E3=83=83=E3=82=AF=E5=A4=89=E6=9B=B4=E3=83=BB=E5=A4=B1=E6=95=97?= =?UTF-8?q?=E5=88=A4=E5=AE=9A=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-webapp/src/model/db/user_master.py | 6 +++++- .../src/repositories/user_master_repository.py | 10 ++++++++-- ecs/jskult-webapp/src/services/login_service.py | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) 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