You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

125 lines
4.8 KiB

2 months ago
package com.dsideal.Sso.Controller;
import java.util.Map;
import java.util.UUID;
import com.dsideal.Sso.Util.LoginLogUtil;
import org.apache.commons.lang3.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.dsideal.Sso.Util.CommonUtil;
import com.dsideal.Sso.Util.LdapPassWordEncoder;
import com.dsideal.Sso.Util.SsoLoginHelper;
import com.dsideal.Sso.Model.Login;
import com.jfinal.core.Controller;
public class AppLoginController extends Controller {
/**
* app
*/
public void doLogin() {
JSONObject resultJson = new JSONObject();
String userName = getPara("username");
String passWord = getPara("password");
try {
if (StringUtils.isBlank(userName)) {
resultJson.put("success", false);
resultJson.put("msg", "用户名不允许为空!");
renderJson(resultJson);
}
if (StringUtils.isBlank(passWord)) {
resultJson.put("success", false);
resultJson.put("msg", "密码不允许为空!");
renderJson(resultJson);
}
// 密码进行ldap算法的md5加密
LdapPassWordEncoder passEncode = new LdapPassWordEncoder();
String passwordEncode = passEncode.getLdapPassword(passWord);
//Map loginMap = Login.dao.getLoginInfoByUserName(userName);
Map loginMap = CommonUtil.getLoginRouteMap(userName);
if (loginMap == null || !passwordEncode.equals(loginMap.get("password").toString())) {
resultJson.put("success", false);
resultJson.put("msg", "用户名或密码错误!");
renderJson(resultJson);
}
String sessionId = UUID.randomUUID().toString();
SsoLoginHelper.login(sessionId, loginMap);
resultJson.put("success", true);
resultJson.put("sessionId", sessionId);
resultJson.put("personId", loginMap.get("person_id").toString());
resultJson.put("personName", loginMap.get("person_name").toString());
resultJson.put("bureauId", loginMap.get("bureau_id").toString());
resultJson.put("identityId", loginMap.get("identity_id").toString());
//记录人员登录日志
LoginLogUtil.WriteLoginLog(loginMap.get("identity_id").toString(), loginMap.get("person_id").toString(), 2, LoginLogUtil.getIpAddr(getRequest()));
renderJson(resultJson);
} catch (Exception e) {
resultJson.put("success", false);
resultJson.put("msg", "登录异常!");
renderJson(resultJson);
}
}
/**
*
*/
public void loginCheck() {
JSONObject resultJson = new JSONObject();
//boolean flag = CommonUtil.getVerifyRequestIpRegister(getRequest());
boolean flag = true;
if (flag) {
String sessionId = getPara("sessionId");
if (!sessionId.equals("null") && sessionId != null && sessionId.length() != 0) {
Map loginMap = SsoLoginHelper.loginCheck(sessionId);
if (loginMap == null) {
resultJson.put("success", false);
resultJson.put("msg", "sessionId 已失效!");
} else {
resultJson.put("success", true);
resultJson.put("sessionId", sessionId);
resultJson.put("personId", loginMap.get("person_id").toString());
resultJson.put("personName", loginMap.get("person_name").toString());
resultJson.put("bureauId", loginMap.get("bureau_id").toString());
resultJson.put("identityId", loginMap.get("identity_id").toString());
resultJson.put("city_id", loginMap.get("city_id").toString());
resultJson.put("area_id", loginMap.get("area_id").toString());
//loginType 1正常登录 2切换登录 如果为切换登录main_person_id不能写-1
String loginType = loginMap.get("login_type").toString();
if (loginType.equals("1")) {
resultJson.put("mainPersonId", loginMap.get("main_person_id").toString());
} else {
resultJson.put("mainPersonId", Login.dao.getMainAccountPersonIdByPersonId(loginMap.get("person_id").toString()));
}
}
} else {
resultJson.put("success", false);
resultJson.put("msg", "sessionId 已失效!");
}
}
renderJson(resultJson);
}
/**
* app
*
* @throws Exception
*/
public void logout() {
String sessionId = getPara("sessionId");
SsoLoginHelper.logout(sessionId);
}
}