mobile_api_base_controller.go 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package mobile_api_controllers
  2. import (
  3. "XT_New/controllers"
  4. "XT_New/enums"
  5. "XT_New/models"
  6. "XT_New/service"
  7. "fmt"
  8. "strconv"
  9. "strings"
  10. )
  11. type MobileBaseAPIController struct {
  12. controllers.BaseAPIController
  13. }
  14. func (this *MobileBaseAPIController) Prepare() {
  15. this.BaseAPIController.Prepare()
  16. // beego.Trace("============================================================")
  17. // beego.Trace("session ID: %v", this.Ctx.Input.Cookie("beegosessionID"))
  18. // beego.Trace("session : %v", this.GetSession("info"))
  19. // this.SetSession("info", time.Now().Format("2006/01/02 15:04:05"))
  20. // beego.Trace("============================================================")
  21. }
  22. func (this *MobileBaseAPIController) GetMobileAdminUserInfo() *MobileAdminUserInfo {
  23. userInfo := this.GetSession("mobile_admin_user_info")
  24. if userInfo == nil {
  25. return nil
  26. } else {
  27. return userInfo.(*MobileAdminUserInfo)
  28. }
  29. }
  30. type MobileAdminUserInfo struct {
  31. AdminUser *models.AdminUser
  32. Org *models.Org
  33. App *models.OrgApp
  34. AppRole *models.App_Role
  35. Subscibe *models.ServeSubscibe
  36. TemplateInfo *models.GobalTemplate
  37. }
  38. type MobileBaseAPIAuthController struct {
  39. MobileBaseAPIController
  40. }
  41. func (this *MobileBaseAPIAuthController) Prepare() {
  42. token := this.Ctx.GetCookie("token_cookie")
  43. //if len(token) == 0{
  44. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNotLogin)
  45. // this.StopRun()
  46. //}
  47. this.MobileBaseAPIController.Prepare()
  48. adminUserInfo := this.GetMobileAdminUserInfo()
  49. if adminUserInfo == nil || len(token) == 0 {
  50. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNotLogin)
  51. this.StopRun()
  52. }
  53. //if this.Ctx.Request.Method != "GET" {
  54. // err := service.GetOrgSubscibeState(adminUserInfo.Subscibe)
  55. // if err != nil || adminUserInfo.Subscibe.State == 3 {
  56. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNotSubscibe)
  57. // this.StopRun()
  58. // }
  59. //}
  60. if this.Ctx.Request.Header.Get("Permission") == "1" {
  61. if !adminUserInfo.AdminUser.IsSuperAdmin || adminUserInfo.AdminUser.Id != adminUserInfo.Org.Creator {
  62. isPermission := false
  63. adminUserInfo := this.GetMobileAdminUserInfo()
  64. //该机构下该用户有多少个
  65. role, _ := service.GetUserAllRole(adminUserInfo.Org.Id, adminUserInfo.AdminUser.Id)
  66. var roles []string
  67. if len(role.RoleIds) <= 0 { //该用户没有设置角色
  68. } else {
  69. roles = strings.Split(role.RoleIds, ",")
  70. }
  71. fmt.Println(roles)
  72. //获取该用户下所有角色的权限总集
  73. var userRolePurviews string
  74. var userRolePurviewsArr []string
  75. for _, item := range roles {
  76. role_id, _ := strconv.ParseInt(item, 10, 64)
  77. purviews, _ := service.GetRoleFuncPurviewIds(role_id)
  78. if len(userRolePurviews) == 0 {
  79. userRolePurviews = purviews
  80. } else {
  81. userRolePurviews = userRolePurviews + "," + purviews
  82. }
  83. }
  84. //该用户所拥有角色的权限的总集
  85. userRolePurviewsArr = RemoveRepeatedPurviewElement(strings.Split(userRolePurviews, ","))
  86. fmt.Println(userRolePurviewsArr)
  87. //系统所记录的权限列表
  88. allPermission, _ := service.GetAllFunctionPurview()
  89. for _, item := range allPermission {
  90. fmt.Println(strings.Split(item.Urlfor, ",")[0])
  91. fmt.Println(strings.Split(this.Ctx.Request.RequestURI, "?")[0] + "?" + "mode=" + this.GetString("mode"))
  92. //判断当前路由是否在权限路由列表里面
  93. if strings.Split(item.Urlfor, ",")[0] == strings.Split(this.Ctx.Request.RequestURI, "?")[0]+"?"+"mode="+this.GetString("mode") {
  94. //获取该角色的所有权限
  95. for _, items := range userRolePurviewsArr {
  96. id, _ := strconv.ParseInt(items, 10, 64)
  97. fmt.Println(id)
  98. fmt.Println(item.ID)
  99. if id == item.ID {
  100. isPermission = true
  101. }
  102. }
  103. if !isPermission {
  104. msg, _ := service.FindErrorMsgByStr(strings.Split(this.Ctx.Request.RequestURI, "?")[0] + "?" + "mode=" + this.GetString("mode"))
  105. json := make(map[string]interface{})
  106. json["msg"] = msg
  107. json["code"] = 0
  108. json["state"] = 0
  109. this.Data["json"] = json
  110. this.ServeJSON()
  111. this.StopRun()
  112. }
  113. }
  114. }
  115. }
  116. }
  117. }
  118. func RemoveRepeatedPurviewElement(arr []string) (newArr []string) {
  119. newArr = make([]string, 0)
  120. for i := 0; i < len(arr); i++ {
  121. repeat := false
  122. for j := i + 1; j < len(arr); j++ {
  123. if arr[i] == arr[j] {
  124. repeat = true
  125. break
  126. }
  127. }
  128. if !repeat {
  129. newArr = append(newArr, arr[i])
  130. }
  131. }
  132. return
  133. }