44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
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
|