function login(publicKeyExponent, publicKeyModulus) {
//当为1时候添加id,来设置对应的样式
if (piccode == "1") {
//IE情况下
if (window.navigator.userAgent.indexOf("MSIE") >= 1 || !!window.ActiveXObject || "ActiveXObject" in window) {
$('.dlts').attr('id', 'dlts2');
} else {
$('.dlts').attr('id', 'dlts');
}
} else {
$('.dlts').attr('id', 'dlts1');
}
$(".dlts").html('正在登录,请稍等');
var userName = $("#loginname").val();
var loginName = $("#loginname").val();
var password = $("#loginpass").val();
if (userName == null || userName == "" || $.trim(userName) == "") {
$(".dlts").html("用户名不能为空");
return;
}
if (password == null || password == "" || $.trim(password) == "") {
$(".dlts").html("密码不能为空");
return;
}
//验证码校验
if (!input4Onblur() && piccode == "1") {
$(".dlts").html("验证码错误");
refreshCode();
return;
}
$("#lb").addClass("login_over");
var k1 = "012C2C9BA925FAF8045B2FD9B02A2664";
var k2 = "987KS98EHKAL0AFJJ32JDUEO973JK2";
var k3 = "8JSDBWOIU49IBE7DGSKDH5UDHENDJ4889";
var uname = userName;
var pword = password;
//加密
var userName = strEnc(userName, k1, k2, k3);
var password = strEnc(password, k1, k2, k3);
var pmosC = strEnc(para_val, k1, k2, k3);
var verifyCode = $("#code").val();
$.ajax({
url: '../loginServlet',
data: 'userName=' + userName + "&password=" + password + "&verifyCode=" + verifyCode + "&pmosC=" + pmosC,
dataType: 'json',
type: 'post',
success: function(result) {
//验证码校验
if (result.isverifyCode == "NO") {
$(".dlts").html("验证码错误");
refreshCode();
return;
}
//判断用户是否已被锁
if (result.isLock == "YES") {
$(".dlts").html("用户已被锁定,请联系管理员解锁");
$("#lb").removeClass("login_over");
refreshCode();
return;
}
if (result.status == "success") {
var news = result.isnewcomers;
//然后验证用户名和KEY是否绑定
if (result.isUseKey == "YES") {
loginByKey(userName, news,password)
} else {
loginNotKey(result,password,userName,news);
}
} else {
//如果本地登录失败,且登录人为售电公司,则尝试登录总部环境
if (result.hasOwnProperty("IS_SELLER_REGIST_TOP") && result.IS_SELLER_REGIST_TOP == 1 &&
result.hasOwnProperty("currentMarket") && result.currentMarket != "91812") {
if(registOnNewPlatform == "1"){
loginNewPlatform(uname, pword, userName, password);
}else{
var url = result.REGIST_DIRECT_URL
trylinkedzb(userName, password, url, pmosC);
}
} else { //本地登录报错提示
if (result.loginNum == 0) {
$(".dlts").html("输入密码错误达到3次,用户已被锁定,请联系管理员解锁");
$("#lb").removeClass("login_over");
} else if (result.loginNum == -1) {
$(".dlts").html("用户名不存在,请重试");
$("#lb").removeClass("login_over");
} else if (result.loginNum == -2) {
$(".dlts").html("用户名或密码错误,请重试");
$("#lb").removeClass("login_over");
// }
} else if (result.hasOwnProperty('flag') && result.flag == -101) {
$(".dlts").html("注册地与当前平台不一致");
$("#lb").removeClass("login_over");
} else {
$(".dlts").html("用户名或密码不正确,您还有" + result.loginNum + "次输入机会");
$("#lb").removeClass("login_over");
}
}
refreshCode();
}
}
});
}
function loginByKey(userName, news,password) {
var browser = BrowserInfo();
if ("Internet Explorer" == browser.name || "Netscape" == browser.name) {
var CryptoAgency = document.getElementById("CryptoAgent");
var CertSubjectDN;
try {
CertSubjectDN = CryptoAgency.SelectSignCertificate("", "");
} catch (err) {}
if (!CertSubjectDN) { //如果证书不存在
var LastErrorDesc;
try {
LastErrorDesc = CryptoAgency.GetLastErrorDesc();
} catch (e) {}
if (LastErrorDesc) {
$(".dlts").html(LastErrorDesc);
} else {
$(".dlts").html("请卸载并重新安装插件,然后插入证书使用");
}
$("#lb").removeClass("login_over");
refreshCode();
return false;
} else {
var selectedAlg = "sha-1";
var Signature = CryptoAgency.SignMessage(userName, selectedAlg); //加密
//因签名后的字符串中含有"+",提交到后台后如果不处理会变成" ",所以用",,,"替换"+",后台再用"+"替换",,,"
var sendData = 'username=' + userName + "&signUserName=" + Signature.replace(/\+/g, ",,,");
loginCfcaServlet(sendData,news,password,userName);
refreshCode();
}
} else if(("Chrome" == browser.name && parseInt(browser.version) > 30)
|| ("Firefox" == browser.name && parseInt(browser.version) > 30)
|| ("Edge" == browser.name)){
CryptoAgent.selectSignCertificate("", "",
function callback(result) {
if (0 == result.error) {
var CertSubjectDN = result.value;
if (!CertSubjectDN){ //如果证书不存在
var LastErrorDesc;
try {
LastErrorDesc = CryptoAgency.GetLastErrorDesc();
} catch (e) {}
if (LastErrorDesc) {
$(".dlts").html(LastErrorDesc);
} else {
$(".dlts").html("请先安装插件,然后插入证书使用");
}
$("#lb").removeClass("login_over");
refreshCode();
return false;
} else {
var selectedAlg = "SHA-1";
CryptoAgent.signMessage(userName, selectedAlg,
function callback(result) {
if (0 == result.error) {
Signature = result.value;
var sendData = 'username=' + userName + "&signUserName=" + Signature.replace(/\+/g, ",,,");
//证书登陆
loginCfcaServlet(sendData,news,password,userName);
} else {
CryptoAgent.GetLastErrorDesc(GetLastErrorCallback);
}
});
refreshCode();
}
} else {
CryptoAgent.GetLastErrorDesc(GetLastErrorCallback);
}
});
}else{
alert("Unsupported browser!");
}
}
function loginCfcaServlet(sendData,news,password,userName) {
$.ajax({
url: '../loginCfcaServlet',
data: sendData,
dataType: 'json',
async: false,
type: 'post',
success: function(result) {
if (result.status.indexOf("true") != -1) {
if (result.status.length > 4) {
var invalidDateString = result.status.replace("true", "");
if (invalidDateString == "outdated") {
$(".login_all").hide();
$.messager.defaults = {
ok: '好的',
cancel: '跳过'
};
$.messager.confirm('确认', '您的数字证书已失效,请尽快延期!', function(r) {
//新手上路
firstLogin(news,password,userName);
});
} else {
$(".login_all").hide();
$.messager.defaults = {
ok: '好的',
cancel: '跳过'
};
$.messager.confirm('确认', '您的数字证书将在' + invalidDateString + '失效,请尽快延期!', function(r) {
//新手上路
firstLogin(news,password,userName);
});
}
} else {
//新手上路
firstLogin(news,password,userName);
}
} else if (result.status == "gateWayError") {
$(".dlts").html("证书未认证通过,请确定此证书的有效性");
} else if (result.status == "notyet") {
$(".dlts").html("证书尚未生效");
} else if (result.status == "wrongCa") {
$(".dlts").html("证书日期非法");
} else {
$(".dlts").html("证书与用户不匹配");
}
}
});
}
//新手上路
function firstLogin(news,password,userName) {
if (news == "1") { //新手上路
$.ajax({
url: '../../pmos/rest/common/getInitInfo',
type: 'get',
async: false,
success: function(rc) {
if (rc.successful) {
participanttype = rc.resultValue.participanttype;
if (participanttype != "1") {
window.location.href = "newcomers.jsp";
} else {
doSlaveOrMasterLogin(password);
window.location.href = "index.jsp" + '?paramA=' + userName + "¶mB=" + password;
}
}
}
});
} else {
doSlaveOrMasterLogin(password);
window.location.href = "index.jsp" + '?paramA=' + userName + "¶mB=" + password;
}
}
function loginNotKey(result,password,userName,news) {
if (result.loginType != undefined && result.loginType == "reg") { //注册中的用户
if (result.hasOwnProperty("renewableType") && result.renewableType == "ok") {
window.location.href = "/RenewableEnergySubject/index/renewableParticipant.jsp?show=show";
} else if (result.hasOwnProperty("IS_OLDORNEW") && result.IS_OLDORNEW == 0) {
window.location.href = "regIndex.jsp?pmosA=" + userName + "&pmosB=" + password + "&marketid=" + para_val;
} else if (result.hasOwnProperty("IS_SELLER_REGIST_TOP") && result.IS_SELLER_REGIST_TOP == 1 &&
result.hasOwnProperty("participanttype") && result.participanttype == 6) { //新用户,且是售电公司
var url = result.REGIST_DIRECT_URL
window.location.href = "regIndexzb.jsp?urlzb=" + url + "&pmosA=" + userName + "&pmosB=" + password + "&marketid=" +
para_val;
} else {
console.log("未生效用户,登录失败");
}
} else {
$.ajax({
url: '../UserSkinServlet?flag=99',
type: 'post',
async: false,
dataType: 'text',
success: function() {
//新手上路
firstLogin(news,password,userName);
}
});
}
}
function GetLastErrorCallback(result) {
alert(result.value);
}
function BrowserInfo() {
var res = {
name : "",
version : "",
};
var reg;
var userAgent = self.navigator.userAgent;
if (reg = /edge\/([\d\.]+)/i.exec(userAgent)) {
res.name = "Edge";
res.version = reg[1];
} else if (/msie/i.test(userAgent)) {
res.name = "Internet Explorer";
res.version = /msie ([\d\.]+)/i.exec(userAgent)[1];
} else if (/Trident/i.test(userAgent)) {
res.name = "Internet Explorer";
res.version = /rv:([\d\.]+)/i.exec(userAgent)[1];
} else if (/chrome/i.test(userAgent)) {
res.name = "Chrome";
res.version = /chrome\/([\d\.]+)/i.exec(userAgent)[1];
} else if (/safari/i.test(userAgent)) {
res.name = "Safari";
res.version = /version\/([\d\.]+)/i.exec(userAgent)[1];
} else if (/firefox/i.test(userAgent)) {
res.name = "Firefox";
res.version = /firefox\/([\d\.]+)/i.exec(userAgent)[1];
}
return res;
}
function OnLoad() {
try {
var browser = BrowserInfo();
if ("Internet Explorer" == browser.name || "Netscape" == browser.name) {
var eDiv = document.createElement("div");
if (window.navigator.cpuClass == "x86") {
eDiv.innerHTML = "";
} else {
eDiv.innerHTML = "";
}
document.body.appendChild(eDiv);
CryptoAgent = document.getElementById("CryptoAgent");
} else if (("Chrome" == browser.name && parseInt(browser.version) > 30)
|| ("Firefox" == browser.name && parseInt(browser.version) > 30)
|| ("Edge" == browser.name)) {
CryptoAgent = new wsCryptokit();
CryptoAgent.init();
} else {
alert("Unsupported browser!");
}
} catch (e) {
alert(e);
return;
}
}
function OnUnLoad() {
try {
var browser = BrowserInfo();
if ("Internet Explorer" == browser.name) {
} else {
CryptoAgent.uninit();
}
} catch (e) {
alert(e);
return;
}
}