role.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. package controllers
  2. import (
  3. "github.com/astaxie/beego"
  4. // "log"
  5. "fmt"
  6. "box-gm/models"
  7. )
  8. type RoleController struct {
  9. beego.Controller
  10. }
  11. func (c *RoleController) Get() {
  12. userinfo := c.GetSession("user")
  13. if userinfo == nil {
  14. c.Ctx.Redirect(302, "/accountlogin")
  15. return
  16. }
  17. c.Data["username"] = userinfo.(*LoginInfo).Username
  18. c.Data["token"] = models.GetToken()
  19. userPermission := models.GetPermission(userinfo.(*LoginInfo).Username)
  20. if (userPermission & (1 << uint(models.ModelUser))) == 0 {
  21. c.Ctx.Redirect(302, "/index")
  22. return
  23. }
  24. roles, _ := models.GetRolelist()
  25. permission := models.GetPermissions()
  26. c.Data["permissions"] = permission
  27. c.Data["roles"] = roles
  28. // log.Printf("RoleController get Data[%v]", c.Data)
  29. c.TplName = "role.tpl"
  30. }
  31. func (c *RoleController) Post() {
  32. if !models.CheckToken(c.GetString("token")) {
  33. c.Data["json"] = &map[string]interface{}{"status": false, "info": "操作失败,请重新刷新界面"}
  34. c.ServeJSON()
  35. return
  36. }
  37. userinfo := c.GetSession("user")
  38. if userinfo == nil {
  39. c.Ctx.Redirect(302, "/accountlogin")
  40. return
  41. }
  42. if !models.CheckPermission(userinfo.(*LoginInfo).Username, models.ModelUser) {
  43. c.Data["json"] = &map[string]interface{}{"status": false, "info": "没有操作权限"}
  44. c.ServeJSON()
  45. return
  46. }
  47. r := new(models.Role)
  48. r.Name = c.GetString("name")
  49. i, _ := c.GetInt("permission")
  50. r.Permission = int64(i)
  51. // log.Printf("RoleController post Name[%s] Permission[%d]", r.Name, r.Permission)
  52. _, err := models.AddRole(r)
  53. if err != nil {
  54. c.Data["json"] = &map[string]interface{}{"status": false, "info": err}
  55. c.ServeJSON()
  56. return
  57. }
  58. c.Data["json"] = &map[string]interface{}{"status": true, "info": "创建角色成功"}
  59. c.ServeJSON()
  60. go models.SaveLog(userinfo.(*LoginInfo).Username, "创建角色", &map[string]interface{}{"name": r.Name, "permission": i})
  61. }
  62. func (c *RoleController) Put() {
  63. if !models.CheckToken(c.GetString("token")) {
  64. c.Data["json"] = &map[string]interface{}{"status": false, "info": "操作失败,请重新刷新界面"}
  65. c.ServeJSON()
  66. return
  67. }
  68. userinfo := c.GetSession("user")
  69. if userinfo == nil {
  70. c.Ctx.Redirect(302, "/accountlogin")
  71. return
  72. }
  73. if !models.CheckPermission(userinfo.(*LoginInfo).Username, models.ModelUser) {
  74. c.Data["json"] = &map[string]interface{}{"status": false, "info": "没有操作权限"}
  75. c.ServeJSON()
  76. return
  77. }
  78. id, _ := c.GetInt64("id")
  79. role := models.GetRoleById(id)
  80. if role == nil {
  81. c.Data["json"] = &map[string]interface{}{"status": false, "info": fmt.Sprintf("角色[%d]不存在", id)}
  82. c.ServeJSON()
  83. return
  84. }
  85. if role.Id == 1 {
  86. c.Data["json"] = &map[string]interface{}{"status": false, "info": fmt.Sprintf("该用户[%s]不能修改", role.Name)}
  87. c.ServeJSON()
  88. return
  89. }
  90. r := new(models.Role)
  91. r.Id = role.Id
  92. r.Name = c.GetString("name")
  93. i, _ := c.GetInt64("permission")
  94. r.Permission = i
  95. // log.Printf("RoleController Put Name[%s] Permission[%d]", r.Name, r.Permission)
  96. _, err := models.UpdateRole(r)
  97. if err != nil {
  98. c.Data["json"] = &map[string]interface{}{"status": false, "info": err}
  99. c.ServeJSON()
  100. return
  101. }
  102. c.Data["json"] = &map[string]interface{}{"status": true, "info": "更新角色成功"}
  103. c.ServeJSON()
  104. go models.SaveLog(userinfo.(*LoginInfo).Username, "修改角色", &map[string]interface{}{"name": r.Name, "permission": i})
  105. }
  106. func (c *RoleController) Delete() {
  107. if !models.CheckToken(c.GetString("token")) {
  108. c.Data["json"] = &map[string]interface{}{"status": false, "info": "操作失败,请重新刷新界面"}
  109. c.ServeJSON()
  110. return
  111. }
  112. userinfo := c.GetSession("user")
  113. if userinfo == nil {
  114. c.Ctx.Redirect(302, "/accountlogin")
  115. return
  116. }
  117. if !models.CheckPermission(userinfo.(*LoginInfo).Username, models.ModelUser) {
  118. c.Data["json"] = &map[string]interface{}{"status": false, "info": "没有操作权限"}
  119. c.ServeJSON()
  120. return
  121. }
  122. id, _ := c.GetInt64("id")
  123. role := models.GetRoleById(id)
  124. if role == nil {
  125. c.Data["json"] = &map[string]interface{}{"status": false, "info": fmt.Sprintf("角色[%d]不存在", id)}
  126. c.ServeJSON()
  127. return
  128. }
  129. models.DelRoleById(id)
  130. c.Data["json"] = &map[string]interface{}{"status": true, "info": "删除角色成功"}
  131. c.ServeJSON()
  132. go models.SaveLog(userinfo.(*LoginInfo).Username, "删除角色", &map[string]interface{}{"ids": id})
  133. }