var DISPLAYMODE_LOGIN = 1; var DISPLAYMODE_VERIFICATION = 2; var DISPLAYMODE_PASSWORD = 3; var crudLogin$ = null; var crudLogin = null, mainForm = null; var userDetail;// login context var fldDomain, fldLogin, fldCaptcha, fldPassword, fldNewPassword1, fldNewPassword2; var formMode;// form mode : NORMAL, FORGOTPASSWORD, FORGOT2FA var tempPwd = null; var newCaretPosition = null; function initializeLogin() { var lFormConfig = {"fieldGroups":{"userdetails":["domain","login"],"insert":["domain","login","password","encPassword","newPassword1","encNewPassword1","newPassword2","encNewPassword2","mode","passwordIndex","details","securityQuestions","securityAnswers","captcha","otp","factor"],"update":["domain","login","password","encPassword","newPassword1","encNewPassword1","newPassword2","encNewPassword2","mode","passwordIndex","details","securityQuestions","securityAnswers","captcha","otp","factor"]},"other":null,"name":"LoginRequest","fields":[{"notNull":true,"dataType":"STRING","name":"domain","pattern":"^[ -~]*$","notBlank":true,"label":"Domain","maxLength":30,"conversion":["toUpper"]},{"notNull":true,"dataType":"STRING","name":"login","pattern":"^[ -~]*$","notBlank":true,"label":"Login Id","maxLength":50,"conversion":["toUpper"]},{"notNull":true,"dataType":"STRING","name":"password","pattern":"^[ -~]*$","notBlank":true,"label":"Password","maxLength":30},{"dataType":"STRING","name":"encPassword","pattern":"^[ -~]*$","label":"EncPassword"},{"dataType":"STRING","name":"newPassword1","pattern":"^[ -~]*$","label":"New Password","maxLength":30},{"dataType":"STRING","name":"encNewPassword1","pattern":"^[ -~]*$","label":"EncNewPassword1"},{"dataType":"STRING","name":"newPassword2","pattern":"^[ -~]*$","label":"Reenter Password","maxLength":30},{"dataType":"STRING","name":"encNewPassword2","pattern":"^[ -~]*$","label":"EncNewPassword2"},{"dataType":"INTEGER","name":"mode","label":"Mode"},{"dataType":"INTEGER","name":"passwordIndex","label":"PasswordIndex"},{"dataType":"STRING","name":"details","pattern":"^[ -~]*$","label":"Details","maxLength":100},{"allowMultiple":true,"dataType":"STRING","name":"securityQuestions","pattern":"^[ -~]*$","label":"SecurityQuestions","maxLength":30},{"allowMultiple":true,"dataType":"STRING","name":"securityAnswers","pattern":"^[ -~]*$","label":"Answer to Question","maxLength":30},{"dataType":"STRING","name":"captcha","pattern":"^[ -~]*$","label":"Captcha"},{"dataType":"STRING","name":"otp","pattern":"^[ -~]*$","label":"Otp"},{"dataType":"INTEGER","name":"factor","label":"Factor"}],"desc":null}; var lConfig = { resource: "login", new: true, preSaveHandler: function(pData) { //pData.password = tempPwd; pData.encPassword = encodePassword(pData.password, userDetail); //pData.encPassword = CryptoJS.SHA1(CryptoJS.SHA1(pData.password)+userDetail.salt).toString(); pData.password = ""; pData.factor = 1; if (userDetail.questions) { pData.factor=2; appendAnswers(pData); } return pData; }, postSaveHandler: function(pObj) { $('#btnLogin').prop('disabled',false); if (pObj.questions) { $.extend(userDetail,pObj); setDisplayMode(DISPLAYMODE_PASSWORD); return false; } if (pObj.status=='F') { if (pObj.captcha) { setCaptcha('N'); userDetail.captcha = true; } alert(pObj.reason, "Login Failed"); } else { if ((pObj.reason != null) && (pObj.reason != '')) { alert(pObj.reason, "Login Message", function() { if (pObj.status=='P') { setChangePassword(); } else if (pObj.status=='C') { sessionStorage.clear(); location.href = "login"; } }); } if (pObj.status=='S') { fldPassword.setValue(null); closeRemotePage(); postLogin(pObj,true); if ((pObj.type == 2) || (pObj.type == 3)) { var lMsg = "Participants are requested to check whether the PAN details are updated/available for self and unregistered participants introduced by them(if any). Registered Participant can check its PAN from Profile menu and for Unregistered Participant from Participant Registration>PAN Registration>Add PAN for unregd. Participant after login. In case PAN is not updated, kindly enter and upload the PAN document from the PAN Registration tab by July 30, 2022.

