From d869a91eaebf773fd999b69f87364c402197b781 Mon Sep 17 00:00:00 2001 From: "nik.n" Date: Fri, 12 Jan 2024 16:10:25 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-webapp/src/controller/logout.py | 108 ++++++++++-------- .../src/services/session_service.py | 47 +++++--- 2 files changed, 86 insertions(+), 69 deletions(-) diff --git a/ecs/jskult-webapp/src/controller/logout.py b/ecs/jskult-webapp/src/controller/logout.py index 8a633f6c..69de2c22 100644 --- a/ecs/jskult-webapp/src/controller/logout.py +++ b/ecs/jskult-webapp/src/controller/logout.py @@ -1,50 +1,58 @@ -from typing import Optional, Union - -from fastapi import APIRouter, Depends, Request -from fastapi.responses import HTMLResponse - -from src.depends.auth import get_current_session -from src.model.internal.session import UserSession -from src.model.view.logout_view_model import LogoutViewModel -from src.system_var import constants -from src.templates import templates - -router = APIRouter() - -######################### -# Views # -######################### - - -@router.get('/', response_class=HTMLResponse) -def logout_view( - request: Request, - reason: Optional[str] = None, - session: Union[UserSession, None] = Depends(get_current_session) -): - # どういうルートでログインしたかを判断するため、refererを取得 - referer = request.headers.get('referer', '') - - redirect_to = '/login/userlogin' - link_text = 'MeDaCA機能メニューへ' - # セッションが切れておらず、メンテユーザである、またはメンテログイン画面から遷移した場合、メンテログイン画面に戻す - if (session is not None and session.user_flg == str(constants.PERMISSION_ENABLED)) \ - or referer.endswith('maintlogin'): - redirect_to = '/login/maintlogin' - link_text = 'Login画面に戻る' - - logout = LogoutViewModel( - redirect_to=redirect_to, - reason=constants.LOGOUT_REASON_MESSAGE_MAP.get(reason, ''), - link_text=link_text - ) - template_response = templates.TemplateResponse( - 'logout.html', - { - 'request': request, - 'logout': logout, - } - ) - # クッキーを削除 - template_response.delete_cookie('session') - return template_response +from typing import Optional, Union + +from fastapi import APIRouter, Depends, Request +from fastapi.responses import HTMLResponse + +from src.depends.auth import get_current_session +from src.model.internal.session import UserSession +from src.model.view.logout_view_model import LogoutViewModel +from src.system_var import constants +from src.templates import templates + +router = APIRouter() + +######################### +# Views # +######################### + +def delete_session(session: Union[UserSession, None] = Depends(get_current_session)): + if session: + session.delete() + + +@router.get('/', response_class=HTMLResponse) +def logout_view( + request: Request, + reason: Optional[str] = None, + session: Union[UserSession, None] = Depends(get_current_session) +): + # どういうルートでログインしたかを判断するため、refererを取得 + referer = request.headers.get('referer', '') + + redirect_to = '/login/userlogin' + link_text = 'MeDaCA機能メニューへ' + # セッションが切れておらず、メンテユーザである、またはメンテログイン画面から遷移した場合、メンテログイン画面に戻す + if (session is not None and session.user_flg == str(constants.PERMISSION_ENABLED)) \ + or referer.endswith('maintlogin'): + redirect_to = '/login/maintlogin' + link_text = 'Login画面に戻る' + + logout = LogoutViewModel( + redirect_to=redirect_to, + reason=constants.LOGOUT_REASON_MESSAGE_MAP.get(reason, ''), + link_text=link_text + ) + template_response = templates.TemplateResponse( + 'logout.html', + { + 'request': request, + 'logout': logout, + } + ) + # クッキーを削除 + template_response.delete_cookie('session') + + # セッション削除 + delete_session(session) + + return template_response diff --git a/ecs/jskult-webapp/src/services/session_service.py b/ecs/jskult-webapp/src/services/session_service.py index 657e648d..48edbcd4 100644 --- a/ecs/jskult-webapp/src/services/session_service.py +++ b/ecs/jskult-webapp/src/services/session_service.py @@ -1,19 +1,28 @@ - -from src.logging.get_logger import get_logger -from src.model.internal.session import UserSession - -logger = get_logger('セッション管理') - - -def set_session(session: UserSession) -> str: - session.save() - return session.session_key - - -def get_session(key: str) -> UserSession: - try: - session = UserSession.get(hash_key=key, consistent_read=True) - return session - except UserSession.DoesNotExist as e: - logger.debug(f'セッション取得失敗:{e}') - return None + +from src.logging.get_logger import get_logger +from src.model.internal.session import UserSession + +logger = get_logger('セッション管理') + + +def set_session(session: UserSession) -> str: + session.save() + return session.session_key + + +def get_session(key: str) -> UserSession: + try: + session = UserSession.get(hash_key=key, consistent_read=True) + return session + except UserSession.DoesNotExist as e: + logger.debug(f'セッション取得失敗:{e}') + return None + +def delete_session (key: str) -> bool: + try: + session = UserSession.get(hash_key=key, consistent_read=True) + session.delete() + return True + except UserSession.DoesNotExist as e: + logger.debug(f'セッション削除失敗:{e}') + return False \ No newline at end of file From ead12039a7972bd34c89b2b2394cf4aafc2630d5 Mon Sep 17 00:00:00 2001 From: Nik Afiq Date: Mon, 15 Jan 2024 17:11:46 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=E6=8C=87=E6=91=98=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-webapp/src/controller/logout.py | 9 ++++----- ecs/jskult-webapp/src/services/session_service.py | 10 ++++------ 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/ecs/jskult-webapp/src/controller/logout.py b/ecs/jskult-webapp/src/controller/logout.py index 69de2c22..bae8a3aa 100644 --- a/ecs/jskult-webapp/src/controller/logout.py +++ b/ecs/jskult-webapp/src/controller/logout.py @@ -8,16 +8,14 @@ from src.model.internal.session import UserSession from src.model.view.logout_view_model import LogoutViewModel from src.system_var import constants from src.templates import templates +from src.services.session_service import SessionService router = APIRouter() ######################### # Views # ######################### - -def delete_session(session: Union[UserSession, None] = Depends(get_current_session)): - if session: - session.delete() + @router.get('/', response_class=HTMLResponse) @@ -53,6 +51,7 @@ def logout_view( template_response.delete_cookie('session') # セッション削除 - delete_session(session) + if session: + SessionService.delete_session(session) return template_response diff --git a/ecs/jskult-webapp/src/services/session_service.py b/ecs/jskult-webapp/src/services/session_service.py index 48edbcd4..b58d7241 100644 --- a/ecs/jskult-webapp/src/services/session_service.py +++ b/ecs/jskult-webapp/src/services/session_service.py @@ -18,11 +18,9 @@ def get_session(key: str) -> UserSession: logger.debug(f'セッション取得失敗:{e}') return None -def delete_session (key: str) -> bool: +def delete_session (session: UserSession): try: - session = UserSession.get(hash_key=key, consistent_read=True) session.delete() - return True - except UserSession.DoesNotExist as e: - logger.debug(f'セッション削除失敗:{e}') - return False \ No newline at end of file + return + except: + return \ No newline at end of file From 5c49c92b6b8d1d8aae984aa95ed7628d451fd068 Mon Sep 17 00:00:00 2001 From: Nik Afiq Date: Mon, 15 Jan 2024 17:12:39 +0900 Subject: [PATCH 3/4] =?UTF-8?q?'=E6=8C=87=E6=91=98=E4=BF=AE=E6=AD=A3'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-webapp/.vscode/recommended_settings.json | 1 - 1 file changed, 1 deletion(-) diff --git a/ecs/jskult-webapp/.vscode/recommended_settings.json b/ecs/jskult-webapp/.vscode/recommended_settings.json index d5ce3e07..1999a40e 100644 --- a/ecs/jskult-webapp/.vscode/recommended_settings.json +++ b/ecs/jskult-webapp/.vscode/recommended_settings.json @@ -6,7 +6,6 @@ "source.organizeImports": true } }, - // 自身の環境に合わせて変えてください "python.defaultInterpreterPath": "", "python.linting.lintOnSave": true, "python.linting.enabled": true, From 6371924bd930baf9a9b5da76b3282d48414a40d2 Mon Sep 17 00:00:00 2001 From: "nik.n" Date: Tue, 16 Jan 2024 14:00:57 +0900 Subject: [PATCH 4/4] =?UTF-8?q?'=E6=8C=87=E6=91=98=E5=AF=BE=E5=BF=9C?= =?UTF-8?q?=EF=BC=9Aimport=E4=BF=AE=E6=AD=A3=E3=83=BB=E5=91=BC=E3=81=B3?= =?UTF-8?q?=E5=87=BA=E3=81=97=E4=BF=AE=E6=AD=A3'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-webapp/.vscode/recommended_settings.json | 1 + ecs/jskult-webapp/src/controller/logout.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ecs/jskult-webapp/.vscode/recommended_settings.json b/ecs/jskult-webapp/.vscode/recommended_settings.json index 1999a40e..d5ce3e07 100644 --- a/ecs/jskult-webapp/.vscode/recommended_settings.json +++ b/ecs/jskult-webapp/.vscode/recommended_settings.json @@ -6,6 +6,7 @@ "source.organizeImports": true } }, + // 自身の環境に合わせて変えてください "python.defaultInterpreterPath": "", "python.linting.lintOnSave": true, "python.linting.enabled": true, diff --git a/ecs/jskult-webapp/src/controller/logout.py b/ecs/jskult-webapp/src/controller/logout.py index bae8a3aa..76d9ef60 100644 --- a/ecs/jskult-webapp/src/controller/logout.py +++ b/ecs/jskult-webapp/src/controller/logout.py @@ -8,7 +8,7 @@ from src.model.internal.session import UserSession from src.model.view.logout_view_model import LogoutViewModel from src.system_var import constants from src.templates import templates -from src.services.session_service import SessionService +from src.services import session_service router = APIRouter() @@ -52,6 +52,6 @@ def logout_view( # セッション削除 if session: - SessionService.delete_session(session) + session_service.delete_session(session) return template_response