from typing import Optional, Union from fastapi import APIRouter, Depends, Request from fastapi.responses import HTMLResponse from src.depends.auth import verify_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(verify_session) ): redirect_to = '/login/userlogin' link_text = 'MeDaCA機能メニューへ' if session is not None and session.user_flg == '1': redirect_to = '/login/maintlogin' link_text = 'Login画面に戻る' logout = LogoutViewModel() logout.redirect_to = redirect_to logout.reason = constants.LOGOUT_REASON_MESSAGE_MAP.get(reason, '') logout.link_text = link_text template_response = templates.TemplateResponse( 'logout.html', { 'request': request, 'logout': logout, } ) # クッキーを削除 template_response.delete_cookie('session') return template_response