beego项目03_RBAC权限管理 - 角色的增、删、改、查

 

// 查询所有角色
func (c *RoleController) Get()  {
	role := []models.Role{}
	err := models.DB.Find(&role)
	message_map := map[string]interface{}{}
	if err != nil{
		message_map["code"] = 200
		message_map["list"] = role
		c.Data["json"] = message_map
		c.ServeJSON()
	}else{
		message_map["code"] = 100
		message_map["msg"] = "查询失败"
		c.Data["json"] = message_map
		c.ServeJSON()
	}
	// 不是前后分离
	//c.Data["json"] = role
	//c.ServeJSON()
	//c.Data["roleList"] = role
	//c.TplName = "admin/role/index.html"

}

// 增
func (c *RoleController) DoAdd() {
	title := strings.Trim(c.GetString("title"), " ")
	description := strings.Trim(c.GetString("description"), " ")
	fmt.Println("----------")
	fmt.Println(title)
	fmt.Println(description)

	if title == "" {
		c.Error("标题不能为空", "/role/add")
		return
	}
	role := models.Role{}
	role.Title = title
	role.Description = description
	role.Status = 1
	role.AddTime = int(models.GetUnix())
	err := models.DB.Create(&role).Error
	message_map := map[string]interface{}{}
	if err != nil{
		message_map["code"] = 200
		message_map["msg"] = "添加成功"
	}else {
		message_map["code"] = 100
		message_map["msg"] = "添加失败"
	}
	c.Data["json"] = message_map
	c.ServeJSON()
	//if err != nil {
	//	c.Error("增加角色", "/role/add")
	//} else {
	//	c.Success("增加角色成功", "/role")
	//}
}

 

 

 

package admin

import (
	"github.com/astaxie/beego"
	"strconv"
	"strings"
	"xiaomi/models"
)

type RoleController struct {
	BaseController
}
// 查询所有角色
func (c *RoleController) Get()  {
	role := []models.Role{}
	models.DB.Find(&role)
	//err := models.DB.Find(&role)
	//message_map := map[string]interface{}{}
	//if err != nil{
	//	message_map["code"] = 200
	//	message_map["list"] = role
	//	c.Data["json"] = message_map
	//	c.ServeJSON()
	//}else{
	//	message_map["code"] = 100
	//	message_map["msg"] = "查询失败"
	//	c.Data["json"] = message_map
	//	c.ServeJSON()
	//}
	// 不是前后分离
	//c.Data["json"] = role
	//c.ServeJSON()
	c.Data["roleList"] = role
	c.TplName = "admin/role/index.html"

}

func (c *RoleController) Add() {
	c.TplName = "admin/role/add.html"
}
// 增
func (c *RoleController) DoAdd() {
	title := strings.Trim(c.GetString("title"), " ")
	description := strings.Trim(c.GetString("description"), " ")
	if title == "" {
		c.Error("标题不能为空", "/role/add")
		return
	}
	role := models.Role{}
	role.Title = title
	role.Description = description
	role.Status = 1
	role.AddTime = int(models.GetUnix())
	err := models.DB.Create(&role).Error
	//message_map := map[string]interface{}{}
	//if err != nil{
	//	message_map["code"] = 100
	//	message_map["msg"] = "添加失败"
	//}else {
	//	message_map["code"] = 200
	//	message_map["msg"] = "添加成功"
	//}
	//c.Data["json"] = message_map
	//c.ServeJSON()
	if err != nil {
		c.Error("增加角色", "/role/add")
	} else {
		c.Success("增加角色成功", "/role")
	}
}
// 查
func (c *RoleController) Edit() {
	id,err := c.GetInt("id")
	if err != nil {
		c.Error("传入参数错误","/role")
		return
	}
	role := models.Role{Id:id}
	models.DB.Find(&role)
	c.Data["role"] = role
	c.TplName = "admin/role/edit.html"
}

// 修改
func (c *RoleController) DoEdit() {

	id, err1 := c.GetInt("id")
	if err1 != nil {
		c.Error("传入参数错误", "/role")
		return
	}
	title := strings.Trim(c.GetString("title"), " ")
	description := strings.Trim(c.GetString("description"), " ")
	if title == "" {
		c.Error("标题不能为空", "/role/add")
		return
	}
	//修改
	role := models.Role{Id: id}
	models.DB.Find(&role)
	role.Title = title
	role.Description = description
	err2 := models.DB.Save(&role).Error
	if err2 != nil {
		c.Error("修改数据失败", "/role/edit?id="+strconv.Itoa(id))
	} else {
		c.Success("修改角色成功", "/role")
	}

}

func (c *RoleController) Delete() {
	id, err1 := c.GetInt("id")
	if err1 != nil {
		c.Error("传入参数错误", "/role")
		return
	}
	role := models.Role{Id: id}
	models.DB.Delete(&role)
	c.Success("删除角色成功", "/role")

}

func (c *RoleController) Auth() {

	//1、获取角色id

	roleId, err := c.GetInt("id")
	if err != nil {
		c.Error("传入参数错误", "/role")
		return
	}

	//2、获取全部的权限

	access := []models.Access{}
	models.DB.Preload("AccessItem").Where("module_id=0").Find(&access)

	//3、获取当前角色拥有的权限 ,并把权限id放在一个map对象里面
	roleAccess := []models.RoleAccess{}
	models.DB.Where("role_id=?", roleId).Find(&roleAccess)
	roleAccessMap := make(map[int]int)
	for _, v := range roleAccess {
		roleAccessMap[v.AccessId] = v.AccessId
	}
	beego.Info(roleAccessMap)

	//4、循环遍历所有的权限数据,判断当前权限的id是否在角色权限的Map对象中,如果是的话给当前数据加入checked属性
	for i := 0; i < len(access); i++ {
		if _, ok := roleAccessMap[access[i].Id]; ok {
			access[i].Checked = true
		}
		for j := 0; j < len(access[i].AccessItem); j++ {
			if _, ok := roleAccessMap[access[i].AccessItem[j].Id]; ok {
				access[i].AccessItem[j].Checked = true
			}
		}
	}
	//5、渲染权限数据以及角色 Id
	c.Data["accessList"] = access
	c.Data["roleId"] = roleId
	c.TplName = "admin/role/auth.html"
	//beego.Info(roleId)
	//c.Data["json"] = access
	//c.ServeJSON()

}

func (c *RoleController) DoAuth() {
	//1、获取参数post传过来的角色id 和 权限切片
	roleId, err := c.GetInt("role_id")
	if err != nil {
		c.Error("传入参数错误", "/role")
		return
	}
	accessNode := c.GetStrings("access_node")

	//2、修改角色权限---删除当前角色下面的所有权限

	roleAccess := models.RoleAccess{}
	models.DB.Where("role_id=?", roleId).Delete(&roleAccess)

	//3、执行增加数据

	for _, v := range accessNode {
		accessId, _ := strconv.Atoi(v)
		roleAccess.AccessId = accessId
		roleAccess.RoleId = roleId
		models.DB.Create(&roleAccess)
	}
	c.Success("授权成功", "/role/auth?id="+strconv.Itoa(roleId))
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值