diff --git a/library_service/static/auth.js b/library_service/static/auth.js index c8aac95..9bb33d0 100644 --- a/library_service/static/auth.js +++ b/library_service/static/auth.js @@ -1,6 +1,6 @@ $(() => { $("#login-tab").on("click", function () { - $("#login-tab") + $(this) .removeClass("text-gray-400 hover:text-gray-600") .addClass("text-gray-700 bg-gray-50 border-b-2 border-gray-500"); $("#register-tab") @@ -12,7 +12,7 @@ $(() => { }); $("#register-tab").on("click", function () { - $("#register-tab") + $(this) .removeClass("text-gray-400 hover:text-gray-600") .addClass("text-gray-700 bg-gray-50 border-b-2 border-gray-500"); $("#login-tab") @@ -23,6 +23,15 @@ $(() => { $("#login-form").addClass("hidden"); }); + $("body").on("click", ".toggle-password", function () { + const $btn = $(this); + const $input = $btn.siblings("input"); + + const isPassword = $input.attr("type") === "password"; + $input.attr("type", isPassword ? "text" : "password"); + $btn.find("svg").toggleClass("hidden"); + }); + $("#register-password").on("input", function () { const password = $(this).val(); let strength = 0; @@ -74,6 +83,7 @@ $(() => { const username = $("#login-username").val(); const password = $("#login-password").val(); + const rememberMe = $("#remember-me").prop("checked"); $submitBtn.prop("disabled", true).text("Вход..."); try { @@ -82,10 +92,17 @@ $(() => { formData.append("password", password); const data = await Api.postForm("/api/auth/token", formData); + const storage = rememberMe ? localStorage : sessionStorage; + + storage.setItem("access_token", data.access_token); + if (rememberMe && data.refresh_token) { + storage.setItem("refresh_token", data.refresh_token); + } + + const otherStorage = rememberMe ? sessionStorage : localStorage; + otherStorage.removeItem("access_token"); + otherStorage.removeItem("refresh_token"); - localStorage.setItem("access_token", data.access_token); - if (data.refresh_token) - localStorage.setItem("refresh_token", data.refresh_token); window.location.href = "/"; } catch (error) { Utils.showToast(error.message || "Ошибка входа", "error"); @@ -117,7 +134,11 @@ $(() => { try { await Api.post("/api/auth/register", userData); Utils.showToast("Регистрация успешна! Войдите в систему.", "success"); - setTimeout(() => window.location.reload(), 1500); + + setTimeout(() => { + $("#login-tab").trigger("click"); + $("#login-username").val(userData.username); + }, 1500); } catch (error) { let msg = error.message; if (Array.isArray(error.detail)) { @@ -128,11 +149,4 @@ $(() => { $submitBtn.prop("disabled", false).text("Зарегистрироваться"); } }); - - $("body").on("click", ".toggle-password", function () { - const $input = $(this).siblings("input"); - const type = $input.attr("type") === "password" ? "text" : "password"; - $input.attr("type", type); - $(this).find("svg").toggleClass("hidden"); - }); }); diff --git a/library_service/static/author.js b/library_service/static/author.js index f641524..157bcee 100644 --- a/library_service/static/author.js +++ b/library_service/static/author.js @@ -12,7 +12,7 @@ $(document).ready(() => { document.title = `LiB - ${author.name}`; renderAuthor(author); renderBooks(author.books); - if (window.canManage) { + if (window.canManage()) { $("#edit-author-btn") .attr("href", `/author/${author.id}/edit`) .removeClass("hidden"); diff --git a/library_service/static/book.js b/library_service/static/book.js index c28e8bf..0484086 100644 --- a/library_service/static/book.js +++ b/library_service/static/book.js @@ -57,7 +57,7 @@ $(document).ready(() => { currentBook = book; document.title = `LiB - ${book.title}`; renderBook(book); - if (window.canManage) { + if (window.canManage()) { $("#edit-book-btn") .attr("href", `/book/${book.id}/edit`) .removeClass("hidden"); @@ -123,7 +123,7 @@ $(document).ready(() => { $container.empty(); const config = getStatusConfig(book.status); - if (window.canManage) { + if (window.canManage()) { const $dropdownHTML = $(`