fix: ユーザーマスタ更新時のタイムゾーンをJSTに変更(共通関数を使用)
This commit is contained in:
parent
166dde4848
commit
db0e28db3e
@ -70,7 +70,9 @@ def login(
|
||||
jwt_token = login_service.login(request.username, request.password)
|
||||
except NotAuthorizeException as e:
|
||||
logger.info(f'ログイン失敗:{e}')
|
||||
# ログイン失敗回数をカウント
|
||||
login_service.increase_login_failed_count(request.username)
|
||||
# ログイン失敗回数を超過した場合はメッセージを変える
|
||||
if login_service.is_login_failed_limit_exceeded(request.username):
|
||||
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)
|
||||
|
||||
@ -189,7 +189,9 @@ class DatabaseClient:
|
||||
self.__session = None
|
||||
|
||||
def to_jst(self):
|
||||
self.execute('SET time_zone = "+9:00"')
|
||||
# self.session.begin()
|
||||
self.execute('SET SESSION time_zone = "Asia/Tokyo"')
|
||||
# self.session.commit()
|
||||
|
||||
def __execute_with_transaction(self, query: str, parameters: dict):
|
||||
# トランザクションを開始してクエリを実行する
|
||||
|
||||
@ -6,6 +6,19 @@ logger = get_logger('ユーザー取得')
|
||||
|
||||
|
||||
class UserMasterRepository(BaseRepository):
|
||||
|
||||
def to_jst(self):
|
||||
self._database.to_jst()
|
||||
|
||||
def begin(self):
|
||||
self._database.begin()
|
||||
|
||||
def commit(self):
|
||||
self._database.commit()
|
||||
|
||||
def rollback(self):
|
||||
self._database.rollback()
|
||||
|
||||
FETCH_SQL = """\
|
||||
SELECT
|
||||
*
|
||||
@ -30,29 +43,29 @@ class UserMasterRepository(BaseRepository):
|
||||
def increase_login_failed_count(self, parameter: dict) -> UserMasterModel:
|
||||
try:
|
||||
query = """\
|
||||
UPDATE
|
||||
src05.user_mst
|
||||
SET
|
||||
mntuser_login_failed_cnt =
|
||||
CASE
|
||||
WHEN
|
||||
DATE(mntuser_last_login_failed_datetime) = DATE(CONVERT_TZ(CURRENT_TIMESTAMP() ,'Etc/GMT-0','Asia/Tokyo'))
|
||||
THEN
|
||||
UPDATE
|
||||
src05.user_mst
|
||||
SET
|
||||
mntuser_login_failed_cnt =
|
||||
CASE
|
||||
WHEN
|
||||
DATE(mntuser_last_login_failed_datetime) = DATE(CURRENT_TIMESTAMP())
|
||||
THEN
|
||||
mntuser_login_failed_cnt + 1
|
||||
ELSE
|
||||
ELSE
|
||||
1
|
||||
END,
|
||||
mntuser_last_login_failed_datetime = CONVERT_TZ(CURRENT_TIMESTAMP() ,'Etc/GMT-0','Asia/Tokyo')
|
||||
WHERE
|
||||
END,
|
||||
mntuser_last_login_failed_datetime = CURRENT_TIMESTAMP()
|
||||
WHERE
|
||||
user_id = :user_id
|
||||
AND
|
||||
AND
|
||||
mntuser_flg = 1;\
|
||||
"""
|
||||
self._database.execute(query, parameter)
|
||||
except Exception as e:
|
||||
logger.exception(f"DB Error : Exception={e}")
|
||||
raise e
|
||||
|
||||
|
||||
def disable_mnt_user(self, parameter: dict) -> UserMasterModel:
|
||||
try:
|
||||
query = """\
|
||||
@ -68,4 +81,4 @@ class UserMasterRepository(BaseRepository):
|
||||
self._database.execute(query, parameter)
|
||||
except Exception as e:
|
||||
logger.exception(f"DB Error : Exception={e}")
|
||||
raise e
|
||||
raise e
|
||||
|
||||
@ -11,7 +11,7 @@ from src.repositories.base_repository import BaseRepository
|
||||
from src.repositories.user_master_repository import UserMasterRepository
|
||||
from src.services.base_service import BaseService
|
||||
from src.system_var import environment
|
||||
from src.system_var import constants
|
||||
|
||||
|
||||
class LoginService(BaseService):
|
||||
REPOSITORIES = {
|
||||
@ -50,7 +50,16 @@ class LoginService(BaseService):
|
||||
return user_record
|
||||
|
||||
def increase_login_failed_count(self, user_id: str):
|
||||
self.user_repository.increase_login_failed_count({'user_id': user_id})
|
||||
|
||||
try:
|
||||
# セッション内のタイムゾーン変更のため、明示的にトランザクションを開始する
|
||||
self.user_repository.begin()
|
||||
self.user_repository.to_jst()
|
||||
self.user_repository.increase_login_failed_count({'user_id': user_id})
|
||||
self.user_repository.commit()
|
||||
except Exception as e:
|
||||
self.user_repository.rollback()
|
||||
raise e
|
||||
|
||||
def on_login_fail_limit_exceeded(self, user_id: str):
|
||||
self.user_repository.disable_mnt_user({'user_id': user_id})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user