bi/controller/manager_role_controller.go
1340691923@qq.com ebbf4120bf 第一次提交
2022-01-26 16:40:50 +08:00

153 lines
3.6 KiB
Go

package controller
import (
"errors"
"github.com/1340691923/xwl_bi/platform-basic-libs/jwt"
"strconv"
"github.com/1340691923/xwl_bi/engine/logs"
"github.com/1340691923/xwl_bi/model"
"github.com/1340691923/xwl_bi/platform-basic-libs/rbac"
"github.com/1340691923/xwl_bi/platform-basic-libs/request"
"github.com/1340691923/xwl_bi/platform-basic-libs/response"
"github.com/1340691923/xwl_bi/platform-basic-libs/service/gm_role"
. "github.com/gofiber/fiber/v2"
)
// GM角色控制器
type ManagerRoleController struct {
BaseController
}
//获取所有的GM 角色
func (this ManagerRoleController) RolesAction(ctx *Ctx) error {
var service gm_role.GmRoleService
roles, err := service.Select()
if err != nil {
return this.Error(ctx, err)
}
list, err := service.GetRoles(roles)
if err != nil {
return this.Error(ctx, err)
}
return this.Success(ctx, response.SearchSuccess, list)
}
//新增GM角色
func (this ManagerRoleController) RolesAddAction(ctx *Ctx) error {
var model2 request.GmRoleModel
err := ctx.BodyParser(&model2)
if err != nil {
return this.Error(ctx, err)
}
var roleModel model.GmRoleModel
roleModel.ID = model2.ID
roleModel.RoleName = model2.RoleName
roleModel.RoleList = model2.RoleList
roleModel.Description = model2.Description
roleModel.ID = model2.ID
id, err := roleModel.Insert()
if err != nil {
return this.Error(ctx, err)
}
go func() {
for _, api := range model2.Api {
_, err = rbac.Enforcer.AddPolicySafe(strconv.Itoa(int(id)), api, "*")
if err != nil {
logs.Logger.Sugar().Errorf("err:%s", err.Error())
return
}
}
}()
return this.Success(ctx, response.OperateSuccess, map[string]interface{}{"id": id})
}
// 修改GM角色
func (this ManagerRoleController) RolesUpdateAction(ctx *Ctx) error {
var model2 request.GmRoleModel
err := ctx.BodyParser(&model2)
if err != nil {
return this.Error(ctx, err)
}
token := this.GetToken(ctx)
claims, err := jwt.ParseToken(token)
if err != nil {
return this.Error(ctx, err)
}
if model2.ID == 1 && claims.RoleId != 1 {
return this.Error(ctx, errors.New("您无权修改该角色!"))
}
var roleModel model.GmRoleModel
roleModel.ID = model2.ID
roleModel.RoleName = model2.RoleName
roleModel.RoleList = model2.RoleList
roleModel.Description = model2.Description
err = roleModel.Update()
rbac.Enforcer.RemoveFilteredPolicy(0, strconv.Itoa(model2.ID)) //先全清掉
go func() {
for _, api := range model2.Api {
_, err = rbac.Enforcer.AddPolicySafe(strconv.Itoa(model2.ID), api, "*")
if err != nil {
logs.Logger.Sugar().Errorf("err:%s", err.Error())
return
}
}
}()
return this.Success(ctx, response.OperateSuccess, nil)
}
// 删除GM角色
func (this ManagerRoleController) RolesDelAction(ctx *Ctx) error {
var reqData request.RolesDelReq
err := ctx.BodyParser(&reqData)
if err != nil {
return this.Error(ctx, err)
}
id := reqData.Id
claims, err := jwt.ParseToken(this.GetToken(ctx))
if err != nil {
return this.Error(ctx, err)
}
if id == 1 && claims.RoleId != 1 {
return this.Error(ctx, errors.New("您无权修改该角色!"))
}
var service gm_role.GmRoleService
err = service.Delete(id)
if err != nil {
return this.Error(ctx, err)
}
rbac.Enforcer.RemoveFilteredPolicy(0, strconv.Itoa(id)) //先全清掉
return this.Success(ctx, response.OperateSuccess, nil)
}
// 获取Gm角色下拉选
func (this ManagerRoleController) RoleOptionAction(ctx *Ctx) error {
var model model.GmRoleModel
list, err := model.Select()
if err != nil {
return this.Error(ctx, err)
}
return this.Success(ctx, response.SearchSuccess, list)
}