/*
 * UserOnly Middleware
 * -------------------------------------------------------------
 * Allows the request to proceed if there's an authenticated user
 * in the session. Otherwise, redirects the user to the login page
 * of the default provider.
 */
const Middleware = require('flitter-auth/middleware/UserOnly')
class UserOnly extends Middleware {
    static get services() {
        return [...super.services, 'output']
    }

    async test(req, res, next, args = {}){
        if ( req.is_auth ) 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
            this.output.debug('Set auth flow: '+req.originalUrl)
            return res.redirect('/auth/login')
        }

    }
    
}

module.exports = UserOnly