Kindly note that reporting of deals shall not be permitted of Participants (Registered/Unregistered) who have not updated the PAN within the prescribed timelines."; if (pObj.panMissing) { alert(lMsg,null,function() { location.href="userpandetail"; }) } else if (pObj.panDocMissing) { lMsg = "PAN document is missing for logged in participant. Kindly upload the same to avoid inconvenience. Click Ok button to update pan document."; alert(lMsg,null,function() { location.href="userpandetail"; }) } else { alert(lMsg,null,function() { location.href="marketwatch"; }) } return false; } if ((pObj.type == 2) || (pObj.type == 13)) { if (pObj.gstSubmitted && (pObj.gstSubmitted!='Y')) { if (!pObj.custodianCode) { alert("Kindly update GST Details for billing purpose.",null,function() { location.href="participant?id=0"; }) return false; } if (pObj.stateMissing) { alert("Kindly update your address details for stamp duty purpose.",null,function() { location.href="participant?id=0"; }) return false; } } } if (pObj.quesMissing) { var lMandatory = pObj.resourceGroup === "SECURITY"; var lMessage = "You have not updated your security settings for 2 factor authentication.
"; if (lMandatory) lMessage += "Please note that 2 factor authentication is mandatory"; else lMessage += "You can configure 2 factor authentication now"; lMessage += "

