auth
Deploy / Deploy (push) Successful in 44s Details

This commit is contained in:
JotaChina 2026-03-26 20:24:34 -03:00
parent 42a902afc6
commit 7250ff1459
1 changed files with 24 additions and 29 deletions

View File

@ -292,46 +292,42 @@ permalink: /samples/
<script>
document.addEventListener('DOMContentLoaded', async () => {
// === VERIFICAÇÃO DE LOGIN (CORRIGIDA) ===
// === VERIFICAÇÃO DE LOGIN ===
const btnUpload = document.getElementById('btn-open-upload');
const btnLogin = document.getElementById('btn-login-trigger');
// Verifica se os elementos realmente existem na página antes de tentar mexer neles
if (btnUpload && btnLogin) {
try {
console.log("Verificando autenticação...");
// Verifica auth via Proxy Apache
const res = await fetch('/api/check_auth');
const authData = await res.json();
// 🔥 CORREÇÃO 1: Se o servidor der erro 503/404, paramos aqui antes do JSON quebrar
if (!res.ok) {
throw new Error(`Servidor de auth indisponível (Status: ${res.status})`);
}
const authData = await res.json();
console.log("Status do usuário:", authData);
if (authData.logged_in) {
// USUÁRIO LOGADO:
// 1. Remove is-hidden do Upload (para aparecer)
btnUpload.classList.remove('is-hidden');
// 2. Adiciona is-hidden no Login (para sumir)
btnLogin.classList.add('is-hidden');
} else {
// VISITANTE:
// 1. Garante que Upload está escondido
btnUpload.classList.add('is-hidden');
// 2. Garante que Login aparece
btnLogin.classList.remove('is-hidden');
}
} catch (e) {
console.error("Erro ao verificar auth:", e);
// Em caso de erro, assume visitante por segurança
console.warn("Autenticação falhou ou visitante assumido:", e.message);
// Em caso de erro (como o 503), assume visitante por segurança
btnUpload.classList.add('is-hidden');
btnLogin.classList.remove('is-hidden');
}
} else {
console.error("Erro: Não encontrei os botões de Upload ou Login no HTML.");
}
// ===================================
// === DADOS E CONFIGURAÇÃO ===
const manifestData = {{ site.data['samples-manifest'] | jsonify }};
// 🔥 CORREÇÃO 2: Fallback para um objeto vazio "{}" caso o Jekyll não encontre o ficheiro json
const rawManifest = {{ site.data['samples-manifest'] | jsonify }};
const manifestData = rawManifest || {};
const BASE_ASSETS_URL = "{{ '/src_mmpSearch/samples/' | relative_url }}";
// === ELEMENTOS DO DOM ===
@ -354,13 +350,12 @@ document.addEventListener('DOMContentLoaded', async () => {
return filename.replace(/\.[^/.]+$/, "");
}
// === LÓGICA DO NAVEGADOR DE ARQUIVOS ===
function getFolderByPath(pathArray) {
let folder = manifestData;
for (const dir of pathArray) {
if (folder[dir]) folder = folder[dir];
if (folder && folder[dir]) folder = folder[dir];
}
return folder;
return folder || {};
}
function isAudioFile(filename) {
@ -397,10 +392,16 @@ document.addEventListener('DOMContentLoaded', async () => {
const folders = [];
const files = [];
// 🔥 CORREÇÃO 3: Proteção contra objetos inválidos no render
if (!currentFolderObj || typeof currentFolderObj !== 'object') {
browserView.innerHTML = `<div class="has-text-centered has-text-danger p-5"><strong>Erro:</strong> Manifesto de samples não encontrado ou vazio. Verifique o _data/samples-manifest.json</div>`;
return;
}
Object.keys(currentFolderObj).forEach(key => {
if (key === '_isFile') return;
const item = currentFolderObj[key];
if (item._isFile) files.push(key);
if (item && item._isFile) files.push(key);
else folders.push(key);
});
@ -455,6 +456,8 @@ document.addEventListener('DOMContentLoaded', async () => {
audioPlayer.play().catch(e => console.log('Erro ao tocar:', e));
}
// === O restante do seu código JavaScript original pode continuar a partir daqui sem alterações (Filtros, Modais, Lógica de Gravação) ===
// === LÓGICA DE FILTRAGEM (ROBUSTA) ===
function filterBySample(sampleName) {
if (!sampleName) {
@ -556,7 +559,7 @@ document.addEventListener('DOMContentLoaded', async () => {
// === LÓGICA DE UPLOAD & GRAVAÇÃO ===
// ==========================================================
const uploadModal = document.getElementById('upload-sample-modal');
const btnOpenUpload = document.getElementById('btn-open-upload'); // Botão agora pode estar hidden
const btnOpenUpload = document.getElementById('btn-open-upload');
const btnCloseUpload = document.getElementById('close-upload-modal');
const btnCancelUpload = document.getElementById('cancel-upload');
const fileInput = document.getElementById('file-input-real');
@ -584,7 +587,6 @@ document.addEventListener('DOMContentLoaded', async () => {
let audioBlob = null;
let activeTab = 'file';
// Alternância de Abas
function switchTab(mode) {
activeTab = mode;
if(mode === 'file') {
@ -608,7 +610,6 @@ document.addEventListener('DOMContentLoaded', async () => {
// Lógica do Microfone
recordBtn.onclick = async () => {
if (!isRecording) {
// INICIAR GRAVAÇÃO
try {
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
mediaRecorder = new MediaRecorder(stream);
@ -617,7 +618,6 @@ document.addEventListener('DOMContentLoaded', async () => {
mediaRecorder.start();
isRecording = true;
// UI Updates
recordBtn.classList.add('is-recording');
recordIndicator.classList.remove('is-hidden');
recordPreview.classList.add('is-hidden');
@ -644,7 +644,6 @@ document.addEventListener('DOMContentLoaded', async () => {
console.error(err);
}
} else {
// PARAR GRAVAÇÃO
stopRecordingLogic();
}
};
@ -660,7 +659,6 @@ document.addEventListener('DOMContentLoaded', async () => {
uploadStatus.className = "help has-text-success";
}
// Modal Open/Close
function toggleUploadModal(show) {
if(show) {
uploadModal.classList.add('is-active');
@ -700,7 +698,6 @@ document.addEventListener('DOMContentLoaded', async () => {
}
formData.append('sample_file', fileInput.files[0]);
} else {
// ABA MICROFONE
if (!audioBlob) {
alert("Grave algo antes de enviar.");
return;
@ -713,10 +710,8 @@ document.addEventListener('DOMContentLoaded', async () => {
formData.append('sample_file', audioBlob, filename);
}
// URL CORRIGIDA: Usando Proxy reverso (sem porta 33002)
const API_URL = '/api/upload/sample';
// UI Loading
confirmUploadBtn.classList.add('is-loading');
uploadProgress.classList.remove('is-hidden');
uploadStatus.classList.remove('is-hidden');