Skip to content

Commit 4716fa1

Browse files
committed
fix: refactor login.py for improved readability and logging enhancements
1 parent d56db5d commit 4716fa1

1 file changed

Lines changed: 55 additions & 45 deletions

File tree

‎apps/users/views/login.py‎

Lines changed: 55 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,65 @@
11
# coding=utf-8
22
"""
3-
@project: MaxKB
4-
@Author:虎虎
5-
@file: user.py
6-
@date:2025/4/14 10:22
7-
@desc:
3+
@project: MaxKB
4+
@Author:虎虎
5+
@file: user.py
6+
@date:2025/4/14 10:22
7+
@desc:
88
"""
9-
from django.core.cache import cache
10-
from django.utils.translation import gettext_lazy as _
11-
from drf_spectacular.utils import extend_schema
12-
from rest_framework.request import Request
13-
from rest_framework.views import APIView
149

1510
from common import result
1611
from common.auth import TokenAuth
1712
from common.constants.cache_version import Cache_Version
1813
from common.log.log import log
1914
from common.utils.common import encryption
15+
from django.core.cache import cache
16+
from django.utils.translation import gettext_lazy as _
17+
from drf_spectacular.utils import extend_schema
2018
from maxkb.const import CONFIG
2119
from models_provider.api.model import DefaultModelResponse
22-
from users.api.login import LoginAPI, CaptchaAPI
23-
from users.serializers.login import LoginSerializer, CaptchaSerializer
20+
from rest_framework.request import Request
21+
from rest_framework.views import APIView
22+
from users.api.login import CaptchaAPI, LoginAPI
23+
from users.serializers.login import CaptchaSerializer, LoginSerializer
2424

2525

2626
def _get_details(request):
2727
path = request.path
2828
body = request.data
2929
query = request.query_params
30-
return {
31-
'path': path,
32-
'body': {**body, 'password': encryption(body.get('password', ''))},
33-
'query': query
34-
}
30+
return {"path": path, "body": {**body, "password": encryption(body.get("password", ""))}, "query": query}
3531

3632

3733
class LoginView(APIView):
38-
@extend_schema(methods=['POST'],
39-
description=_("Log in"),
40-
summary=_("Log in"),
41-
operation_id=_("Log in"), # type: ignore
42-
tags=[_("User Management")], # type: ignore
43-
request=LoginAPI.get_request(),
44-
responses=LoginAPI.get_response())
45-
@log(menu='User management', operate='Log in', get_user=lambda r: {'username': r.data.get('username', None)},
46-
get_details=_get_details,
47-
get_operation_object=lambda r, k: {'name': r.data.get('username')})
34+
@extend_schema(
35+
methods=["POST"],
36+
description=_("Log in"),
37+
summary=_("Log in"),
38+
operation_id=_("Log in"), # type: ignore
39+
tags=[_("User Management")], # type: ignore
40+
request=LoginAPI.get_request(),
41+
responses=LoginAPI.get_response(),
42+
)
43+
@log(
44+
menu="User management",
45+
operate="Log in",
46+
get_user=lambda r: {"username": r.data.get("username", None)},
47+
get_details=_get_details,
48+
get_operation_object=lambda r, k: {"name": r.data.get("username")},
49+
)
4850
def post(self, request: Request):
4951
token, f_token = LoginSerializer().login(request.data)
5052
response = result.success(token)
53+
from common.utils.logger import maxkb_logger
54+
55+
maxkb_logger.info(
56+
f"LoginView.post: request.scheme={request.scheme}, request.is_secure()={request.is_secure()}, request.META['wsgi.url_scheme']={request.META.get('wsgi.url_scheme')}, request.META['HTTPS']={request.META.get('HTTPS')}"
57+
)
5158
response.set_cookie(
52-
'mk_file_auth',
59+
"mk_file_auth",
5360
value=f_token,
5461
max_age=7 * 24 * 3600,
55-
path=f'{CONFIG.get_admin_path()}',
62+
path=f"{CONFIG.get_admin_path()}",
5663
domain=None,
5764
secure=request.scheme == "https",
5865
httponly=True,
@@ -64,27 +71,30 @@ def post(self, request: Request):
6471
class Logout(APIView):
6572
authentication_classes = [TokenAuth]
6673

67-
@extend_schema(methods=['POST'],
68-
summary=_("Sign out"),
69-
description=_("Sign out"),
70-
operation_id=_("Sign out"), # type: ignore
71-
tags=[_("User Management")], # type: ignore
72-
responses=DefaultModelResponse.get_response())
73-
@log(menu='User management', operate='Sign out',
74-
get_operation_object=lambda r, k: {'name': r.user.username})
74+
@extend_schema(
75+
methods=["POST"],
76+
summary=_("Sign out"),
77+
description=_("Sign out"),
78+
operation_id=_("Sign out"), # type: ignore
79+
tags=[_("User Management")], # type: ignore
80+
responses=DefaultModelResponse.get_response(),
81+
)
82+
@log(menu="User management", operate="Sign out", get_operation_object=lambda r, k: {"name": r.user.username})
7583
def post(self, request: Request):
7684
version, get_key = Cache_Version.TOKEN.value
77-
cache.delete(get_key(token=request.META.get('HTTP_AUTHORIZATION')[7:]), version=version)
85+
cache.delete(get_key(token=request.META.get("HTTP_AUTHORIZATION")[7:]), version=version)
7886
return result.success(True)
7987

8088

8189
class CaptchaView(APIView):
82-
@extend_schema(methods=['GET'],
83-
summary=_("Get captcha"),
84-
description=_("Get captcha"),
85-
operation_id=_("Get captcha"), # type: ignore
86-
tags=[_("User Management")], # type: ignore
87-
responses=CaptchaAPI.get_response())
90+
@extend_schema(
91+
methods=["GET"],
92+
summary=_("Get captcha"),
93+
description=_("Get captcha"),
94+
operation_id=_("Get captcha"), # type: ignore
95+
tags=[_("User Management")], # type: ignore
96+
responses=CaptchaAPI.get_response(),
97+
)
8898
def get(self, request: Request):
89-
username = request.query_params.get('username', None)
99+
username = request.query_params.get("username", None)
90100
return result.success(CaptchaSerializer().generate(username))

0 commit comments

Comments
 (0)