| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- $(() => {
- document.getElementById("menu-login").addEventListener("click", e => {
- e.preventDefault();
- document.body.classList.add("login-visible")
- document.body.classList.add("overlay-visible");
- document.Title.pushTitle("Login");
- });
- function closeLoginPopin() {
- if (!document.body.classList.contains("login-visible"))
- return;
- document.Title.pop();
- document.body.classList.remove("login-visible");
- document.body.classList.remove("overlay-visible");
- let inputFields = document.querySelectorAll(".login-wrapper .input-group input");
- for (let i =0; i < inputFields.length; ++i) {
- if (inputFields[i].type !== 'submit')
- inputFields[i].value = "";
- }
- document.querySelector("#login-userpass + .error").classList.add("hidden");
- }
- document.onClosePopinRequested(() => {
- closeLoginPopin();
- });
- document.querySelector(".login-wrapper .modal-footer button").addEventListener("click", () => closeLoginPopin());
- let loginUserPass = document.getElementById("login-userpass");
- let loginCode = document.getElementById("login-code");
- loginUserPass.parentElement.addEventListener("submit", e => {
- e.preventDefault();
- let user = loginUserPass.querySelector("input[type='text']").value;
- let pass = loginUserPass.querySelector("input[type='password']").value;
- LoadingTasks.push(async () => {
- try {
- await AccessManager.LoginUserPass(user, pass);
- }
- catch (err) {
- let errDiv = loginUserPass.parentElement.querySelector(".error");
- errDiv.textContent = err;
- errDiv.classList.remove("hidden");
- return;
- }
- await MediaStorage.Instance.rebuildMetaList();
- closeLoginPopin();
- });
- });
- loginCode.querySelector("button").addEventListener("click", () => {
- let code = loginCode.querySelector("input").value;
- if (!code)
- return;
- LoadingTasks.push(async () => {
- await AccessManager.LinkLogin(new Set([code]));
- await MediaStorage.Instance.rebuildMetaList();
- closeLoginPopin();
- });
- });
- async function logout(accessId) {
- await AccessManager.Logout(accessId);
- await MediaStorage.Instance.rebuildMetaList();
- closeLoginPopin();
- }
- window.ReloadAccessList = function(accessList) {
- if (accessList.isAdmin) {
- document.getElementById("menu-dbAdmin-container").classList.remove("hidden");
- document.getElementById("pch-navbar-share").classList.remove("hidden");
- document.getElementById("pch-navbar-autotags").classList.remove("hidden");
- } else {
- document.getElementById("menu-dbAdmin-container").classList.add("hidden");
- document.getElementById("pch-navbar-share").classList.add("hidden");
- document.getElementById("pch-navbar-autotags").classList.add("hidden");
- }
- let getIconForType = type => {
- if (!!type.ldapDn) return "bi-database";
- if (!!type.linkId) return "bi-link-45deg";
- if (!!type.userName) return "bi-person";
- return "bi-question-octagon";
- }
- let rootNode = document.getElementById("accessListMenu");
- let items = rootNode.querySelectorAll("li.accessItem");
- for (let i =0; i < items.length; ++i)
- items[i].remove();
- delete accessList.isAdmin;
- delete accessList.isAdmin_;
- if (Object.keys(accessList||{}).length) {
- let li = document.createElement("li");
- li.classList.add("accessItem");
- li.classList.add("divider");
- let hr = document.createElement("hr");
- hr.classList.add("dropdown-divider");
- li.appendChild(hr);
- rootNode.appendChild(li);
- }
- for (let i in accessList) {
- const accessTextValue = accessList[i].linkLabel || accessList[i].linkId || accessList[i].ldapDn;
- let li = document.createElement("li");
- li.classList.add("accessItem");
- li.classList.add("dropdown-item");
- let a = document.createElement("a");
- let typeIcon = document.createElement("span");
- typeIcon.innerHTML = " ";
- typeIcon.classList = 'type bi '+getIconForType(accessList[i]);
- let accessText = document.createElement("span");
- accessText.innerText = accessTextValue;
- let logoutIcon = document.createElement("span");
- logoutIcon.innerHTML = " ";
- logoutIcon.classList = 'logout bi bi-box-arrow-right'
- a.appendChild(typeIcon);
- a.appendChild(accessText);
- a.appendChild(logoutIcon);
- li.appendChild(a);
- rootNode.appendChild(li);
- a.addEventListener("click", async e => {
- e.preventDefault();
- if (!await window.confirm("Logout account " +accessTextValue +" ?"))
- return;
- logout(i);
- });
- }
- }
- });
|