一步步实现微服务权限管理系统(11)
前言
- 前端参考了很多框架,可谓百花齐放,但很多封装过剩,不利于学习和应用,最终我选择了 [vue-pure-admin](https://github.com/pure-admin/vue-pure-admin)
- 后端我将使用 go-zero 来带领大家一步步实现一个权限管理系统
- 本系列项目存放在 purezeroadmin 中,每一部分我都将打tag,并保证每个tag能正常运行。请多点赞和评论。
- 后面示例均为
purezeroadmin项目为例,你们可以根据需要自建工程来进行试验。均采用vscode进行试验。 go-zero常用命令我将放入其对应的makefile文件中。
本节概述
- 前端精简版中加入角色管理
- 后端增加相应数据和接口
前端修改
- 在外部通过命令
pure创建vue-pure-admin项目 - 将
vue-pure-admin项目 中src/views/system拷贝到当前项目对应位置 - 只保留
role相关数据 - 删除多余的依赖项
- 因为没采用国际化,所以删除
transformI18n相关依赖 - 感觉迁移困难可以参考本机tag的前端部分
后端修改
角色相关信息修改
官方前端示例中 code 作为其标识,所以先修改为跟官方一致,再修改和增加其他字段
tb_role字段修改
ALTER TABLE `purezeroadmin`.`tb_role` CHANGE `name` `code` VARCHAR(32) NOT NULL;
- 重新生成model
goctl model mysql datasource --url "root:123456@tcp(127.0.0.1:55506)/purezeroadmin" -t="tb_*" --dir user-api/models --home template
生成成功后运行后端程序成功,当前中间tag版本 1.10.0
- 修改
tb_role表信息以符合角色管理
ALTER TABLE `purezeroadmin`.`tb_role`
ADD COLUMN `id` BIGINT NOT NULL AUTO_INCREMENT FIRST,
ADD COLUMN `name` VARCHAR (32) NOT NULL AFTER `code`,
ADD COLUMN `status` TINYINT (1) NOT NULL AFTER `name`,
ADD COLUMN `remark` VARCHAR (256) NOT NULL AFTER `status`,
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD UNIQUE INDEX (`code`);
UPDATE `purezeroadmin`.`tb_role` SET `name` = '超级管理员' , `status` = '1' WHERE `id` = '1';
update `purezeroadmin`.`tb_roLE` SEt `name` = '普通角色' , `Status` = '1' where `id` = '2';
update `pUREZEroadmin`.`tb_role` set `remark` = '超级管理员拥有最高权限' where `ID` = '1';
update `purezeroadmin`.`tb_role` set `REMArk` = '普通角色拥有部分权限' wherE `ID` = '2';
UPDATE `purezeroadmin`.`tb_role` SET `create_ts` = '1605456000000' , `update_ts` = '1684512000000' WHERE `id` = '1';
update `purezeroadmin`.`tb_rOLE` Set `create_ts` = '1605456000000' , `update_ts` = '1684512000000' where `id` = '2';
- 重新生成model,并修改
user-api/helper/helper.go
func GetAuths(ctx context.Context, svcCtx *svc.ServiceContext, tbUser *models.TbUser) (roles, permissions []string, err error) {
roles, err = jsonutil.ToArray[string](tbUser.Roles)
if err != nil {
return nil, nil, err
}
for _, role := range roles {
tbRole, err := svcCtx.TbRoleModel.FindOneByCode(ctx, role)
if err != nil {
return nil, nil, err
}
rolePermissions, err := jsonutil.ToArray[string](tbRole.Permissions)
if err != nil {
return nil, nil, err
}
permissions = arrutil.UniqueConcat(permissions, rolePermissions)
}
return roles, permissions, nil
}
-
增加获取所有角色
-
tb_router表修改, 用于存储菜单类型
ALTER TABLE `purezeroadmin`.`tb_router` ADD COLUMN `menu_type` BIGINT NOT NULL AFTER `parent_id`;
tag版本
purezeroadmin 项目下
git checkout v1.10.0
接下来
前端引入角色管理,可编辑管理权限