const FormController = require('flitter-auth/controllers/Forms')

/*
 * Handles views and processing for auth registration/login/logout/etc.
 * Most handlers are inherited from the default flitter-auth/controllers/Forms
 * controller, however you can override them here as you need.
 */
class Forms extends FormController {
    static get services() {
        return [...super.services, 'Vue', 'models']
    }

    async registration_provider_get(req, res, next) {
        return res.page('auth:register', {
            ...this.Vue.data({})
        })
    }

    async login_provider_get(req, res, next) {
        const Setting = this.models.get('Setting')

        return res.page('auth:login', {
            ...this.Vue.data({
                login_message: req.session?.auth?.message || req.T('auth.sign_in_to_continue'),
                registration_enabled: await Setting.get('auth.allow_registration')
            }),
        })
    }

    async logout_provider_present_success(req, res, next) {
        return this.Vue.auth_message(res, {
            message: req.T('auth.logged_out'),
            next_destination: '/',
        })
    }

    async logout_provider_clean_session(req, res, next) {
        await req.user.logout(req)
        return next()
    }
}

module.exports = exports = Forms
