middleware.js 906 B

123456789101112131415161718192021222324252627282930
  1. import { boot } from 'quasar/wrappers'
  2. /**
  3. * A stack of different middlewares ran in series
  4. * Link: https://blog.logrocket.com/vue-middleware-pipelines/
  5. */
  6. function middlewarePipeline (context, middlewares, index) {
  7. const middleware = middlewares[index]
  8. if (!middleware) return context.next
  9. return () => {
  10. const nextMiddleware = middlewarePipeline(
  11. context, middlewares, index + 1
  12. )
  13. middleware({ ...context, next: nextMiddleware })
  14. }
  15. }
  16. export default boot(({ router, store }) => {
  17. router.beforeEach((to, from, next) => {
  18. // Now you need to add your authentication logic here, like calling an API endpoint
  19. if (!to.meta.middlewares) {
  20. return next()
  21. }
  22. const middlewares = to.meta.middlewares
  23. const context = { to, from, next, store }
  24. return middlewares[0]({
  25. ...context,
  26. next: middlewarePipeline(context, middlewares, 1)
  27. })
  28. })
  29. })