diff --git a/apps/auth1/serializers.py b/apps/auth1/serializers.py index 2732bf2a..e0272603 100755 --- a/apps/auth1/serializers.py +++ b/apps/auth1/serializers.py @@ -20,6 +20,10 @@ class WxCodeSerializer(serializers.Serializer): code = serializers.CharField(label="code") +class UserIdSerializer(serializers.Serializer): + user_id = serializers.CharField(label="用户id") + + class PwResetSerializer(serializers.Serializer): phone = serializers.CharField(label="手机号") code = serializers.CharField(label="验证码") diff --git a/apps/auth1/urls.py b/apps/auth1/urls.py index e2244f90..f73bc67e 100755 --- a/apps/auth1/urls.py +++ b/apps/auth1/urls.py @@ -3,7 +3,8 @@ from django.urls import path from rest_framework_simplejwt.views import TokenRefreshView from apps.auth1.views import (CodeLogin, LoginView, LogoutView, PwResetView, - SecretLogin, SendCode, TokenBlackView, WxLogin, WxmpLogin, TokenLoginView, FaceLoginView) + SecretLogin, SendCode, TokenBlackView, WxLogin, WxmpLogin, + TokenLoginView, FaceLoginView, UserIdLogin) API_BASE_URL = 'api/auth/' urlpatterns = [ @@ -18,5 +19,6 @@ urlpatterns = [ path(API_BASE_URL + 'sms_code/', SendCode.as_view(), name='sms_code_send'), path(API_BASE_URL + 'logout/', LogoutView.as_view(), name='session_logout'), path(API_BASE_URL + 'reset_password/', PwResetView.as_view(), name='reset_password'), - path(API_BASE_URL + 'login_face/', FaceLoginView.as_view(), name='face_login') + path(API_BASE_URL + 'login_face/', FaceLoginView.as_view(), name='face_login'), + path(API_BASE_URL + 'login_userid/', UserIdLogin.as_view(), name='userid_login'), ] diff --git a/apps/auth1/views.py b/apps/auth1/views.py index fd40936d..e2fbded5 100755 --- a/apps/auth1/views.py +++ b/apps/auth1/views.py @@ -23,7 +23,8 @@ from apps.auth1.serializers import FaceLoginSerializer from apps.auth1.serializers import (CodeLoginSerializer, LoginSerializer, - PwResetSerializer, SecretLoginSerializer, SendCodeSerializer, WxCodeSerializer) + PwResetSerializer, SecretLoginSerializer, + SendCodeSerializer, WxCodeSerializer, UserIdSerializer) from apps.system.models import User from rest_framework_simplejwt.views import TokenObtainPairView from apps.auth1.authentication import get_user_by_username_or @@ -234,6 +235,29 @@ class SecretLogin(CreateAPIView): return Response(ret) raise ParseError('登录失败') +class UserIdLogin(CreateAPIView): + """直接UserId登录(危险操作) + + 直接UserId登录 + """ + authentication_classes = [] + permission_classes = [] + serializer_class = UserIdSerializer + + def post(self, request): + sr = UserIdSerializer(data=request.data) + sr.is_valid(raise_exception=True) + vdata = sr.validated_data + userid = vdata['user_id'] + try: + user = User.objects.get(id=userid) + except Exception as e: + raise ParseError(f'用户不存在-{e}') + if user: + ret = get_tokens_for_user(user) + return Response(ret) + raise ParseError('登录失败') + class PwResetView(CreateAPIView): """重置密码