const Controller = require('libflitter/controller/Controller');

/*
 * Home Controller
 * -------------------------------------------------------------
 * Controller for the main homepage of this Flitter app. Methods here
 * are used as handlers for routes specified in the route files.
 */
class Home extends Controller {
    static get services() {
        return [...super.services, 'configs'];
    }

    /*
     * Serve the main welcome page.
     */
    welcome(req, res) {
        if (req.user) {
            // If we have a user, redirect them to the main app
            return res.redirect('/i')
        }

        /*
         * Return the welcome view.
         * The page() method is added by Flitter and passes some
         * helpful contextual data to the view as well.
         */
        return res.page('welcome', { user: req.user });
    }

    async get_login(req, res) {
        const AppName = this.configs.get('app.name');
        return res.page('login', { AppName });
    }

    toApp(req, res) {
        return res.redirect('/i');
    }

    async get_stat(req, res, next) {
        return res.api({
            noded: true,
            app_name: this.configs.get('app.name'),
            system_base: this.configs.get('app.url'),
            authenticated_user: !!req.user,
        })
    }
}

module.exports = Home;
