From 82d298effe3ea0c03005e66cbd2c53371f060b55 Mon Sep 17 00:00:00 2001 From: wowlikon Date: Mon, 22 Dec 2025 22:25:51 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B2=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D0=B9=20=D0=B0=D0=B2=D1=82=D0=BE=D1=80=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library_service/static/auth.js | 40 ++++-- library_service/static/author.js | 2 +- library_service/static/book.js | 4 +- library_service/static/books.js | 2 +- library_service/static/create_author.js | 2 +- library_service/static/create_book.js | 2 +- library_service/static/create_genre.js | 2 +- library_service/static/edit_book.js | 2 +- library_service/static/edit_genre.js | 2 +- library_service/static/profile.js | 2 +- library_service/static/styles.css | 155 +++++++++++------------- library_service/static/utils.js | 63 +++++++--- library_service/templates/auth.html | 3 - 13 files changed, 154 insertions(+), 127 deletions(-) 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 = $(`