auth.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package auth
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "ulink-admin/modules/system/service"
  5. )
  6. type AuthMiddleWare struct {
  7. permissionService service.PermissionService
  8. loginService service.LoginService
  9. }
  10. // AuthCheck 中间件,检查访问权限
  11. func (a AuthMiddleWare) AuthCheck() gin.HandlerFunc {
  12. return func(c *gin.Context) {
  13. /* authConfig := config.GetAuthConfig()
  14. //调用过滤去将放行的请求先放行
  15. if DoSquare(c) {
  16. return
  17. }
  18. user := a.loginService.LoginUser(c)
  19. url := c.Request.URL.Path
  20. method := c.Request.Method
  21. //app用户处理
  22. if user.UserType != systemReq.SystemUserType && !strings.Contains(url, "/app/") {
  23. c.JSON(http.StatusOK, gin.H{
  24. "status": 403,
  25. "msg": "权限不足,无权限访问",
  26. })
  27. c.Abort()
  28. return
  29. }
  30. if authConfig.IsOpen == "0" {
  31. return
  32. }
  33. //admin, _ := c.Get("admin")
  34. //超级管理员直接放行
  35. if user.IsAdmin() {
  36. return
  37. }
  38. //获取所有权限集合
  39. allPerms := a.permissionService.GetAllPermission()
  40. //不在数据库中进行了权限管理就直接放行 不判断权限
  41. isFlag := false
  42. for _, item := range *allPerms {
  43. index := 0
  44. ary := strings.Split(item, ":")
  45. ary = append(ary[:index], ary[index+1:]...)
  46. str := strings.Join(ary, "/")
  47. if strings.Contains(url, str) {
  48. isFlag = true
  49. break
  50. }
  51. }
  52. if !isFlag {
  53. return
  54. }
  55. //权限集合
  56. perms := a.permissionService.GetMenuPermission(user)
  57. isHave := false
  58. for _, item := range *perms {
  59. index := 0
  60. ary := strings.Split(item, ":")
  61. ary = append(ary[:index], ary[index+1:]...)
  62. str := strings.Join(ary, "/")
  63. if strings.Contains(url, str) {
  64. isHave = true
  65. break
  66. }
  67. }
  68. if !isHave {
  69. c.JSON(http.StatusOK, gin.H{
  70. "status": 403,
  71. "msg": "权限不足,无权限访问",
  72. })
  73. c.Abort()
  74. return
  75. }
  76. fmt.Printf("%s||%s", url, method)*/
  77. }
  78. }