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 = $(`