permission.go 1.2 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. cUser, ok := c.Get("user")
  14. if !ok {
  15. c.JSON(200, serializer.Err(consts.CodeNoPermission, "登陆失效", nil))
  16. c.Abort()
  17. return
  18. }
  19. user := cUser.(*token.UserClaims)
  20. q := query.Use(config.AdminDB).AdminUser
  21. c.Set("admin_id", user.ID)
  22. models, err := q.WithContext(c).Where(q.ID.Eq(user.ID)).First()
  23. if err != nil {
  24. c.JSON(200, serializer.Err(consts.CodeNoPermission, err.Error(), err))
  25. c.Abort()
  26. return
  27. }
  28. if models == nil {
  29. c.JSON(200, serializer.Err(consts.CodeNoPermission, "用户不存在", nil))
  30. c.Abort()
  31. return
  32. }
  33. if models.Status != 1 {
  34. c.JSON(200, serializer.Err(consts.CodeCheckLogin, "账号已被禁用", nil))
  35. c.Abort()
  36. return
  37. }
  38. if models.UserName != "mojun" {
  39. if err := config.ValidityAuth(int64(models.RoleID), c.Request.Method, c.Request.URL.Path); err != nil {
  40. c.JSON(200, serializer.Err(consts.CodeNoPermission, err.Error(), err))
  41. c.Abort()
  42. return
  43. }
  44. }
  45. c.Next()
  46. return
  47. }
  48. }