const { Middleware } = require('libflitter') class ApiRoute extends Middleware { static get services() { return [...super.services, 'models'] } async test(req, res, next, { allow_public = false }) { console.log({allow_public}) // If we have an authenticated session, just continue if ( req.is_auth ) { return next() } else if ( allow_public ) { const PublicUser = this.models.get('auth:PublicUser') req.user = await PublicUser.get_for_request(req) return next() } else { // If not signed in, save the target url so we can redirect back here after auth req.session.auth.flow = req.originalUrl return res.redirect('/auth/login') } } } module.exports = ApiRoute