File: //usr/share/usermin/authentic-theme/unauthenticated/js/session-login.min.js
try{const e=document.querySelector("html"),t="data-platform";if(navigator.userAgentData&&navigator.userAgentData.platform){const n=navigator.userAgentData.platform.toLowerCase();n.includes("linux")?e.setAttribute(t,"linux"):n.includes("windows")?e.setAttribute(t,"windows"):n.includes("mac")&&e.setAttribute(t,"macos")}else if(navigator.platform){const n=navigator.platform.toLowerCase();n.includes("linux")?e.setAttribute(t,"linux"):n.includes("win")?e.setAttribute(t,"windows"):n.includes("mac")&&e.setAttribute(t,"macos")}}catch(e){console.warn("Failed to detect platform:",e)}function theme_spinner(e,t,n){const r="cspinner_container";if(e=e||(document.querySelector("button i.fa-sign-in:not(.invisible)")||document.querySelector("button i.fa-qrcode:not(.invisible)")),s='<span class="'+r+'"><span class="cspinner"><span class="cspinner-icon white small"></span></span></span>',e&&!t)e.classList.add("invisible"),e.insertAdjacentHTML("afterend",s),e.parentNode.classList.add("disabled"),e.parentNode.disabled=!0;else if(e&&t){e.classList.remove("invisible"),e.parentNode.classList.remove("disabled"),e.parentNode.disabled=!1;const t=e.parentNode.querySelector("."+r);t&&t.parentNode.removeChild(t),n&&(e.className="fa2 fa2-marker-check",e.parentNode.classList.add("disabled"))}}function theme_content_loaded(){const e="object"==typeof theme_language?theme_language:{},t=".container.session_login",n=".session_login_back.forgot",r=document.querySelector('input[name="user"]'),o=document.querySelector('input[name="pass"]'),s=function(e){if(!e)return String();if(!(e=String(e).trim())||0===e.indexOf("//")||/[\u0000-\u001F\u007F]/.test(e))return String();try{const t=new URL(e,window.location.href);if("http:"===t.protocol||"https:"===t.protocol)return t.href}catch(e){}return String()},i=function(e,t){const n=(e?"faa-bounce animated":"faa-horizontal animated").split(" ");t.classList.add(...n),setTimeout(()=>{t.classList.remove(...n)},1500)};function a(t,n,r){const o=".container.session_login";let s=document.querySelector(o+" > .alert");s&&s.remove(),s=document.createElement("div"),s.className="alert",s.innerHTML='\n <strong><i class="fa"></i> </strong><br>\n <span></span>';const a=document.querySelector(o);a&&a.insertBefore(s,a.firstChild),s.classList.remove("alert-warning","alert-success","alert-danger");const c=s.querySelector(".fa"),l=s.querySelector("strong"),u=s.querySelector("span");"success"===t?(i(!0,s),s.classList.add("alert-success"),r||(r="check-circle"),c&&(c.className="fa fa-"+r),l&&(l.innerHTML='<i class="fa fa-'+r+'"></i> '+e.session_success),u&&(u.innerHTML=n)):(i(!1,s),s.classList.add("alert-danger"),r||(r="exclamation-circle"),c&&(c.className="fa fa-"+r),l&&(l.innerHTML='<i class="fa fa-'+r+'"></i> '+e.session_error),u&&(u.textContent=n))}document.querySelectorAll('input[type="password"]').forEach(e=>{const t=document.createElement("span");t.classList.add("input_warning_caps"),t.setAttribute("title","Caps Lock"),t.classList.add("large"),e.classList.add("use_input_warning_caps"),e.parentNode.insertBefore(t,e.nextSibling),e.addEventListener("blur",function(){this.nextSibling.classList.remove("visible")}),e.addEventListener("keydown",function(e){if("function"==typeof e.getModifierState){let t;t=20===e.keyCode?!e.getModifierState("CapsLock"):e.getModifierState("CapsLock"),t?this.nextSibling.classList.add("visible"):this.nextSibling.classList.remove("visible")}})}),function(){const n=document.querySelector('[name="twofactor"]'),s=function(n){n||(n=document);if(!n.querySelector('form[action*="password_change.cgi"]'))return!1;const r=document.querySelector(t),s=n.querySelector(t),i="string"==typeof serverRedirectUrl?serverRedirectUrl:function(){const e=location.pathname,t=e.substring(0,e.lastIndexOf("/")+1);return location.origin+t}();if(r&&s){r.innerHTML=s.innerHTML;const t=r.querySelector('form[action*="password_change.cgi"]');if(t){t.removeAttribute("onsubmit");const n=t.querySelector('input[name="old"]');if(n&&null!==o){const e=n.closest(".input-group");e&&e.remove();const r=document.createElement("input");r.type="hidden",r.name="old",r.value=o.value,t.prepend(r)}const r=t.querySelector('input[name="new1"]');r&&r.focus();const s=t.querySelector('button[type="submit"]'),c=s?s.querySelector("i"):null;t.addEventListener("submit",async function(n){n.preventDefault(),c&&theme_spinner(c);try{const e=new URLSearchParams;for(let n=0;n<t.elements.length;n++){const r=t.elements[n];r.name&&"submit"!==r.type&&"button"!==r.type&&e.append(r.name,r.value||"")}const n=await fetch(t.action,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e}),r=await n.text(),o=(new DOMParser).parseFromString(r,"text/html"),s=o.querySelector(".alert-success"),l=o.querySelector(".alert-danger, .alert-warning");s?(sessionStorage.setItem("login_message",JSON.stringify({type:"success",text:s.textContent.trim()})),location.href=i):l&&(c&&theme_spinner(c,!0),a("error",l.textContent.trim()))}catch(t){c&&theme_spinner(c,!0),a("error",e.session_unkerror)}})}}return!0},c=sessionStorage.getItem("login_message");if(c){const e=JSON.parse(c);sessionStorage.removeItem("login_message"),a(e.type,e.text)}if(n){const a=document.querySelector('[data-submit="2fa"]'),c=a.querySelector("i"),l=a.getAttribute("data-prefix"),u=location.origin+(l||""),d=document.querySelector('[name="save"]'),f=n.closest("form"),m=f.getAttribute("action")||url.toString(),p=function(s){s.preventDefault(),theme_spinner(c);const a=new URLSearchParams;a.append("user",r.value),a.append("pass",o.value),d&&a.append("save",d.checked?1:0),a.append("twofactor",n.value),fetch(m,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:a}).then(t=>{if(t.url&&(h=t.url),!t.ok)throw new Error(e.session_neterror);return t.text()}).then(e=>{const n=(new DOMParser).parseFromString(e,"text/html");if(n.querySelector(t)){theme_spinner(c,!0);const e=document.querySelector(t);e.querySelectorAll(".alert").forEach(e=>e.remove());const r=n.querySelector(".alert");return void(r&&(e.insertBefore(r.cloneNode(!0),e.firstChild),i(!1,e.querySelector(".alert"))))}location.href=h}).catch(e=>{location.href=h})};let h=u;n&&n.addEventListener("keydown",function(e){if("Enter"===e.key)return e.preventDefault(),a&&a.click(),!1}),f.addEventListener("submit",async function(i){i.preventDefault();try{const i=new URLSearchParams;i.append("user",r.value),i.append("pass",o.value),d&&i.append("save",d.checked?1:0),i.append("twofprobe",1);const c=await fetch(m,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i});if(c.url&&(h=c.url),401===c.status){const e=document.querySelector(".session_login_flipper");e.classList.toggle("flipped"),e.classList.toggle("twofactor");const t=document.querySelector(".alert");return t&&t.remove(),setTimeout(()=>{n.focus()},600),a.removeEventListener("click",p),void a.addEventListener("click",p)}if(!c.ok){const t=await c.text();throw new Error(e.session_neterror,{cause:{status:c.status,statusText:c.statusText,url:c.url,body:t,headers:Object.fromEntries(c.headers.entries())}})}const l=await c.text(),u=(new DOMParser).parseFromString(l,"text/html");if(s(u))return;const f=document.querySelector(t),g=u.querySelector(t);if(f&&g)return f.innerHTML=g.innerHTML,theme_content_loaded(),void setTimeout(()=>{o.focus()});location.href=h}catch(t){console.error(e.session_unkerror,{message:t.message,stack:t.stack}),location.href=h}})}else if(s());}(),function(){const i=document.querySelector(".session_login_flipper");if(null===i)return;const c=document.querySelector(n+" .form-signin-group > .btn-success"),l=i.querySelectorAll("[data-flipper]"),u=document.querySelector(n+' input[name="forgot"]'),d=document.querySelector(n+" [data-unlocker]"),f=document.querySelector(n+' input[name="newpass"]'),m=document.querySelector(n+' input[name="newpass2"]'),p=s(u&&u.dataset&&u.dataset.return),h=s(f&&f.dataset&&f.dataset.return),g=t,y=function(){const e=i,t=e.classList.contains("forgot");!t&&e.classList.toggle("flipping",!0),!t&&e.classList.toggle("forgot",!0),setTimeout(()=>{t&&e.classList.toggle("flipping",!1),t&&e.classList.toggle("forgot",!1)},600),e.classList.toggle("flipped");const n=e.classList.contains("flipped")?document.querySelector('input[name="forgot"]'):r;n&&setTimeout(()=>{e.classList.contains("flipped")||!n.value.trim()?n.focus():o&&o.focus()},600)},v=function(e){let t=e.querySelector(".panel-body > [data-fatal-error-text]");return t&&t.textContent.trim()||(t=e.querySelector(".panel-body > .err-content")),t};if(p&&setTimeout(()=>{y()},60),l&&l.forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.dataset.webmin;if(t){const e=(location.origin+location.pathname.replace(/\/[^\/]*\.[^\/]*$/,"")).replace(/\/$/,""),n=encodeURIComponent(e);return void(location.href=`${t}?return=${n}`)}if(p||h)return e.stopImmediatePropagation(),void(location.href=p||h);y()})}),u&&u.addEventListener("keydown",function(e){if("Enter"===e.key)return e.preventDefault(),c&&c.click(),!1}),f&&(f.addEventListener("keydown",function(e){if("Enter"===e.key)return e.preventDefault(),m&&m.focus(),!1}),m&&m.addEventListener("keydown",function(e){if("Enter"===e.key)return e.preventDefault(),d&&d.click(),!1})),c&&c.addEventListener("click",function(t){if(t.preventDefault(),this.classList.contains("disabled"))return;if(!u||!u.value.trim())return void a("error",e.session_cannot);const n=u.value.trim(),r=this.querySelector("i");theme_spinner(r);let o=`forgot=${encodeURIComponent(n)}`;p&&(o+=`&return=${encodeURIComponent(p)}`),fetch("forgot_send.cgi",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","X-Requested-With":"XMLHttpRequest"},body:o}).then(t=>{if(t.url&&(serverRedirectUrl=t.url),!t.ok)throw new Error(e.session_neterror);return t.text()}).then(t=>{const n=(new DOMParser).parseFromString(t,"text/html"),o=n.querySelector(".panel-body > center");if(o&&o.textContent.trim())return theme_spinner(r,!0,!0),void a("success",o.innerHTML.trim());theme_spinner(r,!0);const s=v(n);if(s&&s.textContent.trim())return a("error",s.textContent.trim()),void u.focus();a("error",e.session_unkerror)}).catch(t=>{theme_spinner(r,!0),console.warn("Request failed:",t),a("error",e.session_conerror)})}),d){const t=document.querySelector(n),s=function(){t.remove(),function(){const e=new URL(window.location.href);e.search="",history.replaceState({},document.title,e)}();const e=document.querySelector(g+" .alert");e&&e.remove(),location.reload()};l.length>1&&l[1].addEventListener("click",function(e){e.preventDefault(),s()}),f&&setTimeout(()=>{f.focus()},0),d.addEventListener("click",function(n){if(n.preventDefault(),this.classList.contains("disabled"))return;if(!f||!f.value.length)return void a("error",e.session_resetepassreq);if(!m||!m.value.length)return void a("error",e.session_pwdconf);const s=f.value,i=m.value;if(s!==i)return void a("error",e.session_pwdmatch);const c=t?t.getAttribute("data-forgot"):null,u=t?t.getAttribute("data-username"):null;if(!c)return void a("error",e.session_noid);const d=this.querySelector("i");theme_spinner(d),fetch("forgot.cgi",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","X-Requested-With":"XMLHttpRequest"},body:`id=${encodeURIComponent(c)}&newpass=${encodeURIComponent(s)}&newpass2=${encodeURIComponent(i)}`}).then(t=>{if(t.url&&(serverRedirectUrl=t.url),!t.ok)throw new Error(e.session_neterror);return t.text()}).then(n=>{const s=(new DOMParser).parseFromString(n,"text/html"),i=v(s);if(i&&i.textContent.trim())return theme_spinner(d,!0),void a("error",i.textContent.trim());if(h){const e=new URL(h),n=t.getAttribute("data-username");return e.searchParams.set("returned-username",n||String()),void(location.href=e.href)}theme_spinner(d,!0,!0),l[0].click(),a("success",e.session_pwdsucc,"unlock");const c=new URL(window.location.href);c.search="",history.replaceState({},document.title,c),u&&(r.value=u,o&&o.focus())}).catch(t=>{theme_spinner(d,!0),console.warn("Request failed:",t),a("error",e.session_conerror)})})}}(),function(){const e=document.querySelectorAll(t+" > .alert");e&&e.forEach(e=>{setTimeout(()=>{e.classList.remove("animated")},1500)})}(),o&&o.hasAttribute("autofocus")&&setTimeout(()=>{o.focus()},0),r&&r.hasAttribute("autofocus")&&setTimeout(()=>{r.focus()},0)}document.addEventListener("DOMContentLoaded",theme_content_loaded);