refactor: 优化权限管理与登录流程,修复细节问题
1. 调整仪表盘图标从DeviceOutlined为MonitorOutlined 2. 新增403无权访问页面与路由配置 3. 完善权限存储与路由守卫逻辑 4. 修复用户信息获取与token持久化问题 5. 补充普通管理员权限初始化与补丁脚本 6. 优化后端用户服务与认证控制器逻辑 7. 调整登录表单交互与请求流程
This commit is contained in:
1 parent
3d7eb12103
commit
2534723842
9 files changed
+259
-50
No files matched your search
@@ -1,5 +1,6 @@
|
||||
import { Provide, Inject } from "@midwayjs/core";
|
||||
import { InjectRepository } from "@midwayjs/sequelize";
|
||||
import { Repository } from "sequelize-typescript";
|
||||
import User from "../entity/user.entity";
|
||||
import UserRole from "../entity/userRole.entity";
|
||||
import Role from "../entity/role.entity";
|
||||
@@ -9,17 +10,17 @@ import { hashPassword } from "../util/crypto";
|
||||
@Provide()
|
||||
export class UserService {
|
||||
@InjectRepository(User)
|
||||
userModel!: typeof User;
|
||||
userModel!: Repository<User>;
|
||||
|
||||
@InjectRepository(UserRole)
|
||||
userRoleModel!: typeof UserRole;
|
||||
userRoleModel!: Repository<UserRole>;
|
||||
|
||||
@InjectRepository(Role)
|
||||
roleModel!: typeof Role;
|
||||
roleModel!: Repository<Role>;
|
||||
|
||||
async list(query: { page?: number; pageSize?: number; keyword?: string; status?: number; roleId?: number }): Promise<any> {
|
||||
const page = query.page || 1;
|
||||
const pageSize = query.pageSize || 10;
|
||||
async list(query: { page?: any; pageSize?: any; keyword?: string; status?: number; roleId?: number }): Promise<any> {
|
||||
const page = Number(query.page) || 1;
|
||||
const pageSize = Number(query.pageSize) || 10;
|
||||
const where: any = {};
|
||||
|
||||
if (query.keyword) {
|
||||
@@ -32,11 +33,11 @@ export class UserService {
|
||||
|
||||
const includeOptions: any = [
|
||||
{
|
||||
model: this.userRoleModel,
|
||||
model: UserRole,
|
||||
required: !!query.roleId,
|
||||
include: [
|
||||
{
|
||||
model: this.roleModel,
|
||||
model: Role,
|
||||
where: query.roleId ? { id: query.roleId } : {},
|
||||
required: !!query.roleId
|
||||
}
|
||||
@@ -50,14 +51,21 @@ export class UserService {
|
||||
limit: pageSize,
|
||||
offset: (page - 1) * pageSize,
|
||||
order: [["created_at", "DESC"]],
|
||||
distinct: true
|
||||
distinct: true,
|
||||
raw: false
|
||||
});
|
||||
|
||||
const list = rows.map((user) => {
|
||||
const u = user.toJSON();
|
||||
delete u.password;
|
||||
return u;
|
||||
});
|
||||
|
||||
return {
|
||||
code: 200,
|
||||
message: "获取用户列表成功",
|
||||
data: {
|
||||
list: rows,
|
||||
list,
|
||||
total: count,
|
||||
page: Number(page),
|
||||
pageSize: Number(pageSize)
|
||||
@@ -69,8 +77,8 @@ export class UserService {
|
||||
const user = await this.userModel.findByPk(id, {
|
||||
include: [
|
||||
{
|
||||
model: this.userRoleModel,
|
||||
include: [this.roleModel]
|
||||
model: UserRole,
|
||||
include: [Role]
|
||||
}
|
||||
]
|
||||
});
|
||||
@@ -83,10 +91,13 @@ export class UserService {
|
||||
};
|
||||
}
|
||||
|
||||
const userData = user.toJSON();
|
||||
delete userData.password;
|
||||
|
||||
return {
|
||||
code: 200,
|
||||
message: "获取用户详情成功",
|
||||
data: user
|
||||
data: userData
|
||||
};
|
||||
}
|
||||
|
||||
@@ -123,16 +134,19 @@ export class UserService {
|
||||
const createdUser = await this.userModel.findByPk(user.id, {
|
||||
include: [
|
||||
{
|
||||
model: this.userRoleModel,
|
||||
include: [this.roleModel]
|
||||
model: UserRole,
|
||||
include: [Role]
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
const userData = createdUser!.toJSON();
|
||||
delete userData.password;
|
||||
|
||||
return {
|
||||
code: 200,
|
||||
message: "创建用户成功",
|
||||
data: createdUser
|
||||
data: userData
|
||||
};
|
||||
}
|
||||
|
||||
@@ -168,16 +182,19 @@ export class UserService {
|
||||
const updatedUser = await this.userModel.findByPk(id, {
|
||||
include: [
|
||||
{
|
||||
model: this.userRoleModel,
|
||||
include: [this.roleModel]
|
||||
model: UserRole,
|
||||
include: [Role]
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
const userData = updatedUser!.toJSON();
|
||||
delete userData.password;
|
||||
|
||||
return {
|
||||
code: 200,
|
||||
message: "更新用户成功",
|
||||
data: updatedUser
|
||||
data: userData
|
||||
};
|
||||
}
|
||||
|
||||
@@ -242,10 +259,13 @@ export class UserService {
|
||||
|
||||
await user.update({ status });
|
||||
|
||||
const userData = user.toJSON();
|
||||
delete userData.password;
|
||||
|
||||
return {
|
||||
code: 200,
|
||||
message: "状态更新成功",
|
||||
data: user
|
||||
data: userData
|
||||
};
|
||||
}
|
||||
|
||||
@@ -255,7 +275,8 @@ export class UserService {
|
||||
order: [
|
||||
["sort_order", "ASC"],
|
||||
["created_at", "DESC"]
|
||||
]
|
||||
],
|
||||
raw: true
|
||||
});
|
||||
|
||||
return {
|
||||
@@ -277,4 +298,4 @@ export class UserService {
|
||||
|
||||
await this.userRoleModel.bulkCreate(userRoles);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user