/** * 登录页面控制器 * * @author CaiAoLin * @date 2017/6/1 * @version */ import BaseController from "../../common/base/base_controller"; import ManagerModel from "../models/manager_model"; import crypto from "crypto"; class LoginController extends BaseController { /** * 登录页面 * * @param {object} request * @param {object} response * @return {void|Mixed} */ index(request, response) { let renderData = { layout: false, }; let managerSessionData = request.session.managerData; if (managerSessionData !== undefined) { return response.redirect("/dashboard"); } response.render('users/views/login/index', renderData); } /** * 登录操作 * * @param {object} request * @param {object} response * @return {string} */ async login(request, response) { let username = request.body.username; let password = request.body.password; let managerModel = new ManagerModel(); let responseData = { error: 0, msg: '' }; try { let managerData = await managerModel.validLogin(username, password); // 成功后写入session let currentTime = new Date().getTime(); let sessionToken = crypto.createHmac('sha1', currentTime + '').update(managerData.username) .digest().toString('base64'); let managerSession = { username: managerData.username, loginTime: currentTime, sessionToken: sessionToken, userID: managerData.id, permission: managerData.permission === undefined ? '' : managerData.permission, superAdmin: managerData.super_admin }; request.session.managerData = managerSession; } catch (error) { responseData.error = error.code; responseData.msg = error.err; } response.json(responseData); } /** * 退出操作 * * @param {object} request * @param {object} response * @return {void} */ logout(request, response) { // 清空session request.session.destroy(); response.redirect('/login'); } } export default LoginController;