rbac_controller.go 1.8 KB
package controllers

import (
	"encoding/json"

	"github.com/astaxie/beego"
	"github.com/linmadan/egglib-go/web/beego/utils"
	"github.com/tiptok/godevp/pkg/application/rbac/command"
	"github.com/tiptok/godevp/pkg/application/rbac/query"
	"github.com/tiptok/godevp/pkg/application/rbac/service"
)

type RbacController struct {
	beego.Controller
}

func (controller *RbacController) Access() {
	rbacService := service.NewRbacService(nil)
	accessQuery := &query.AccessQuery{}
	data, err := rbacService.Access(accessQuery)
	var response utils.JsonResponse
	if err != nil {
		response = utils.ResponseError(controller.Ctx, err)
	} else {
		response = utils.ResponseData(controller.Ctx, data)
	}
	controller.Data["json"] = response
	controller.ServeJSON()
}

func (controller *RbacController) RoleAccess() {
	rbacService := service.NewRbacService(nil)
	roleAccessQuery := &query.RoleAccessQuery{}
	roleId, _ := controller.GetInt64(":roleId")
	roleAccessQuery.RoleId = roleId
	data, err := rbacService.RoleAccess(roleAccessQuery)
	var response utils.JsonResponse
	if err != nil {
		response = utils.ResponseError(controller.Ctx, err)
	} else {
		response = utils.ResponseData(controller.Ctx, data)
	}
	controller.Data["json"] = response
	controller.ServeJSON()
}

func (controller *RbacController) SetRoleAccess() {
	rbacService := service.NewRbacService(nil)
	setRoleAccessCommand := &command.SetRoleAccessCommand{}
	json.Unmarshal(controller.Ctx.Input.GetData("requestBody").([]byte), setRoleAccessCommand)
	data, err := rbacService.SetRoleAccess(setRoleAccessCommand)
	var response utils.JsonResponse
	if err != nil {
		response = utils.ResponseError(controller.Ctx, err)
	} else {
		response = utils.ResponseData(controller.Ctx, data)
	}
	controller.Data["json"] = response
	controller.ServeJSON()
}