feat: ASW-21 用户权限查询接口接口开发
This commit is contained in:
@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@TableName("sys_role")
|
||||
public class SysRoleEntity {
|
||||
@@ -20,4 +22,8 @@ public class SysRoleEntity {
|
||||
@TableField(exist = false)
|
||||
private String[] menuIds;
|
||||
private Long createTimestamp;
|
||||
@TableField(exist = false)
|
||||
private List<SysMenuEntity> menus;
|
||||
@TableField(exist = false)
|
||||
private List<String> buttons;
|
||||
}
|
||||
|
||||
@@ -15,13 +15,21 @@ public class SysUserEntity {
|
||||
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
|
||||
private String name;
|
||||
|
||||
@TableField("user_name")
|
||||
private String userName;
|
||||
|
||||
private String pwd;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String roleIds;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<SysRoleEntity> roles;
|
||||
|
||||
private String accessLevel;
|
||||
|
||||
private Long createTimestamp;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
package net.geedge.asw.module.sys.service.impl;
|
||||
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.lang.Pair;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.log.Log;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import net.geedge.asw.common.util.ASWException;
|
||||
import net.geedge.asw.common.util.Constants;
|
||||
@@ -13,9 +17,16 @@ import net.geedge.asw.module.sys.entity.SysMenuEntity;
|
||||
import net.geedge.asw.module.sys.entity.SysRoleEntity;
|
||||
import net.geedge.asw.module.sys.entity.SysUserEntity;
|
||||
import net.geedge.asw.module.sys.service.ISysAuthService;
|
||||
import net.geedge.asw.module.workbook.entity.WorkbookMemberEntity;
|
||||
import net.geedge.asw.module.workbook.service.IWorkbookMemberService;
|
||||
import net.geedge.asw.module.workspace.entity.WorkspaceEntity;
|
||||
import net.geedge.asw.module.workspace.entity.WorkspaceMemberEntity;
|
||||
import net.geedge.asw.module.workspace.service.IWorkspaceMemberService;
|
||||
import net.geedge.asw.module.workspace.service.IWorkspaceService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -23,57 +34,90 @@ import java.util.stream.Collectors;
|
||||
@Service
|
||||
public class SysAuthServiceImpl implements ISysAuthService {
|
||||
|
||||
private static final Log log = Log.get();
|
||||
private static final Log log = Log.get();
|
||||
|
||||
@Autowired
|
||||
private SysUserDao userDao;
|
||||
@Autowired
|
||||
private SysRoleDao roleDao;
|
||||
@Autowired
|
||||
private SysUserDao userDao;
|
||||
|
||||
@Override
|
||||
public SysUserEntity login(String userName, String pwd) {
|
||||
SysUserEntity userEntity = userDao
|
||||
.selectOne(new QueryWrapper<SysUserEntity>().lambda().eq(SysUserEntity::getUserName, userName));
|
||||
if (T.ObjectUtil.isNull(userEntity)
|
||||
|| !T.StrUtil.equals(userEntity.getPwd(), T.AesUtil.encrypt(pwd, Constants.AES_KEY))) {
|
||||
log.warn("user login error, username: {}", userName);
|
||||
throw ASWException.builder().rcode(RCode.SYS_USER_PWD_ERROR).build();
|
||||
}
|
||||
StpUtil.login(userEntity.getId());
|
||||
log.info("user login success, userName: {}", userName);
|
||||
return userEntity;
|
||||
}
|
||||
@Autowired
|
||||
private SysRoleDao roleDao;
|
||||
|
||||
@Override
|
||||
public void logout() {
|
||||
StpUtil.logout();
|
||||
}
|
||||
@Autowired
|
||||
private IWorkspaceService workspaceService;
|
||||
|
||||
/**
|
||||
* 获取登录用户权限
|
||||
*/
|
||||
@Override
|
||||
public Map<String, Object> userPermissions() {
|
||||
Map<String, Object> result = T.MapUtil.newHashMap();
|
||||
String userId = StpUtil.getLoginIdAsString();
|
||||
List<SysRoleEntity> roleList = roleDao.findRoleByUserId(userId);
|
||||
result.put("roles", roleList);
|
||||
// 组织 menu数据
|
||||
List<SysMenuEntity> menuList = roleDao.findMenuByUserId(userId);
|
||||
List<String> buttonList = menuList.stream().filter(menu -> T.StrUtil.equalsIgnoreCase(menu.getType(), "button"))
|
||||
.map(menu -> menu.getName()).collect(Collectors.toList());
|
||||
result.put("buttons", buttonList);
|
||||
//生成 menu tree结构
|
||||
Map<String, List<SysMenuEntity>> groupMap = menuList.stream()
|
||||
.filter(menu -> T.StrUtil.equalsIgnoreCase(menu.getType(), "menu"))
|
||||
.collect(Collectors.groupingBy(SysMenuEntity::getPid));
|
||||
menuList.forEach(menu -> {
|
||||
menu.setChildren(groupMap.get(menu.getId()));
|
||||
});
|
||||
List<SysMenuEntity> collect = menuList.stream().filter(menu -> T.StrUtil.isBlank(menu.getPid()))
|
||||
.collect(Collectors.toList());
|
||||
result.put("menus", collect);
|
||||
|
||||
return result;
|
||||
}
|
||||
@Autowired
|
||||
private IWorkspaceMemberService workspaceMemberService;
|
||||
|
||||
@Override
|
||||
public SysUserEntity login(String userName, String pwd) {
|
||||
SysUserEntity userEntity = userDao
|
||||
.selectOne(new QueryWrapper<SysUserEntity>().lambda().eq(SysUserEntity::getUserName, userName));
|
||||
if (T.ObjectUtil.isNull(userEntity)
|
||||
|| !T.StrUtil.equals(userEntity.getPwd(), T.AesUtil.encrypt(pwd, Constants.AES_KEY))) {
|
||||
log.warn("user login error, username: {}", userName);
|
||||
throw ASWException.builder().rcode(RCode.SYS_USER_PWD_ERROR).build();
|
||||
}
|
||||
StpUtil.login(userEntity.getId());
|
||||
log.info("user login success, userName: {}", userName);
|
||||
return userEntity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logout() {
|
||||
StpUtil.logout();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取登录用户权限
|
||||
*/
|
||||
@Override
|
||||
public Map<String, Object> userPermissions() {
|
||||
String userId = StpUtil.getLoginIdAsString();
|
||||
SysUserEntity sysUserEntity = userDao.selectById(userId);
|
||||
String accessLevel = sysUserEntity.getAccessLevel();
|
||||
|
||||
List<WorkspaceEntity> workspaceEntityList = workspaceService.list();
|
||||
if (accessLevel.equalsIgnoreCase("regular")) {
|
||||
List<WorkspaceMemberEntity> workbookMemberEntityList = workspaceMemberService.list(new LambdaQueryWrapper<WorkspaceMemberEntity>().eq(WorkspaceMemberEntity::getUserId, userId));
|
||||
List<String> workspaceIdList = workbookMemberEntityList.stream().map(x -> x.getWorkspaceId()).toList();
|
||||
workspaceEntityList = workspaceService.list(new LambdaQueryWrapper<WorkspaceEntity>().in(WorkspaceEntity::getId, workspaceIdList));
|
||||
// public workspace
|
||||
List<WorkspaceEntity> publicWorkspaces = workspaceService.list(new LambdaQueryWrapper<WorkspaceEntity>().eq(WorkspaceEntity::getVisibility, "public"));
|
||||
workspaceEntityList.addAll(publicWorkspaces);
|
||||
}
|
||||
SysRoleEntity role = roleDao.findRoleByUserId(userId).get(0);
|
||||
// 组织 button 数据
|
||||
List<SysMenuEntity> menuList = roleDao.findMenuByUserId(userId);
|
||||
List<String> buttonList = menuList.stream().filter(menu -> T.StrUtil.equalsIgnoreCase(menu.getType(), "button"))
|
||||
.map(menu -> menu.getName()).collect(Collectors.toList());
|
||||
role.setButtons(buttonList);
|
||||
|
||||
//生成 menu tree结构
|
||||
Map<String, List<SysMenuEntity>> groupMap = menuList.stream()
|
||||
.filter(menu -> !T.StrUtil.equalsIgnoreCase(menu.getPid(), "0"))
|
||||
.collect(Collectors.groupingBy(SysMenuEntity::getPid));
|
||||
|
||||
menuList.forEach(menu -> {
|
||||
menu.setChildren(groupMap.get(menu.getId()));
|
||||
});
|
||||
|
||||
List<SysMenuEntity> collect = menuList.stream()
|
||||
.filter(menu -> T.StrUtil.equals(menu.getPid(), "0"))
|
||||
.filter(menu -> T.StrUtil.equals(menu.getType(), "menu"))
|
||||
.collect(Collectors.toList());
|
||||
role.setMenus(collect);
|
||||
|
||||
List records = ListUtil.list(false);
|
||||
for (WorkspaceEntity workspace : workspaceEntityList) {
|
||||
Map<Object, Object> map = MapUtil.builder()
|
||||
.put("workspace", workspace)
|
||||
.put("role", role)
|
||||
.build();
|
||||
records.add(map);
|
||||
}
|
||||
Map<String, Object> result = T.MapUtil.newHashMap();
|
||||
result.put("records", records);
|
||||
result.put("accessLevel", accessLevel);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,5 @@ public class WorkspaceEntity {
|
||||
private String createUserId;
|
||||
private String updateUserId;
|
||||
|
||||
private String workspaceId;
|
||||
|
||||
}
|
||||
37
src/main/resources/db/migration/R__AZ_sys_menu.sql
Normal file
37
src/main/resources/db/migration/R__AZ_sys_menu.sql
Normal file
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* 重置 SYS_MENU 数据
|
||||
*/
|
||||
TRUNCATE sys_menu;
|
||||
|
||||
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('1000', 'workbooks', 'workbooks', '0', 'menu', '', '/workbooks', '', 0, 1722478572000, 1);
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('1001', 'workbook_view', 'buttons.view', '1000', 'button', '', '', '', 1, 1722478572000, 1);
|
||||
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('2000', 'applications', 'applications', '0', 'menu', '', '/applications', '', 1, 1722478572000, 1);
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('2001', 'application_view', 'buttons.view', '2000', 'button', '', '', '', 1, 1722478572000, 1);
|
||||
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('3000', 'pcaps', 'pcaps', '0', 'menu', '', '/pcaps', '', 2, 1722478572000, 1);
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('3001', 'pacp_view', 'buttons.view', '3000', 'button', '', '', '', 1, 1722478572000, 1);
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('3002', 'pacp_upload', 'buttons.upload', '3000', 'button', '', '', '', 2, 1722478572000, 1);
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('3003', 'pacp_delete', 'buttons.delete', '3000', 'button', '', '', '', 3, 1722478572000, 1);
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('3004', 'pacp_parse', 'buttons.parse', '3000', 'button', '', '', '', 4, 1722478572000, 1);
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('3005', 'pacp_analyze', 'buttons.analyze', '3000', 'button', '', '', '', 5, 1722478572000, 1);
|
||||
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('4000', 'signatures', 'signatures', '0', 'menu', '', '/signatures', '', 3, 1722478572000, 1);
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('4001', 'signature_view', 'buttons.view', '4000', 'button', '', '', '', 1, 1722478572000, 1);
|
||||
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('5000', 'packages', 'packages', '0', 'menu', '', '/packages', '', 4, 1722478572000, 1);
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('5001', 'package_view', 'buttons.view', '5000', 'button', '', '', '', 1, 1722478572000, 1);
|
||||
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('6000', 'jobs', 'jobs', '0', 'menu', '', '/jobs', '', 5, 1722478572000, 1);
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('6001', 'job_view', 'buttons.view', '6000', 'button', '', '', '', 1, 1722478572000, 1);
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('6002', 'job_add', 'buttons.add', '6000', 'button', '', '', '', 2, 1722478572000, 1);
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('6003', 'job_delete', 'buttons.delete', '6000', 'button', '', '', '', 3, 1722478572000, 1);
|
||||
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('7000', 'playbooks', 'playbooks', '0', 'menu', '', '/playbooks', '', 6, 1722478572000, 1);
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('7001', 'playbook_view', 'buttons.view', '7000', 'button', '', '', '', 1, 1722478572000, 1);
|
||||
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('8000', 'runners', 'runners', '0', 'menu', '', '/runners', '', 7, 1722478572000, 1);
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('8001', 'runner_view', 'buttons.view', '8000', 'button', '', '', '', 1, 1722478572000, 1);
|
||||
|
||||
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('1', 'workspace_add', 'buttons.add', '0', 'button', '', '', '', 1, 1722478572000, 1);
|
||||
49
src/main/resources/db/migration/R__AZ_sys_role_menu.sql
Normal file
49
src/main/resources/db/migration/R__AZ_sys_role_menu.sql
Normal file
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* 先清空 sys_role_menu 表中 admin&common 相关数据,再导入
|
||||
*/
|
||||
delete from sys_role_menu where role_id in ('admin' ,'common');
|
||||
|
||||
-- admin
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '1000');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '1001');
|
||||
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '2000');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '2001');
|
||||
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '3000');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '3001');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '3002');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '3003');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '3004');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '3005');
|
||||
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '4000');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '4001');
|
||||
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '5000');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '5001');
|
||||
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '6000');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '6001');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '6002');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '6003');
|
||||
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '7000');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '7001');
|
||||
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '8000');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '8001');
|
||||
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '1');
|
||||
|
||||
|
||||
-- common
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('common', '1001');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('common', '2001');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('common', '3001');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('common', '4001');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('common', '5001');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('common', '6001');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('common', '7001');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('common', '8001');
|
||||
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('common', '1');
|
||||
@@ -8,13 +8,14 @@ CREATE TABLE `sys_user` (
|
||||
`name` varchar(255) NOT NULL,
|
||||
`user_name` varchar(255) NOT NULL,
|
||||
`pwd` varchar(255) NOT NULL,
|
||||
`access_level` varchar(255) NOT NULL,
|
||||
`create_timestamp` bigint(20) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `idx_user_name` (`user_name`) USING BTREE,
|
||||
KEY `idx_name` (`name`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
INSERT INTO `sys_user`(`id`, `name`, `user_name`, `pwd`, `create_timestamp`) VALUES ('admin', 'admin', 'admin', 'ad9d757e620d5d9cd8e32c3dbcf37525', UNIX_TIMESTAMP(NOW())*1000);
|
||||
-- 添加内置用户
|
||||
INSERT INTO `sys_user`(`id`, `name`, `user_name`, `pwd`, `access_level`, `create_timestamp`) VALUES ('admin', 'admin', 'admin', 'ad9d757e620d5d9cd8e32c3dbcf37525', 'administrator', UNIX_TIMESTAMP(NOW())*1000);
|
||||
|
||||
/**
|
||||
* 1、新增 sys_role 表
|
||||
@@ -35,6 +36,10 @@ CREATE TABLE `sys_role` (
|
||||
KEY `idx_name` (`name`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 添加内置角色
|
||||
INSERT INTO `sys_role` (`id`, `name`, `i18n`, `remark`, `build_in`, `create_timestamp`) VALUES ('admin', 'admin', 'admin', 'admin', 1, UNIX_TIMESTAMP(NOW())*1000);
|
||||
INSERT INTO `sys_role` (`id`, `name`, `i18n`, `remark`, `build_in`, `create_timestamp`) VALUES ('common', 'common', 'common', 'common', 1, UNIX_TIMESTAMP(NOW())*1000);
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS `sys_menu`;
|
||||
CREATE TABLE `sys_menu` (
|
||||
@@ -59,14 +64,14 @@ CREATE TABLE `sys_user_role` (
|
||||
`role_id` varchar(64) NOT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
INSERT INTO `sys_user_role`(`user_id`, `role_id`) VALUES ('admin', 'admin');
|
||||
|
||||
DROP TABLE IF EXISTS `sys_role_menu`;
|
||||
CREATE TABLE `sys_role_menu` (
|
||||
`menu_id` varchar(64) NOT NULL,
|
||||
`role_id` varchar(64) NOT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 添加内置角色
|
||||
INSERT INTO `sys_role` (`id`, `name`, `i18n`, `remark`, `build_in`, `create_timestamp`) VALUES ('admin', 'admin', 'admin', 'admin', 1, UNIX_TIMESTAMP(NOW())*1000);
|
||||
|
||||
/**
|
||||
* 1、新增 sys_config 表
|
||||
@@ -382,6 +387,8 @@ CREATE TABLE `workspace` (
|
||||
KEY `idx_name` (`name`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
INSERT INTO `workspace` (`id`, `name`, `tags`, `visibility`, `description`, `create_timestamp`, `update_timestamp`, `create_user_id`, `update_user_id`) VALUES ('1', 'default', '', 'public', '', 1722482392000, 1722482392000, 'admin', 'admin');
|
||||
|
||||
DROP TABLE IF EXISTS `workspace_member`;
|
||||
CREATE TABLE `workspace_member` (
|
||||
`workspace_id` varchar(64) NOT NULL,
|
||||
|
||||
Reference in New Issue
Block a user