permission.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package middleware
  2. import (
  3. "gadmin/config"
  4. "gadmin/internal/admin/consts"
  5. "gadmin/internal/gorm/query"
  6. "gadmin/utility/serializer"
  7. "gadmin/utility/token"
  8. "github.com/gin-gonic/gin"
  9. )
  10. // Permission 验证权限
  11. func Permission() gin.HandlerFunc {
  12. return func(c *gin.Context) {
  13. q := query.Use(config.AdminDB).AdminUser
  14. userId := token.GetUID(c)
  15. if userId <= 0 {
  16. c.JSON(200, serializer.Err(consts.CodeNoPermission, "用户信息获取失败", nil))
  17. c.Abort()
  18. }
  19. c.Set("admin_id", userId)
  20. models, err := q.WithContext(c).Where(q.ID.Eq(userId)).First()
  21. if err != nil {
  22. c.JSON(200, serializer.Err(consts.CodeNoPermission, err.Error(), err))
  23. c.Abort()
  24. return
  25. }
  26. if models == nil {
  27. c.JSON(200, serializer.Err(consts.CodeNoPermission, "用户不存在", nil))
  28. c.Abort()
  29. return
  30. }
  31. if models.Status != 1 {
  32. c.JSON(200, serializer.Err(consts.CodeCheckLogin, "账号已被禁用", nil))
  33. c.Abort()
  34. return
  35. }
  36. c.Set("admin_role_id", int64(models.RoleID))
  37. if models.UserName != "mojun" {
  38. if err := config.ValidityAuth(int64(models.RoleID), c.Request.Method, c.Request.URL.Path); err != nil {
  39. c.JSON(200, serializer.Err(consts.CodeNoPermission, err.Error(), err))
  40. c.Abort()
  41. return
  42. }
  43. }
  44. c.Next()
  45. return
  46. }
  47. }