|
|
@@ -22,12 +22,89 @@ class LoginController {
|
|
|
* @return {void}
|
|
|
*/
|
|
|
async index(request, response) {
|
|
|
- let sessionUser = request.session.sessionUser;
|
|
|
- if (sessionUser !== undefined && sessionUser.ssoId >= 0) {
|
|
|
- return response.redirect("/pm");
|
|
|
- }
|
|
|
+ // 判断是否有带token和ssoID参数
|
|
|
+ if (request.query.ssoID !== undefined && request.query.token !== undefined) {
|
|
|
+ let ssoID = request.query.ssoID;
|
|
|
+ let token = request.query.token;
|
|
|
+ let preferenceSetting = {};
|
|
|
+ let compilationList = [];
|
|
|
+ try {
|
|
|
+ let userModel = new UserModel();
|
|
|
+ // 调用接口验证登录信息
|
|
|
+ let responseData = await userModel.getInfoFromSSO2(ssoID, token);
|
|
|
+ // 先判断返回值是否为未激活状态
|
|
|
+ if ( responseData === '-3') {
|
|
|
+ throw '因邮箱未完成认证,账号未激活;去<a href="https://sso.smartcost.com.cn" target="_blank">激活</a>。';
|
|
|
+ }
|
|
|
+ if ( responseData === '-2') {
|
|
|
+ throw 'token已过期,请重新登录Z+获取';
|
|
|
+ }
|
|
|
+ responseData = JSON.parse(responseData);
|
|
|
+ if (typeof responseData !== 'object') {
|
|
|
+ throw 'ssoId错误或token过期';
|
|
|
+ }
|
|
|
+
|
|
|
+ if (responseData.length <= 0) {
|
|
|
+ throw '接口返回数据错误';
|
|
|
+ }
|
|
|
+ let userData = responseData[0];
|
|
|
+ let sessionUser = {
|
|
|
+ ssoId: userData.id,
|
|
|
+ username: userData.username,
|
|
|
+ email: userData.useremail,
|
|
|
+ mobile: userData.mobile,
|
|
|
+ };
|
|
|
+
|
|
|
+ request.session.sessionUser = sessionUser;
|
|
|
+ // 记录用户数据到数据库
|
|
|
+ let result = await userModel.markUser(sessionUser, request);
|
|
|
+
|
|
|
+ // 获取偏好设置
|
|
|
+ let settingModel = new SettingModel();
|
|
|
+ preferenceSetting = await settingModel.getPreferenceSetting(request.session.sessionUser.id);
|
|
|
+ if (!result) {
|
|
|
+ throw '标记用户信息失败!';
|
|
|
+ }
|
|
|
+ let compilationModel = new CompilationModel();
|
|
|
+ if (preferenceSetting.login_ask === 1 || preferenceSetting.select_version === ''){
|
|
|
+ preferenceSetting.login_ask = 1;
|
|
|
+ compilationList = await compilationModel.getList();
|
|
|
+ } else {
|
|
|
+ compilationList = [];
|
|
|
+ }
|
|
|
+ // 获取编办信息
|
|
|
+ let sessionCompilation = request.session.sessionCompilation;
|
|
|
|
|
|
- response.render('users/html/login', {});
|
|
|
+ if (preferenceSetting.login_ask === 0 && !sessionCompilation &&
|
|
|
+ preferenceSetting.select_version !== '') {
|
|
|
+ let compilationData = await compilationModel.getCompilationById(preferenceSetting.select_version);
|
|
|
+ // 判断当前用户的是使用免费版还是专业版
|
|
|
+ let compilationVersion = await userModel.getVersionFromUpgrade(sessionUser.ssoId, preferenceSetting.select_version);
|
|
|
+ request.session.compilationVersion = compilationVersion;
|
|
|
+ request.session.sessionCompilation = compilationData;
|
|
|
+ if(request.session.sessionUser.latest_used !== preferenceSetting.select_version) await userModel.updateLatestUsed(request.session.sessionUser.id,preferenceSetting.select_version);
|
|
|
+ }
|
|
|
+ console.log(`${request.session.sessionUser.real_name}--id:${request.session.sessionUser.id}--登录了系统`);
|
|
|
+ if (preferenceSetting.login_ask === 1 || preferenceSetting.select_version === '') {
|
|
|
+ let renderData = {
|
|
|
+ versionData: compilationList,
|
|
|
+ };
|
|
|
+ response.render('users/html/login-ver', renderData);
|
|
|
+ } else {
|
|
|
+ return response.redirect("/pm");
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.log(error)
|
|
|
+ return response.redirect("/login");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ let sessionUser = request.session.sessionUser;
|
|
|
+ if (sessionUser !== undefined && sessionUser.ssoId >= 0) {
|
|
|
+ return response.redirect("/pm");
|
|
|
+ } else {
|
|
|
+ response.render('users/html/login', {});
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|