testes/js/login.js

75 lines
3.2 KiB
JavaScript

// Função para obter a URL base do servidor
async function getApiUrl() {
try {
const response = await fetch('../ambiente_python/php/config_url.php'); // Solicita a URL base do PHP
if (!response.ok) {
throw new Error('Network response was not ok');
}
const data = await response.json();
return data.apiUrl; // Retorna a URL base
} catch (error) {
console.error('Error fetching API URL:', error);
throw error;
}
}
// Adiciona um ouvinte de evento ao formulário de login para tratar o evento de submissão
document.getElementById("formLogin").addEventListener("submit", async function (event) {
event.preventDefault(); // Previne o comportamento padrão do formulário
// Obtém os elementos do DOM correspondentes ao nome de usuário, senha e mensagem de erro
const usernameElement = document.getElementById("username");
const passwordElement = document.getElementById("password");
const errorMessageElement = document.getElementById("errorMessage");
// Limpa qualquer mensagem de erro anterior e bordas de campo
errorMessageElement.innerHTML = '';
usernameElement.style.borderColor = '';
passwordElement.style.borderColor = '';
// Verifica se os elementos do nome de usuário e senha existem
if (!usernameElement || !passwordElement) {
console.error('Username or password element not found');
return;
}
// Obtém os valores inseridos pelo usuário nos campos de nome de usuário e senha
const username = usernameElement.value.trim();
const password = passwordElement.value.trim();
if (!username || !password) {
errorMessageElement.innerText = "Preencha ambos os campos.";
usernameElement.style.borderColor = 'red';
passwordElement.style.borderColor = 'red';
return;
}
try {
// Obtém a URL base do servidor
const apiUrl = await getApiUrl();
// Envia uma requisição POST para o servidor de login com os dados de usuário e senha
const response = await fetch(`${apiUrl}/login`, {
method: 'POST',
headers: {
'Content-Type': 'application/json' // Define o tipo de conteúdo como JSON
},
body: JSON.stringify({ username, password }) // Converte os dados para JSON antes de enviar
});
if (response.ok) {
const data = await response.json(); // Extrai os dados JSON da resposta
localStorage.setItem('x-access-token', data.token); // Armazena o token de autenticação no localStorage
// Redireciona o usuário para a página do ambiente do usuário
window.location.href = "../ambiente_python/Ambiente_Usuario copy.html";
} else {
errorMessageElement.innerText = "Usuário ou senha incorreto"; // Exibe mensagem de erro
usernameElement.style.borderColor = 'red'; // Marca o campo do usuário com erro
passwordElement.style.borderColor = 'red'; // Marca o campo da senha com erro
}
} catch (error) {
console.error('Error:', error); // Loga qualquer erro ocorrido
errorMessageElement.innerHTML = 'Erro ao tentar se comunicar com o servidor. Por favor, tente novamente mais tarde.';
}
});