From f28dc8daa84e4c888a770b06e78b3a13a981d441 Mon Sep 17 00:00:00 2001 From: Ricardo Carneiro Date: Fri, 12 Sep 2025 15:16:12 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20adicionar=20log=20no=20status=20das=20p?= =?UTF-8?q?aginas=20para=20entender=20o=20que=20est=C3=A1=20acontecendo.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BCards.Web/Controllers/AdminController.cs | 8 ++++++-- .../Controllers/UserPageController.cs | 5 ++++- .../Middleware/PageStatusMiddleware.cs | 20 ++++++++++--------- src/BCards.Web/Views/Admin/Dashboard.cshtml | 1 - 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/BCards.Web/Controllers/AdminController.cs b/src/BCards.Web/Controllers/AdminController.cs index ba7179f..2f79a99 100644 --- a/src/BCards.Web/Controllers/AdminController.cs +++ b/src/BCards.Web/Controllers/AdminController.cs @@ -995,10 +995,14 @@ public class AdminController : Controller if (user == null) return Json(new { success = false, message = "Usuário não autenticado" }); + _logger.LogInformation($"Generating preview token for page {id} by user {user.Id}"); + var pageItem = await _userPageService.GetPageByIdAsync(id); if (pageItem == null || pageItem.UserId != user.Id) return Json(new { success = false, message = "Página não encontrada" }); + _logger.LogInformation($"Generating preview token for page {id} preview token {pageItem.PreviewToken} by user {user.Id}"); + // Verificar se página pode ter preview if (pageItem.Status != ViewModels.PageStatus.Creating && pageItem.Status != ViewModels.PageStatus.PendingModeration && @@ -1011,8 +1015,8 @@ public class AdminController : Controller { // Gerar novo token com 4 horas de validade var newToken = await _moderationService.GeneratePreviewTokenAsync(pageItem.Id); - - _logger.LogInformation($"Preview token generated for page {pageItem.Id} by user {user.Id}"); + + _logger.LogInformation($"Generating preview token for page {id} preview token {pageItem.PreviewToken} by user {user.Id}"); return Json(new { success = true, diff --git a/src/BCards.Web/Controllers/UserPageController.cs b/src/BCards.Web/Controllers/UserPageController.cs index daeb0aa..9c28d3b 100644 --- a/src/BCards.Web/Controllers/UserPageController.cs +++ b/src/BCards.Web/Controllers/UserPageController.cs @@ -44,7 +44,10 @@ public class UserPageController : Controller // Check if it's a preview request var isPreview = HttpContext.Items.ContainsKey("IsPreview") && (bool)HttpContext.Items["IsPreview"]; var previewToken = Request.Query["preview"].FirstOrDefault(); - + + _logger.LogDebug("Request - Page: {Slug}, Status: {Status}, IsPreview: {IsPreview}, PreviewToken: {PreviewToken}, UserId: {UserId}", + userPage.Slug, userPage.Status, isPreview, !string.IsNullOrEmpty(previewToken), userPage.UserId); + if (!string.IsNullOrEmpty(previewToken)) { // Handle preview request diff --git a/src/BCards.Web/Middleware/PageStatusMiddleware.cs b/src/BCards.Web/Middleware/PageStatusMiddleware.cs index 381b16d..a9ea8c5 100644 --- a/src/BCards.Web/Middleware/PageStatusMiddleware.cs +++ b/src/BCards.Web/Middleware/PageStatusMiddleware.cs @@ -31,9 +31,11 @@ public class PageStatusMiddleware if (!string.IsNullOrEmpty(category) && !string.IsNullOrEmpty(slug)) { var page = await userPageService.GetPageAsync(category, slug); - + if (page != null) { + var userId = page.UserId; + switch (page.Status) { case PageStatus.Expired: @@ -60,12 +62,12 @@ public class PageStatusMiddleware case PageStatus.Rejected: // Páginas em desenvolvimento/moderação requerem preview token var previewToken = context.Request.Query["preview"].FirstOrDefault(); - - _logger.LogInformation($"Page {category}/{slug} (Status: {page.Status}) - Token provided: {!string.IsNullOrEmpty(previewToken)}, Page token: {!string.IsNullOrEmpty(page.PreviewToken)}, Expiry: {page.PreviewTokenExpiry}"); + + _logger.LogInformation($"User id: {userId} - Page {category}/{slug} (Status: {page.Status}) - Token provided: {!string.IsNullOrEmpty(previewToken)}, Page token: {!string.IsNullOrEmpty(page.PreviewToken)}, Expiry: {page.PreviewTokenExpiry}"); if (string.IsNullOrEmpty(previewToken)) { - _logger.LogInformation($"Page {category}/{slug} requires preview token - no token provided"); + _logger.LogInformation($"User id: {userId} - Page {category}/{slug} requires preview token - no token provided"); context.Response.StatusCode = 404; await context.Response.WriteAsync("Página em desenvolvimento. Acesso restrito."); return; @@ -73,7 +75,7 @@ public class PageStatusMiddleware if (string.IsNullOrEmpty(page.PreviewToken)) { - _logger.LogWarning($"Page {category}/{slug} has no preview token set in database"); + _logger.LogWarning($"User id: {userId} - Page {category}/{slug} has no preview token set in database"); context.Response.StatusCode = 404; await context.Response.WriteAsync("Página em desenvolvimento. Acesso restrito."); return; @@ -81,7 +83,7 @@ public class PageStatusMiddleware if (previewToken != page.PreviewToken) { - _logger.LogInformation($"Page {category}/{slug} preview token mismatch - provided: {previewToken}, expected: {page.PreviewToken}"); + _logger.LogInformation($"User id: {userId} - Page {category}/{slug} preview token mismatch - provided: {previewToken}, expected: {page.PreviewToken}"); context.Response.StatusCode = 404; await context.Response.WriteAsync("Página em desenvolvimento. Acesso restrito."); return; @@ -89,13 +91,13 @@ public class PageStatusMiddleware if (page.PreviewTokenExpiry < DateTime.UtcNow) { - _logger.LogInformation($"Page {category}/{slug} preview token expired at {page.PreviewTokenExpiry} (now: {DateTime.UtcNow})"); + _logger.LogInformation($"User id: {userId} - Page {category}/{slug} preview token expired at {page.PreviewTokenExpiry} (now: {DateTime.UtcNow})"); context.Response.StatusCode = 404; await context.Response.WriteAsync("Token de preview expirado. Gere um novo token no painel."); return; } - _logger.LogInformation($"Page {category}/{slug} preview token validated successfully"); + _logger.LogInformation($"User id: {userId} - Page {category}/{slug} preview token validated successfully"); break; case PageStatus.Active: @@ -104,7 +106,7 @@ public class PageStatusMiddleware default: // Status desconhecido - tratar como inativo - _logger.LogWarning($"Unknown page status: {page.Status} for page {category}/{slug}"); + _logger.LogWarning($"User id: {userId} - Unknown page status: {page.Status} for page {category}/{slug}"); context.Response.StatusCode = 404; await context.Response.WriteAsync("Página temporariamente indisponível."); return; diff --git a/src/BCards.Web/Views/Admin/Dashboard.cshtml b/src/BCards.Web/Views/Admin/Dashboard.cshtml index 278a3c3..4a8f367 100644 --- a/src/BCards.Web/Views/Admin/Dashboard.cshtml +++ b/src/BCards.Web/Views/Admin/Dashboard.cshtml @@ -432,7 +432,6 @@ return container; } - // 🔥 OTIMIZAÇÃO: Sistema de KeepAlive para evitar timeout de sessão (function() { let inactivityTimer; const inactivityTimeout = 5 * 60 * 1000; // 5 minutos