mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 01:33:05 +00:00
fix: 添加用户管理权限、用户管理列表返回角色,创建时间等信息
This commit is contained in:
parent
40031bd29d
commit
63fbfb4631
|
|
@ -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={
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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='修改时间'),
|
||||
),
|
||||
]
|
||||
|
|
@ -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 = []
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in New Issue