//Шаблон класса для авторизации пользователя (под проекты переделывается) class DBMSUser { constructor(){ this.divsh=null; this.id=null; this.name=''; this.surname=''; this.patronymic=''; this.temp=false; this.role=''; this.m_ls=new Array(); //Listeners called OnLogin function. this.divsh = null; //Запрашиваю данные о текущем пользователе с сервера //this.LoadData(); } applyReq(req,fn,node) { //alert(getXMLNodeSerialisation(node)); this.showShadow(false); if (fn==-1) { alert(findFirstNode(node,'#cdata-section').nodeValue); }else if(fn==7) { var nCmd=findFirstNode(node, "cmd"); if(nCmd!=null) { if(findFirstNode(nCmd,'#cdata-section').nodeValue=="1") //Logout { location.reload(); //window.location.href = '../'; }else if(findFirstNode(nCmd,'#cdata-section').nodeValue=="2") //Check if user not logged { if(findNode(node,'#cdata-section').nodeValue=="0") //if not logged { this.showLoginForm(); }else { this.name=getCdataValue(findNode(node,'name')); this.surname=getCdataValue(findNode(node,'surname')); this.patronymic=getCdataValue(findNode(node,'patronymic')); if (typeof this.onUpdateName !== 'undefined') { this.onUpdateName(this.name,this.surname,this.patronymic); } //configGUIbyAccessLevel(); //var shadow=document.getElementById("shadow"); //if(shadow.parentNode!=null) shadow.parentNode.removeChild(shadow); //Информируем слушатеелй о логине for(i=0;i\n\
\n\ \n\ \n\ Password:\n\
\n\ \n\ \n\
\n\ \n\ \n\ \n\ \n\ \n\ \n\ '; this.win.setContent(str); //Center the window and display the shadow //if(this.win.tbl.offsetHeight>this.win.div.offsetHeight) this.win.div.style.height=this.win.tbl.offsetHeight+"px"; //if(this.win.tbl.offsetWidth>this.win.div.offsetWidth) this.win.div.style.width=this.win.tbl.offsetWidth+"px"; this.win.setCenter(); this.win.shadow=true; this.win.hide(false); //Нажатие на кнопку авторизоваться var obj=null; obj=document.getElementById('TLogin_E'+this.uid); if(obj!==null) { obj.onclick=()=> { var xs='\ \ \n\ \ \ '; var request=new TRequest(this); if(request.callServer(ScriptName,xs)) { this.win.showProgressBar(); } }; } } }; //logout current user Logout() { xs=''; var request=new TRequest(this); if(request.callServer(ScriptName,xs)) { this.showShadow(); } }; showLock(visible) { if(this.divsh==null) { this.divsh = document.createElement('div'); //Shadow this.divsh.style.cssText = "display: none; position: fixed; z-index: 1000; top:0; left:0; height: 100%; width: 100%; background: rgba(0,0,0,0.3);"; document.body.append(this.divsh); } if(!visible) this.divsh.style.display='none'; else this.divsh.style.display='block'; } //Checking the session without its extension, if it is completed, we display the authorization window. checkSession() { $.ajax({ url: '../session', data: "{}", type: "POST", dataType: "json", success: (data,status) => { if(status=='success') { if(data.result=='ERROR'){ this.showLoginForm(); }else if(data.result=='OK'){ this.id=data.user_id; } this.showLock(false); }else { this.showLock(true); } }, error: (jqXHR, exception)=> { this.showLock(true); } }); setTimeout(()=>this.checkSession(), 10000); }; showShadow(visible) { if(visible) { this.divsh=document.createElement('div'); //Тень для модального окна this.divsh.style.cssText="display: block; position: fixed; z-index:9999; top:0; left:0; height: 100%; width: 100%; background: rgba(0,0,0,0.3);"; document.body.appendChild( this.divsh ); }else { deleteHTML(this.divsh); } }; //Функция запрашивает информацию о текущем пользователе с сервера LoadData() { var r = new TRequest(this); var xs=''; if(r.callServer(ScriptName,xs)) { this.showShadow(true); } }; //Check whether the already authorized (+ attempt to log in through "hash"). isLogined() { var xs=''; var request=new TRequest(this); if(request.callServer(ScriptName,xs)) { this.showShadow(true); alert(ScriptName+" = "+xs); //m_winPP.showProgressBar(); } }; addListener(l) { if(l.OnLogin==null) alert('Object does not have the function "OnLogin()"!'); this.m_ls[this.m_ls.length]=l; }; remListener(l){ for(let i=0;i\n\ \n\
\n\ \n\ \n\ \n\ \n\ '; win.setContent(str); //Центрируем окно и отображаем тень if(win.tbl.offsetHeight>win.div.offsetHeight) win.div.style.height=win.tbl.offsetHeight+"px"; if(win.tbl.offsetWidth>win.div.offsetWidth) win.div.style.width=win.tbl.offsetWidth+"px"; win.setCenter(); win.shadow=true; win.hide(false); //Click on restore button var obj=null; obj=document.getElementById(win.uid+'_restore'); if(obj!=null) { obj.onclick=function(win) { return function() { win.showProgressBar(); var em=document.getElementById(win.uid+'_email').value; if(em==''){ document.getElementById(win.uid+'_email').select(); alert(trt('Not_filled_Email_address')); win.hideProgressBar(); return; } if(! isEmail(em)){ document.getElementById(win.uid+'_email').select(); alert(trt('Please_enter_a_valid_email_address')); win.hideProgressBar(); return; } //Send AJAX reqwest to server var xml='\ \ \ \ \ '; //Anonymous object obj=new function(win) { this.processReqChange = function(xmlHttpRequest, url, xmlString) { if(typeof(xmlHttpRequest.status)=='undefined' || xmlHttpRequest.status == 200) { if(typeof(xmlHttpRequest.responseXML)=='undefined' && xmlHttpRequest.contentType.match(/\/xml/)) //For IE XDomainRequest xmlHttpRequest.responseXML=CreateXMLDOC(xmlHttpRequest.responseText); //загрузился xml документ начинаем его разбирать (по id функции в документе) let xmldoc = xmlHttpRequest.responseXML if(xmldoc==null) { alert2(trt('Alert'), trt('Wrong_XML_document') + "!\n" + xmlHttpRequest.responseText); }else { var node = xmldoc.documentElement; if ((node == null) || (node.getAttribute("fn") == null)) alert(trt('Error') + "\n " + trt("No_data") + "!\n" + xmlHttpRequest.responseText); else { //alert("Принятый браузером XML=\n"+getXMLNodeSerialisation(node)); var fn = node.getAttribute("fn"); if (fn == -1) { alert(findFirstNode(node, '#cdata-section').nodeValue); this.win.hideProgressBar(); } else if (fn == 7) { alert(findFirstNode(node, '#cdata-section').nodeValue); this.win.Close(); } } } }else { if(confirm(trt('Failed_to_get_data')+"\n URL: "+url+"\n"+xmlHttpRequest.statusText+"\nRedo the request?")) { var call=new myXMLHttpRequest(this); call.callServer(url,xmlString); } } return null; }; this.win=win; //For close after showing message. } (win); var call=new myXMLHttpRequest(obj); call.callServer(ScriptName,xml); }; }(win); } } }