Do you want to configure 2 factor authentication?"; xconfirm(lMessage,"Security Settings",null,function(pYes){ if (pYes) { if (lMandatory) location.href = "home?sec=2"; else location.href = "marketwatch?sec=1"; } else if (lMandatory) { alert("Login without 2 factor authentication not allowed.", null, function(){ logout(); }) return; } else location.href='marketwatch'; }); } else location.href='marketwatch'; } } return false; } }; lConfig = $.extend(lConfig, lFormConfig); crudLogin$ = $('#contLogin').xcrudwrapper(lConfig); crudLogin = crudLogin$.data('xcrudwrapper'); mainForm = crudLogin.options.mainForm; //crudLogin.options.btnSave$=$('#btnLogin'); fldDomain = mainForm.getField('domain'); fldLogin = mainForm.getField('login'); fldCaptcha = mainForm.getField('captcha'); fldPassword = mainForm.getField('password'); fldNewPassword1 = mainForm.getField('newPassword1'); fldNewPassword2 = mainForm.getField('newPassword2'); fldDomain.options.label='Participant Code'; fldPassword.options.label='Password'; var lDomain = localStorage.getItem('domain'); var lLogin = localStorage.getItem('login'); if ((lDomain != null) || (lLogin != null)) $('#remember_me').prop('checked', true); if (loginData && loginData.login) { lDomain=loginData.domain; lLogin=loginData.login; if (lDomain=='') lDomain=lLogin; } fldDomain.setValue(lDomain); fldLogin.setValue(lLogin); $('#btnReload').on('click',function(pEvent) { setCaptcha('Y'); }); $('#newregpart').on('click',function(pEvent) { window.open("regpart?new=true","_blank"); }); /* $('#divPassword #password').on('keydown',function(pEvent) { pwdKeydown(pEvent); }); $('#divPassword #password').on('keyup',function(pEvent) { pwdKeyup(pEvent); }); $('#divPassword #password').on('keypress',function(pEvent) { pwdKeypress(pEvent); }); $('#divPassword #password').on('paste',function(pEvent) { pwdPaste(pEvent); }); */ $('#btnLogin').on('click',function(pEvent) { if ((formMode == 0) || (formMode == 4)) { $('#btnLogin').prop('disabled',true); if (!crudLogin.saveHandler()) { $('#btnLogin').prop('disabled',false); } } else { var lErrors = mainForm.check(); if ((lErrors != null) && (lErrors.length > 0)) { crudLogin.showError(); return; } var lData = mainForm.getValue(); //lData.password = tempPwd; var lUrl; if (formMode==2) { lData.password = null; appendAnswers(lData); lUrl = "forgotpassword"; } else { lData.encPassword = CryptoJS.SHA1(CryptoJS.SHA1(lData.password)+userDetail.salt).toString(); lData.password = ""; lUrl = "forgot2fa"; } $('#btnLogin').prop('disabled',true); $.ajax( { url: lUrl, type: "POST", data:JSON.stringify(lData), success: function( pObj, pStatus, pXhr) { //tempPwd = null; closeRemotePage(); alert(pObj.message); setDisplayMode(DISPLAYMODE_LOGIN); }, error: function(pXhr, pStatus, pError) { //tempPwd = null; //setCaptcha('Y'); userDetail.captcha = true; errorHandler(pXhr, pStatus, pError); }, complete: function() { $('#btnLogin').prop('disabled',false); } }); } }); $('#btnNext').on('click',function(pEvent) { getUserDetails(0); }); $('#btnForgot').on('click',function(pEvent) { if (!isCaptchaShown()) { setCaptcha(true); $('#btnLogin').addClass('hidden'); xalert("Enter the captcha characters and click on 'Forgot your password' again."); } else getUserDetails(2); }); $('#btnVerify').on('click',function(pEvent) { setDisplayMode(DISPLAYMODE_PASSWORD); }); $('#btnBack').on('click',function(pEvent) { tempPwd = null; setDisplayMode(DISPLAYMODE_LOGIN); }); setDisplayMode(DISPLAYMODE_LOGIN); var lMsg = ''; setTimeout(function() { xalert(lMsg,"Important Notification", function() { fldDomain.focus(); }); }, 500) } function setDisplayMode(pMode) { $('#contLogin').removeClass('grp1 grp2 grp3'); $('#contLogin').addClass('grp'+pMode); if (pMode==DISPLAYMODE_LOGIN) { userDetail={}; $('#divTitle').html("Log in
to your account
"); fieldMandatory([fldPassword,fldNewPassword1,fldNewPassword2], false); fldDomain.focus(); setCaptcha('Y'); } else if (pMode==DISPLAYMODE_VERIFICATION) { $('#divTitle').html("Server Verfication"); $('#btnVerify').focus(); var lSecurityTxt = ""; if (userDetail.secretText) lSecurityTxt += "

Verification String:

"; if (userDetail.secretImage) lSecurityTxt += "

Verification Image

