功能(auth):实现用户注册并分配默认角色
- 添加AppConfig类以启用事务管理 - 在application.yaml中配置默认角色代码 - 在AuthServiceImpl中注入RoleMapper和defRoleCode - 在注册过程中为新用户分配默认角色 - 添加用户注册和登录事件的日志记录 - 在登录过程中处理异常并进行适当的错误日志记录 - 创建用户、角色、权限及关联关系的数据库表 - 添加用户角色实体类和用户-角色关系映射器 - 实现用户角色服务以管理用户角色分配 - 添加通过SetUserRoleRequest设置用户角色的API端点 - 更新用户实体类并添加适当的字段和注解 - 实现包含角色信息的用户信息查询方法 - 将用户转换逻辑重构为可复用方法 - 为SetUserRoleRequest DTO添加校验约束}```
This commit is contained in:
@@ -39,4 +39,5 @@ jwt:
|
||||
secret: zHANgcHao@1995!20250506
|
||||
expiration: 604800
|
||||
|
||||
|
||||
auth:
|
||||
def-role-code: user
|
||||
|
||||
132
chaos_api_web/src/main/resources/data.sql
Normal file
132
chaos_api_web/src/main/resources/data.sql
Normal file
@@ -0,0 +1,132 @@
|
||||
|
||||
|
||||
-- ----------------------------
|
||||
-- 1. 系统用户表 (t_user)
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS chaos.t_user;
|
||||
CREATE TABLE chaos.t_user (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT COMMENT '主键ID',
|
||||
username VARCHAR(64) NOT NULL COMMENT '用户名/登录名',
|
||||
password VARCHAR(255) NOT NULL COMMENT '密码(加密存储,建议BCrypt)',
|
||||
nickname VARCHAR(64) DEFAULT '' COMMENT '用户昵称',
|
||||
enabled TINYINT(1) NOT NULL DEFAULT 1 COMMENT '状态 (1:启用, 0:禁用)',
|
||||
account_non_expired TINYINT(1) NOT NULL DEFAULT 1 COMMENT '账号未过期 (1:是, 0:否)',
|
||||
credentials_non_expired TINYINT(1) NOT NULL DEFAULT 1 COMMENT '凭证未过期 (1:是, 0:否)',
|
||||
account_non_locked TINYINT(1) NOT NULL DEFAULT 1 COMMENT '账号未锁定 (1:是, 0:否)',
|
||||
deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除 (1:已删除, 0:未删除)',
|
||||
remark VARCHAR(500) DEFAULT '' COMMENT '备注信息',
|
||||
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_username (username)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统管理-用户表';
|
||||
|
||||
|
||||
-- ----------------------------
|
||||
-- 2. 角色/用户组表 (t_role)
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS chaos.t_role;
|
||||
CREATE TABLE chaos.t_role (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT COMMENT '主键ID',
|
||||
name VARCHAR(64) NOT NULL COMMENT '角色名称 (如: 管理员)',
|
||||
code VARCHAR(64) NOT NULL COMMENT '角色标识 (如: admin)',
|
||||
status TINYINT(1) NOT NULL DEFAULT 1 COMMENT '状态 (1:正常, 0:停用)',
|
||||
remark VARCHAR(500) DEFAULT '' COMMENT '备注',
|
||||
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_code (code)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统管理-角色表';
|
||||
|
||||
|
||||
-- ----------------------------
|
||||
-- 3. 权限表 (t_permission)
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS chaos.t_permission;
|
||||
CREATE TABLE chaos.t_permission (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT COMMENT '主键ID',
|
||||
parent_id BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '父权限ID (0为顶级)',
|
||||
name VARCHAR(64) NOT NULL COMMENT '权限名称',
|
||||
code VARCHAR(128) NOT NULL COMMENT '权限标识/资源路径',
|
||||
type TINYINT(1) NOT NULL DEFAULT 1 COMMENT '类型 (1:目录, 2:菜单, 3:按钮)',
|
||||
sort_order INT NOT NULL DEFAULT 0 COMMENT '排序 (数值越小越靠前)',
|
||||
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_code (code),
|
||||
INDEX idx_parent_id (parent_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统管理-权限表';
|
||||
|
||||
|
||||
-- ----------------------------
|
||||
-- 4. 用户-角色关联表 (t_user_role)
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS chaos.t_user_role;
|
||||
CREATE TABLE chaos.t_user_role (
|
||||
user_id BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
||||
role_id BIGINT UNSIGNED NOT NULL COMMENT '角色ID',
|
||||
PRIMARY KEY (user_id, role_id),
|
||||
CONSTRAINT fk_ur_user_id FOREIGN KEY (user_id) REFERENCES chaos.t_user (id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_ur_role_id FOREIGN KEY (role_id) REFERENCES chaos.t_role (id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统管理-用户角色关联表';
|
||||
|
||||
|
||||
-- ----------------------------
|
||||
-- 5. 角色-权限关联表 (t_role_permission)
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS chaos.t_role_permission;
|
||||
CREATE TABLE chaos.t_role_permission (
|
||||
role_id BIGINT UNSIGNED NOT NULL COMMENT '角色ID',
|
||||
permission_id BIGINT UNSIGNED NOT NULL COMMENT '权限ID',
|
||||
PRIMARY KEY (role_id, permission_id),
|
||||
CONSTRAINT fk_rp_role_id FOREIGN KEY (role_id) REFERENCES chaos.t_role (id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_rp_permission_id FOREIGN KEY (permission_id) REFERENCES chaos.t_permission (id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统管理-角色权限关联表';
|
||||
|
||||
|
||||
-- ----------------------------
|
||||
-- 6. 基础设备表 (t_device)
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS chaos.t_device;
|
||||
CREATE TABLE chaos.t_device (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT COMMENT '主键ID',
|
||||
name VARCHAR(128) NOT NULL COMMENT '设备名称',
|
||||
model VARCHAR(128) DEFAULT NULL COMMENT '设备型号',
|
||||
type_id BIGINT UNSIGNED DEFAULT NULL COMMENT '设备类型ID (关联类型表)',
|
||||
location_id BIGINT UNSIGNED DEFAULT NULL COMMENT '位置ID (关联位置表)',
|
||||
snmp_community VARCHAR(128) DEFAULT NULL COMMENT 'SNMP团体名 (加密存储建议)',
|
||||
manufacturer VARCHAR(128) DEFAULT NULL COMMENT '设备制造商',
|
||||
purchase_date DATE DEFAULT NULL COMMENT '采购日期',
|
||||
status TINYINT DEFAULT 1 COMMENT '设备状态 (1:在线, 0:离线, 2:维护中)',
|
||||
remark VARCHAR(500) DEFAULT '' COMMENT '备注',
|
||||
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_type_id (type_id),
|
||||
INDEX idx_location_id (location_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='资产管理-设备信息表';
|
||||
|
||||
|
||||
-- ----------------------------
|
||||
-- 7. 网络接口表 (t_network_interface)
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS chaos.t_network_interface;
|
||||
CREATE TABLE chaos.t_network_interface (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT COMMENT '主键ID',
|
||||
device_id BIGINT UNSIGNED NOT NULL COMMENT '设备ID',
|
||||
parent_id BIGINT UNSIGNED DEFAULT NULL COMMENT '父接口ID (用于子接口/聚合口)',
|
||||
name VARCHAR(64) NOT NULL COMMENT '接口名称 (如: eth0, GE0/0/1)',
|
||||
mac_address VARCHAR(17) DEFAULT NULL COMMENT 'MAC地址 (格式: AA:BB:CC:DD:EE:FF)',
|
||||
ip_address VARCHAR(45) DEFAULT NULL COMMENT 'IP地址 (支持IPv4/IPv6)',
|
||||
subnet_mask VARCHAR(45) DEFAULT NULL COMMENT '子网掩码/前缀长度',
|
||||
gateway_ip VARCHAR(45) DEFAULT NULL COMMENT '网关IP地址',
|
||||
vlan_id INT DEFAULT NULL COMMENT 'VLAN ID (1-4094)',
|
||||
port_speed INT DEFAULT 0 COMMENT '端口速率 (Mbps)',
|
||||
status TINYINT DEFAULT 1 COMMENT '接口状态 (1:UP, 0:DOWN)',
|
||||
remark VARCHAR(500) DEFAULT '' COMMENT '备注',
|
||||
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
CONSTRAINT fk_ni_device_id FOREIGN KEY (device_id) REFERENCES chaos.t_device (id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_ni_parent_id FOREIGN KEY (parent_id) REFERENCES chaos.t_network_interface (id) ON DELETE SET NULL ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='资产管理-网络接口表';
|
||||
Reference in New Issue
Block a user