fix: 添加用户管理权限、用户管理列表返回角色,创建时间等信息

This commit is contained in:
shaohuzhang1 2024-03-20 13:03:38 +08:00
parent 40031bd29d
commit 63fbfb4631
6 changed files with 49 additions and 12 deletions

View File

@ -4,7 +4,6 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('setting', '0001_initial'),
]
@ -15,7 +14,7 @@ class Migration(migrations.Migration):
fields=[
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='修改时间')),
('type', models.IntegerField(choices=[('0', '邮箱')], default='0', max_length=5, primary_key=True, serialize=False, verbose_name='设置类型')),
('type', models.IntegerField(choices=[(0, '邮箱'), (1, '私钥秘钥')], default=0, primary_key=True, serialize=False, verbose_name='设置类型')),
('meta', models.JSONField(default=dict, verbose_name='配置数据')),
],
options={

View File

@ -24,7 +24,7 @@ class SystemSetting(AppModelMixin):
"""
系统设置
"""
type = models.IntegerField(primary_key=True, verbose_name='设置类型', max_length=5, choices=SettingType.choices,
type = models.IntegerField(primary_key=True, verbose_name='设置类型', choices=SettingType.choices,
default=SettingType.EMAIL)
meta = models.JSONField(verbose_name="配置数据", default=dict)

View File

@ -0,0 +1,23 @@
# Generated by Django 4.1.13 on 2024-03-20 12:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='user',
name='create_time',
field=models.DateTimeField(auto_now_add=True, null=True, verbose_name='创建时间'),
),
migrations.AddField(
model_name='user',
name='update_time',
field=models.DateTimeField(auto_now=True, null=True, verbose_name='修改时间'),
),
]

View File

@ -14,6 +14,7 @@ from django.db import models
from common.constants.permission_constants import Permission, Group, Operate
from common.db.sql_execute import select_list
from common.mixins.app_model_mixin import AppModelMixin
from common.util.file_util import get_file_content
from smartdoc.conf import PROJECT_DIR
@ -60,7 +61,7 @@ def get_user_dynamics_permission(user_id: str):
return result
class User(models.Model):
class User(AppModelMixin):
id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid1, editable=False, verbose_name="主键id")
email = models.EmailField(unique=True, verbose_name="邮箱")
phone = models.CharField(max_length=20, verbose_name="电话", default="")
@ -69,6 +70,8 @@ class User(models.Model):
password = models.CharField(max_length=150, verbose_name="密码")
role = models.CharField(max_length=150, verbose_name="角色")
is_active = models.BooleanField(default=True)
create_time = models.DateTimeField(verbose_name="创建时间", auto_now_add=True, null=True)
update_time = models.DateTimeField(verbose_name="修改时间", auto_now=True, null=True)
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = []

View File

@ -468,17 +468,21 @@ class UserSerializer(ApiMixin, serializers.ModelSerializer):
class UserInstanceSerializer(ApiMixin, serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'username', 'email', 'phone', 'nick_name']
fields = ['id', 'username', 'email', 'phone', 'is_active', 'role', 'nick_name', 'create_time', 'update_time']
@staticmethod
def get_response_body_api():
return openapi.Schema(
type=openapi.TYPE_OBJECT,
required=['id', 'username', 'email', 'password', 'create_time', 'update_time'],
required=['id', 'username', 'email', 'phone', 'is_active', 'role', 'nick_name', 'create_time',
'update_time'],
properties={
'id': openapi.Schema(type=openapi.TYPE_STRING, title="用户id", description="用户id"),
'username': openapi.Schema(type=openapi.TYPE_STRING, title="用户名", description="用户名"),
'email': openapi.Schema(type=openapi.TYPE_STRING, title="邮箱", description="邮箱地址"),
'phone': openapi.Schema(type=openapi.TYPE_STRING, title="手机号", description="手机号"),
'is_active': openapi.Schema(type=openapi.TYPE_BOOLEAN, title="是否激活", description="是否激活"),
'role': openapi.Schema(type=openapi.TYPE_STRING, title="角色", description="角色"),
'nick_name': openapi.Schema(type=openapi.TYPE_STRING, title="昵称", description="昵称"),
'create_time': openapi.Schema(type=openapi.TYPE_STRING, title="创建时间", description="修改时间"),
'update_time': openapi.Schema(type=openapi.TYPE_STRING, title="修改时间", description="修改时间")
@ -562,9 +566,9 @@ class UserManageSerializer(serializers.Serializer):
, message="密码长度6-20个字符必须字母、数字、特殊字符组合")])
nick_name = serializers.CharField(required=False, error_messages=ErrMessage.char("昵称"), max_length=56,
allow_null=True)
allow_null=True, allow_blank=True)
phone = serializers.CharField(required=False, error_messages=ErrMessage.char("手机号"), max_length=20,
allow_null=True)
allow_null=True, allow_blank=True)
def is_valid(self, *, raise_exception=True):
super().is_valid(raise_exception=True)
@ -599,9 +603,9 @@ class UserManageSerializer(serializers.Serializer):
code=ExceptionCodeConstants.EMAIL_FORMAT_ERROR.value.code)])
nick_name = serializers.CharField(required=False, error_messages=ErrMessage.char("昵称"), max_length=56,
allow_null=True)
allow_null=True, allow_blank=True)
phone = serializers.CharField(required=False, error_messages=ErrMessage.char("手机号"), max_length=20,
allow_null=True)
allow_null=True, allow_blank=True)
is_active = serializers.BooleanField(required=False, error_messages=ErrMessage.char("是否可用"))
def is_valid(self, *, user_id=None, raise_exception=False):

View File

@ -1,9 +1,16 @@
import { hasPermission } from '@/utils/permission/index'
import Layout from '@/layout/main-layout/index.vue'
import { Role } from '@/utils/permission/type'
const settingRouter = {
path: '/setting',
name: 'setting',
meta: { icon: 'Setting', title: '系统设置', permission: 'SETTING:READ' },
redirect: '/user',
redirect: (to: any) => {
if (hasPermission(new Role('ADMIN'), 'AND')) {
return '/user'
}
return '/team'
},
component: Layout,
children: [
{
@ -15,7 +22,8 @@ const settingRouter = {
title: '用户管理',
activeMenu: '/setting',
parentPath: '/setting',
parentName: 'setting'
parentName: 'setting',
permission: new Role('ADMIN')
},
component: () => import('@/views/user-manage/index.vue')
},