Код: Выделить всё
$('#loginForm').on('submit', function (e) {
e.preventDefault();
const username = $('#username').val();
const password = $('#password').val();
$.ajax({
url: '/login',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({ username, password }),
success: function (result) {
if (result.success) {
localStorage.setItem('token', result.token);
// detect admin from explicit server flag or token payload
let isAdmin = false;
if (result.isAdmin) isAdmin = true;
if (result.token) {
try {
const payload = JSON.parse(atob(result.token.split('.')[1]));
if (payload.role === 'admin' || payload.isAdmin) isAdmin = true;
} catch (e) {}
}
if (isAdmin) {
// redirect to admin page
window.location.href = '/admin';
return;
}
// normal user page
updateUI(true);
showStatus('Logged in successfully!');
loadQuota();
} else {
showError(result.message || 'Invalid Credentials');
}
}, error: function (xhr, status, error) {
console.log('Login error:', { xhr, status, error }); // Debug
const msg = xhr.responseJSON?.message || 'Login failed: ' + error || 'Unknown error';
$('#error').text(msg).addClass('visible');
$('#status').text('').removeClass('visible');
setTimeout(function () {
$('#error').fadeOut(500, function () {
$(this).removeClass('visible').css('display', 'none');
});
}, 3000);
}
});
});
Подробнее здесь: https://stackoverflow.com/questions/798 ... ith-jquery