server_middleware.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package server
  2. import (
  3. "net/http"
  4. )
  5. func (s *Server) ensureWebEnabled(next handleFunc) handleFunc {
  6. return func(w http.ResponseWriter, r *http.Request, v *visitor) error {
  7. if !s.config.EnableWeb {
  8. return errHTTPNotFound
  9. }
  10. return next(w, r, v)
  11. }
  12. }
  13. func (s *Server) ensureUserManager(next handleFunc) handleFunc {
  14. return func(w http.ResponseWriter, r *http.Request, v *visitor) error {
  15. if s.userManager == nil {
  16. return errHTTPNotFound
  17. }
  18. return next(w, r, v)
  19. }
  20. }
  21. func (s *Server) ensureUser(next handleFunc) handleFunc {
  22. return s.ensureUserManager(func(w http.ResponseWriter, r *http.Request, v *visitor) error {
  23. if v.user == nil {
  24. return errHTTPUnauthorized
  25. }
  26. return next(w, r, v)
  27. })
  28. }
  29. func (s *Server) ensurePaymentsEnabled(next handleFunc) handleFunc {
  30. return func(w http.ResponseWriter, r *http.Request, v *visitor) error {
  31. if s.config.StripeSecretKey == "" || s.stripe == nil {
  32. return errHTTPNotFound
  33. }
  34. return next(w, r, v)
  35. }
  36. }
  37. func (s *Server) ensureStripeCustomer(next handleFunc) handleFunc {
  38. return s.ensureUser(func(w http.ResponseWriter, r *http.Request, v *visitor) error {
  39. if v.user.Billing.StripeCustomerID == "" {
  40. return errHTTPBadRequestNotAPaidUser
  41. }
  42. return next(w, r, v)
  43. })
  44. }
  45. func (s *Server) withAccountSync(next handleFunc) handleFunc {
  46. return func(w http.ResponseWriter, r *http.Request, v *visitor) error {
  47. if v.user == nil {
  48. return next(w, r, v)
  49. }
  50. err := next(w, r, v)
  51. if err == nil {
  52. s.publishSyncEventAsync(v)
  53. }
  54. return err
  55. }
  56. }