diff --git a/ecs/jskult-webapp/src/controller/login.py b/ecs/jskult-webapp/src/controller/login.py
index c9555df7..6eee5b31 100644
--- a/ecs/jskult-webapp/src/controller/login.py
+++ b/ecs/jskult-webapp/src/controller/login.py
@@ -69,12 +69,10 @@ def login(
# ユーザーマスタ検索
pre_login_user_record = login_service.logged_in_user(request.username)
# ログイン失敗回数が10回以上あれば、ログアウト画面にリダイレクトする
- if pre_login_user_record is not None and pre_login_user_record.mntuser_login_failed_cnt >= constants.LOGIN_FAIL_LIMIT:
+ if pre_login_user_record is not None and pre_login_user_record.is_login_failed_limit_exceeded():
logger.info(f'ログイン失敗回数が10回以上: {request.username}')
- # ユーザーが有効の場合、DBにアカウント無効にする
- if pre_login_user_record.enabled_flg == 'Y':
- login_service.on_retry_limit_exceeded(request.username)
- raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail=constants.LOGOUT_REASON_RETRY_LIMIT_EXCEEDED)
+ login_service.on_login_fail_limit_exceeded(request.username)
+ raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail=constants.LOGOUT_REASON_LOGIN_FAILED_LIMIT_EXCEEDED)
try:
jwt_token = login_service.login(request.username, request.password)
diff --git a/ecs/jskult-webapp/src/model/db/user_master.py b/ecs/jskult-webapp/src/model/db/user_master.py
index 8e5fb2ad..b8dee115 100644
--- a/ecs/jskult-webapp/src/model/db/user_master.py
+++ b/ecs/jskult-webapp/src/model/db/user_master.py
@@ -2,7 +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]
@@ -36,3 +36,6 @@ class UserMasterModel(BaseDBModel):
def is_groupware_user(self):
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
diff --git a/ecs/jskult-webapp/src/repositories/user_master_repository.py b/ecs/jskult-webapp/src/repositories/user_master_repository.py
index 3a4316d8..0516ec79 100644
--- a/ecs/jskult-webapp/src/repositories/user_master_repository.py
+++ b/ecs/jskult-webapp/src/repositories/user_master_repository.py
@@ -27,7 +27,7 @@ class UserMasterRepository(BaseRepository):
logger.exception(f"DB Error : Exception={e}")
raise e
- def increase_login_retry_count(self, parameter: dict) -> UserMasterModel:
+ def increase_login_failed_count(self, parameter: dict) -> UserMasterModel:
try:
query = """\
UPDATE
@@ -38,7 +38,7 @@ class UserMasterRepository(BaseRepository):
WHEN DATE(mntuser_last_login_failed_datetime) = CURRENT_DATE() THEN mntuser_login_failed_cnt + 1
ELSE 1
END,
- mntuser_last_login_failed_datetime = CURRENT_DATE()
+ mntuser_last_login_failed_datetime = CURRENT_TIMESTAMP()
WHERE
user_id = :user_id
AND
diff --git a/ecs/jskult-webapp/src/services/login_service.py b/ecs/jskult-webapp/src/services/login_service.py
index 12fa05f4..ded8b7b7 100644
--- a/ecs/jskult-webapp/src/services/login_service.py
+++ b/ecs/jskult-webapp/src/services/login_service.py
@@ -50,9 +50,9 @@ class LoginService(BaseService):
return user_record
def incorrect_login_password_attempt(self, user_id: str):
- self.user_repository.increase_login_retry_count({'user_id': user_id})
+ self.user_repository.increase_login_failed_count({'user_id': user_id})
- def on_retry_limit_exceeded(self, user_id: str):
+ def on_login_fail_limit_exceeded(self, user_id: str):
self.user_repository.disable_mnt_user({'user_id': user_id})
def __secret_hash(self, username: str):
diff --git a/ecs/jskult-webapp/src/system_var/constants.py b/ecs/jskult-webapp/src/system_var/constants.py
index 8758d585..6422fdd5 100644
--- a/ecs/jskult-webapp/src/system_var/constants.py
+++ b/ecs/jskult-webapp/src/system_var/constants.py
@@ -63,7 +63,7 @@ LOGOUT_REASON_BACKUP_PROCESSING = 'dump_processing'
LOGOUT_REASON_NOT_LOGIN = 'not_login'
LOGOUT_REASON_DB_ERROR = 'db_error'
LOGOUT_REASON_UNEXPECTED = 'unexpected'
-LOGOUT_REASON_RETRY_LIMIT_EXCEEDED = 'retry_limit_exceeded'
+LOGOUT_REASON_LOGIN_FAILED_LIMIT_EXCEEDED = 'retry_limit_exceeded'
LOGOUT_REASON_MESSAGE_MAP = {
LOGOUT_REASON_DO_LOGOUT: 'Logoutしました。',
@@ -74,7 +74,7 @@ LOGOUT_REASON_MESSAGE_MAP = {
LOGOUT_REASON_NOT_LOGIN: 'Loginしてからページにアクセスしてください。',
LOGOUT_REASON_DB_ERROR: 'DB接続に失敗しました。
再度Loginするか、
管理者にお問い合わせください。',
LOGOUT_REASON_UNEXPECTED: '予期しないエラーが発生しました。
再度Loginするか、
管理者に問い合わせてください。',
- LOGOUT_REASON_RETRY_LIMIT_EXCEEDED: 'ログイン失敗回数の上限を超えましたので
アカウントをロックしました。
管理者に連絡してください'
+ LOGOUT_REASON_LOGIN_FAILED_LIMIT_EXCEEDED: 'ログイン失敗回数の上限を超えましたので
アカウントをロックしました。
管理者に連絡してください'
}
# 新規施設担当者登録CSV(マスターメンテ)