'use strict';

/**
 * 登录页面控制器
 *
 * @author Mai
 * @data 2018/4/18
 * @version
 */

module.exports = app => {
    class LoginController extends app.BaseController {

        /**
         * 登录页面
         *
         * @param {object} ctx - egg全局context
         * @return {void}
         */
        async index(ctx) {
            const errorMessage = ctx.session.loginError;
            // 显示完删除
            ctx.session.loginError = null;

            const renderData = {
                errorMessage,
            };
            await ctx.render('login/login.ejs', renderData);
        }

        /**
         * 登录操作
         *
         * @param {Object} ctx - egg全局变量
         * @return {void}
         */
        async login(ctx) {
            try {
                const result = await ctx.service.customer.validLogin(ctx.request.body);

                if (!result) {
                    throw '登录失败';
                }

                ctx.redirect('/lib');
            } catch(err) {
                console.log(err);
                ctx.session.loginError = '用户名或密码错误';
                ctx.redirect('/login');
            }
        }

        /**
         * 退出登录
         *
         * @param {Object} ctx - egg全局变量
         * @return {void}
         */
        async logout(ctx) {
            // 删除session并跳转
            ctx.session = null;
            ctx.redirect('/');
        }
    }
    return LoginController;
};