153 lines
3.6 KiB
Go
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)
|
||
|
}
|