UNPKG

@europeana/portal

Version:
35 lines (30 loc) 1.17 kB
import Middleware from '../middleware' import { routeOption, getMatchedComponents, normalizePath } from './utilities' Middleware.auth = function (ctx) { // Disable middleware if options: { auth: false } is set on the route if (routeOption(ctx.route, 'auth', false)) { return } // Disable middleware if no route was matched to allow 404/error page const matches = [] const Components = getMatchedComponents(ctx.route, matches) if (!Components.length) { return } const { login, callback } = ctx.$auth.options.redirect const pageIsInGuestMode = routeOption(ctx.route, 'auth', 'guest') const insidePage = page => normalizePath(ctx.route.path) === normalizePath(page) if (ctx.$auth.$state.loggedIn) { // -- Authorized -- if (!login || insidePage(login) || pageIsInGuestMode) { ctx.$auth.redirect('home') } } else { // -- Guest -- // (Those passing `callback` at runtime need to mark their callback component // with `auth: false` to avoid an unnecessary redirect from callback to login) if (!pageIsInGuestMode && (!callback || !insidePage(callback))) { ctx.$auth.redirect('login') } } }