fix: token
All checks were successful
BCards Deployment Pipeline / Run Tests (push) Successful in 4s
BCards Deployment Pipeline / PR Validation (push) Has been skipped
BCards Deployment Pipeline / Build and Push Image (push) Successful in 15m52s
BCards Deployment Pipeline / Deploy to Production (ARM - OCI) (push) Successful in 2m20s
BCards Deployment Pipeline / Deploy to Staging (x86 - Local) (push) Has been skipped
BCards Deployment Pipeline / Cleanup Old Resources (push) Has been skipped
BCards Deployment Pipeline / Deployment Summary (push) Successful in 0s
All checks were successful
BCards Deployment Pipeline / Run Tests (push) Successful in 4s
BCards Deployment Pipeline / PR Validation (push) Has been skipped
BCards Deployment Pipeline / Build and Push Image (push) Successful in 15m52s
BCards Deployment Pipeline / Deploy to Production (ARM - OCI) (push) Successful in 2m20s
BCards Deployment Pipeline / Deploy to Staging (x86 - Local) (push) Has been skipped
BCards Deployment Pipeline / Cleanup Old Resources (push) Has been skipped
BCards Deployment Pipeline / Deployment Summary (push) Successful in 0s
This commit is contained in:
parent
04f406f6bc
commit
f98dac9178
@ -313,12 +313,7 @@ public class AdminController : Controller
|
||||
await _userPageService.CreatePageAsync(userPage);
|
||||
_logger.LogInformation("Page created successfully!");
|
||||
|
||||
// Generate preview token for development
|
||||
var previewToken = await _moderationService.GeneratePreviewTokenAsync(userPage.Id);
|
||||
var previewUrl = $"{Request.Scheme}://{Request.Host}/page/{userPage.Category}/{userPage.Slug}?preview={previewToken}";
|
||||
userPage.PreviewToken = previewToken;
|
||||
userPage.PreviewTokenExpiry = DateTime.UtcNow.AddHours(4);
|
||||
await _userPageService.UpdatePageAsync(userPage);
|
||||
// Token será gerado apenas quando usuário clicar "Testar Página"
|
||||
|
||||
TempData["Success"] = "Página criada com sucesso! Use o botão 'Enviar para Moderação' quando estiver pronta.";
|
||||
}
|
||||
@ -371,9 +366,7 @@ public class AdminController : Controller
|
||||
|
||||
await _userPageService.UpdatePageAsync(existingPage);
|
||||
|
||||
// Generate new preview token
|
||||
var previewToken = await _moderationService.GeneratePreviewTokenAsync(existingPage.Id);
|
||||
var previewUrl = $"{Request.Scheme}://{Request.Host}/page/{existingPage.Category}/{existingPage.Slug}?preview={previewToken}";
|
||||
// Token será gerado apenas quando usuário clicar "Testar Página"
|
||||
|
||||
// Send email to user
|
||||
await _emailService.SendModerationStatusAsync(
|
||||
@ -382,7 +375,7 @@ public class AdminController : Controller
|
||||
existingPage.DisplayName,
|
||||
"pending",
|
||||
null,
|
||||
previewUrl);
|
||||
null); // previewUrl não é mais necessário - token será gerado no clique
|
||||
|
||||
TempData["Success"] = "Página atualizada! Teste e envie para moderação.";
|
||||
}
|
||||
@ -1023,7 +1016,7 @@ public class AdminController : Controller
|
||||
success = true,
|
||||
previewToken = newToken,
|
||||
message = "Preview gerado com sucesso!",
|
||||
expiresAt = DateTime.UtcNow.AddHours(4).ToString("yyyy-MM-dd HH:mm:ss")
|
||||
expiresAt = DateTime.UtcNow.AddMinutes(5).ToString("yyyy-MM-dd HH:mm:ss")
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@ -374,52 +374,6 @@
|
||||
}
|
||||
});
|
||||
|
||||
// Sistema de auto-refresh para tokens de preview
|
||||
let refreshInterval;
|
||||
let activePreviewPages = new Map(); // pageId -> {category, slug, windowRef}
|
||||
|
||||
// Iniciar auto-refresh a cada 4 minutos
|
||||
function startAutoRefresh() {
|
||||
if (refreshInterval) clearInterval(refreshInterval);
|
||||
refreshInterval = setInterval(async () => {
|
||||
if (activePreviewPages.size > 0) {
|
||||
console.log(`Auto-refreshing ${activePreviewPages.size} active preview tokens...`);
|
||||
for (const [pageId, pageData] of activePreviewPages) {
|
||||
if (!pageData.windowRef.closed) {
|
||||
await refreshPageToken(pageId, pageData);
|
||||
} else {
|
||||
// Aba fechada, remover do tracking
|
||||
activePreviewPages.delete(pageId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 4 * 60 * 1000); // 4 minutos
|
||||
}
|
||||
|
||||
async function refreshPageToken(pageId, pageData) {
|
||||
try {
|
||||
// Usar o endpoint específico para refresh ao invés de generate
|
||||
const response = await fetch(`/Admin/RefreshPreviewToken/${pageId}`, {
|
||||
method: 'POST',
|
||||
headers: { 'RequestVerificationToken': document.querySelector('input[name="__RequestVerificationToken"]').value }
|
||||
});
|
||||
const result = await response.json();
|
||||
if (result.success) {
|
||||
// Atualizar URL da aba existente
|
||||
const newUrl = `${window.location.origin}/page/${pageData.category}/${pageData.slug}?preview=${result.previewToken}`;
|
||||
pageData.windowRef.location.href = newUrl;
|
||||
console.log(`Token refreshed for page ${pageId}: ${result.previewToken}`);
|
||||
} else {
|
||||
console.warn(`Failed to refresh token for page ${pageId}: ${result.message}`);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`Failed to refresh token for page ${pageId}:`, error);
|
||||
}
|
||||
}
|
||||
|
||||
// Iniciar auto-refresh quando a página carrega
|
||||
startAutoRefresh();
|
||||
|
||||
// Funções existentes (submitForModeration, openPreview, etc.)
|
||||
async function openPreview(pageId) {
|
||||
const button = event.target.closest('button');
|
||||
@ -437,20 +391,11 @@
|
||||
// Delay de 500ms para garantir commit no MongoDB
|
||||
await new Promise(resolve => setTimeout(resolve, 500));
|
||||
|
||||
// Abrir nova aba e adicionar ao tracking
|
||||
const previewWindow = window.open(
|
||||
// Abrir nova aba
|
||||
window.open(
|
||||
`${window.location.origin}/page/${category}/${slug}?preview=${result.previewToken}`,
|
||||
`preview_${pageId}` // Nome único para a aba
|
||||
);
|
||||
|
||||
// Adicionar ao tracking para auto-refresh
|
||||
activePreviewPages.set(pageId, {
|
||||
category: category,
|
||||
slug: slug,
|
||||
windowRef: previewWindow
|
||||
});
|
||||
|
||||
console.log(`Page ${pageId} added to active preview tracking`);
|
||||
} else {
|
||||
showToast(result.message || 'Erro ao gerar preview', 'error');
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user