"; $('.grp2 #divVerify').html(lSecurityTxt); } else if (pMode==DISPLAYMODE_PASSWORD) { $('#btnLogin').removeClass('hidden'); $('#btnLogin').prop('disabled',false); var lTitle = fldDomain.getValue() + ' ' + fldLogin.getValue(); $('#divTitle').text(lTitle); // questions div var lHtml = ''; if (userDetail.questions) { $.each(userDetail.questions, function(pIndex, pValue){ lHtml+='
'; lHtml+='
'; }); lHtml+='
'; } $('#divQuestion').html(lHtml); $('#divQuestion').removeClass('hidden'); $('#divQuestion #securityAnswer0').focus(); // login btn label if (formMode==0 || formMode == 4) { $('#btnLogin').html('Login'); } else if (formMode==2) { $('#btnLogin').html('Recover Password') } else if (formMode==3) { $('#btnLogin').html('Clear 2FA Settings'); } // password fld fieldMandatory(fldPassword, (formMode==0 || formMode == 4) || (formMode==3)); if ((userDetail.questions==null) && (formMode==0 || formMode == 4)) { $('#divPassword').removeClass('hidden'); fldPassword.setValue(""); fldNewPassword1.setValue(null); fldNewPassword2.setValue(null); fldPassword.focus(); } else { $('#divPassword').addClass('hidden'); $('#divChangePassword').addClass('hidden'); } // captcha if (userDetail.captcha) setCaptcha('N'); else { hideCaptcha(); } } } function fieldMandatory(pFld,pFlag) { if (pFld) { if ($.isArray(pFld)) { $.each(pFld,function(pIndex, pValue){ pValue.options.notNull = pFlag; pValue.options.notBlank = pFlag; }); } else { pFld.options.notNull = pFlag; pFld.options.notBlank = pFlag; } } } function getUserDetails(pMode) { if (pMode == 0) { fieldMandatory([fldPassword,fldNewPassword1,fldNewPassword2], false); var lErrors = mainForm.check(); if ((lErrors != null) && (lErrors.length > 0)) { crudLogin.showError(); return; } } var lDomain = fldDomain.getValue().toUpperCase(); var lLogin = fldLogin.getValue().toUpperCase(); if ($('#remember_me').is(':checked')) { localStorage.setItem('domain',lDomain); localStorage.setItem('login',lLogin); } else { localStorage.removeItem('domain'); localStorage.removeItem('login'); } var lData = {domain:lDomain,login:lLogin,mode:pMode}; var lUrl = "login/userdetails"; if (isCaptchaShown()) lData.captcha = fldCaptcha.getValue(); $.ajax( { url: lUrl, type: "POST", data: JSON.stringify(lData), success: function( pObj, pStatus, pXhr) { if (pMode != 1) { userDetail=pObj; formMode = pMode; } else { alert("OTP resent successfully."); } $('#divChangePassword').addClass('hidden'); setDisplayMode(((userDetail.secretText||userDetail.secretImage)&&(formMode==0)) ?DISPLAYMODE_VERIFICATION:DISPLAYMODE_PASSWORD); }, error: function( pXhr, pStatus, pError ) { if (isCaptchaShown() || userDetail.captcha) setCaptcha('Y'); errorHandler(pXhr,pStatus,pError) }, }); } function appendAnswers(pData) { pData.securityAnswers=[]; var lValid = true; if (userDetail.questions != null) { $.each(userDetail.questions,function(pIndex,pValue){ var lField$ = $('#securityAnswer'+pIndex); var lAnswer = lField$.val(); if (lAnswer == '') { alert("Please enter answer to the question.",null, function(){lField$.focus()}); lValid = false; return false; } pData.securityAnswers.push(lAnswer); }) } return lValid; } function setChangePassword() { $('#divQuestion').addClass('hidden'); $('#divChangePassword').removeClass('hidden'); fieldMandatory([fldNewPassword1, fldNewPassword2], true); $('#btnLogin').html('Change Password'); fldNewPassword1.focus(); //setCaptcha('N'); } function setCaptcha(pForce) { var lImgPath = "captcha/"+pForce+"?"+((new Date()).getTime()); var lImg$ = $("#imgCaptcha"); lImg$.one('error',function(){ //lImg$.unbind('error'); lImg$.attr('src',''); alert("Unable to load captcha. Please contact system administrator."); }); lImg$.attr('src',lImgPath); fldCaptcha.setValue(null); fieldMandatory(fldCaptcha, true); $('#divCaptcha').removeClass('hidden'); } function hideCaptcha() { fldCaptcha.setValue(null); fieldMandatory(fldCaptcha, false); $('#divCaptcha').addClass('hidden'); } function isCaptchaShown() { return !$('#divCaptcha').hasClass('hidden'); } function encodePassword(pPassword, pUserDetail) { if (pUserDetail && pUserDetail.passHash) { if (pUserDetail.salt) return hashString(hashString(pPassword,pUserDetail.passHash)+pUserDetail.salt, pUserDetail.passHash); else return hashString(pPassword, pUserDetail.passHash); } else if (pUserDetail && pUserDetail.rsa) { var lPassword = pPassword; if (pUserDetail.salt) lPassword += pUserDetail.salt; return encryptString(lPassword, pUserDetail.rsaPubMod, pUserDetail.rsaPubExp); } else return pPassword; } function setPassword(pValue) { var lDummyPwd = null; if (tempPwd) { for (var i=0; i