diff --git a/backend/dvadmin/system/views/login.py b/backend/dvadmin/system/views/login.py index 35923cc..766a6c7 100644 --- a/backend/dvadmin/system/views/login.py +++ b/backend/dvadmin/system/views/login.py @@ -1,11 +1,9 @@ import base64 import hashlib from datetime import datetime, timedelta - from captcha.views import CaptchaStore, captcha_image from django.contrib import auth from django.contrib.auth import login -from django.contrib.auth.hashers import make_password, check_password from django.shortcuts import redirect from django.utils.translation import gettext_lazy as _ from drf_yasg import openapi @@ -14,9 +12,7 @@ from rest_framework import serializers from rest_framework.views import APIView from rest_framework_simplejwt.serializers import TokenObtainPairSerializer from rest_framework_simplejwt.views import TokenObtainPairView - from django.conf import settings - from application import dispatch from dvadmin.system.models import Users from dvadmin.utils.json_response import ErrorResponse, DetailResponse @@ -58,6 +54,7 @@ class LoginSerializer(TokenObtainPairSerializer): captcha = serializers.CharField( max_length=6, required=False, allow_null=True, allow_blank=True ) + class Meta: model = Users fields = "__all__" @@ -79,13 +76,18 @@ class LoginSerializer(TokenObtainPairSerializer): raise CustomValidationError("验证码过期") else: if self.image_code and ( - self.image_code.response == captcha - or self.image_code.challenge == captcha + self.image_code.response == captcha + or self.image_code.challenge == captcha ): self.image_code and self.image_code.delete() else: self.image_code and self.image_code.delete() raise CustomValidationError("图片验证码错误") + + user = Users.objects.get(username=attrs['username']) + if not user.is_active: + raise CustomValidationError("账号被锁定") + data = super().validate(attrs) data["name"] = self.user.name data["userId"] = self.user.id @@ -107,6 +109,7 @@ class LoginSerializer(TokenObtainPairSerializer): save_login_log(request=request) return {"code": 2000, "msg": "请求成功", "data": data} + class LoginView(TokenObtainPairView): """ 登录接口 diff --git a/web/src/views/system/user/crud.tsx b/web/src/views/system/user/crud.tsx index deda080..c09ab52 100644 --- a/web/src/views/system/user/crud.tsx +++ b/web/src/views/system/user/crud.tsx @@ -1,15 +1,12 @@ import * as api from './api'; -import { dict, PageQuery, AddReq, DelReq, EditReq, CrudExpose, CrudOptions, compute } from '@fast-crud/fast-crud'; +import { dict, UserPageQuery, AddReq, DelReq, EditReq, compute, CreateCrudOptionsProps, CreateCrudOptionsRet } from '@fast-crud/fast-crud'; import { request } from '/@/utils/service'; import { dictionary } from '/@/utils/dictionary'; import { successMessage } from '/@/utils/message'; import { inject } from 'vue'; -interface CreateCrudOptionsTypes { - crudOptions: CrudOptions; -} -export const createCrudOptions = function ({ crudExpose }: { crudExpose: CrudExpose }): CreateCrudOptionsTypes { - const pageRequest = async (query: PageQuery) => { +export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet { + const pageRequest = async (query: UserPageQuery) => { return await api.GetList(query); }; const editRequest = async ({ form, row }: EditReq) => { diff --git a/web/src/views/system/user/index.vue b/web/src/views/system/user/index.vue index c6fe04d..99e88e3 100644 --- a/web/src/views/system/user/index.vue +++ b/web/src/views/system/user/index.vue @@ -1,65 +1,64 @@