isSuper.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package middleware
  2. import (
  3. "bytes"
  4. "designs/global"
  5. "designs/model"
  6. "designs/response"
  7. "designs/utils"
  8. "encoding/json"
  9. "github.com/gin-gonic/gin"
  10. "io"
  11. )
  12. func CheckAuth() gin.HandlerFunc {
  13. return func(c *gin.Context) {
  14. //查询出权限
  15. userName := c.GetString("userName")
  16. if userName == "chunhao" {
  17. //超级权限
  18. c.Set("permission", "[\"all\"]")
  19. c.Next()
  20. return
  21. }
  22. data, _ := c.GetRawData()
  23. form := struct {
  24. Gid string `form:"gid" json:"gid"`
  25. }{}
  26. json.Unmarshal(data, &form)
  27. // 3. 重置请求体,以便后续绑定使用
  28. c.Request.Body = io.NopCloser(bytes.NewBuffer(data))
  29. var admin model.Admin
  30. global.App.DB.Table("admin").Where("account", userName).Find(&admin)
  31. var PermissionSlice []string
  32. json.Unmarshal([]byte(admin.Permission), &PermissionSlice)
  33. if form.Gid == "" {
  34. //这个接口不验证gid
  35. c.Set("permission", admin.Permission)
  36. c.Next()
  37. return
  38. }
  39. if utils.InArray("all", PermissionSlice) || utils.InArray(form.Gid, PermissionSlice) {
  40. //能够使用gid
  41. c.Set("permission", admin.Permission)
  42. c.Next()
  43. return
  44. } else {
  45. response.Fail(c, -1, "gid权限不足,不能查看该数据!")
  46. c.Abort()
  47. return
  48. }
  49. }
  50. }
  51. func CheckSuper() gin.HandlerFunc {
  52. return func(c *gin.Context) {
  53. //查询出权限
  54. userName := c.GetString("userName")
  55. if userName == "chunhao" {
  56. c.Next()
  57. } else {
  58. response.Fail(c, -1, "权限不足,只有超级管理员可以访问!")
  59. c.Abort()
  60. return
  61. }
  62. }
  63. }