| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /**
- * 登录页面控制器
- *
- * @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.findDataByCondition({username: username});
- // 没有找到对应数据
- if (managerData === null || managerData._id === undefined) {
- throw {code: 44001, err: '用户名或密码错误'};
- }
- // 加密密码
- let encryptPassword = managerModel.encryptPassword(managerData.token, password);
- if (encryptPassword !== managerData.password) {
- throw {code: 44001, err: '用户名或密码错误'};
- }
- // 成功后写入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
- };
- 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;
|