auth: guarda server-side em rotas protegidas
- /tickets/[id], /tickets/resolved, /views, /play, /reports/*, /settings agora exigem sessão via requireAuthenticatedSession() - Complementa o middleware e evita casos não-redirecionados em DEV/SSG - Mantém /settings/templates com requireStaffSession() como já estava.
This commit is contained in:
parent
d7dd37f90f
commit
9ac584dcb6
9 changed files with 32 additions and 16 deletions
|
|
@ -2,8 +2,10 @@ import { AppShell } from "@/components/app-shell"
|
||||||
import { SiteHeader } from "@/components/site-header"
|
import { SiteHeader } from "@/components/site-header"
|
||||||
import { PlayNextTicketCard } from "@/components/tickets/play-next-ticket-card"
|
import { PlayNextTicketCard } from "@/components/tickets/play-next-ticket-card"
|
||||||
import { TicketQueueSummaryCards } from "@/components/tickets/ticket-queue-summary"
|
import { TicketQueueSummaryCards } from "@/components/tickets/ticket-queue-summary"
|
||||||
|
import { requireAuthenticatedSession } from "@/lib/auth-server"
|
||||||
|
|
||||||
export default function PlayPage() {
|
export default async function PlayPage() {
|
||||||
|
await requireAuthenticatedSession()
|
||||||
return (
|
return (
|
||||||
<AppShell
|
<AppShell
|
||||||
header={
|
header={
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
import { AppShell } from "@/components/app-shell"
|
import { AppShell } from "@/components/app-shell"
|
||||||
import { BacklogReport } from "@/components/reports/backlog-report"
|
import { BacklogReport } from "@/components/reports/backlog-report"
|
||||||
import { SiteHeader } from "@/components/site-header"
|
import { SiteHeader } from "@/components/site-header"
|
||||||
|
import { requireAuthenticatedSession } from "@/lib/auth-server"
|
||||||
|
|
||||||
export const dynamic = "force-dynamic"
|
export const dynamic = "force-dynamic"
|
||||||
|
|
||||||
export default function ReportsBacklogPage() {
|
export default async function ReportsBacklogPage() {
|
||||||
|
await requireAuthenticatedSession()
|
||||||
return (
|
return (
|
||||||
<AppShell
|
<AppShell
|
||||||
header={
|
header={
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
import { AppShell } from "@/components/app-shell"
|
import { AppShell } from "@/components/app-shell"
|
||||||
import { CsatReport } from "@/components/reports/csat-report"
|
import { CsatReport } from "@/components/reports/csat-report"
|
||||||
import { SiteHeader } from "@/components/site-header"
|
import { SiteHeader } from "@/components/site-header"
|
||||||
|
import { requireAuthenticatedSession } from "@/lib/auth-server"
|
||||||
|
|
||||||
export const dynamic = "force-dynamic"
|
export const dynamic = "force-dynamic"
|
||||||
|
|
||||||
export default function ReportsCsatPage() {
|
export default async function ReportsCsatPage() {
|
||||||
|
await requireAuthenticatedSession()
|
||||||
return (
|
return (
|
||||||
<AppShell
|
<AppShell
|
||||||
header={
|
header={
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
import { AppShell } from "@/components/app-shell"
|
import { AppShell } from "@/components/app-shell"
|
||||||
import { SiteHeader } from "@/components/site-header"
|
import { SiteHeader } from "@/components/site-header"
|
||||||
import { HoursReport } from "@/components/reports/hours-report"
|
import { HoursReport } from "@/components/reports/hours-report"
|
||||||
|
import { requireAuthenticatedSession } from "@/lib/auth-server"
|
||||||
|
|
||||||
export const dynamic = "force-dynamic"
|
export const dynamic = "force-dynamic"
|
||||||
|
|
||||||
export default function ReportsHoursPage() {
|
export default async function ReportsHoursPage() {
|
||||||
|
await requireAuthenticatedSession()
|
||||||
return (
|
return (
|
||||||
<AppShell
|
<AppShell
|
||||||
header={
|
header={
|
||||||
|
|
@ -20,4 +22,3 @@ export default function ReportsHoursPage() {
|
||||||
</AppShell>
|
</AppShell>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
import { AppShell } from "@/components/app-shell"
|
import { AppShell } from "@/components/app-shell"
|
||||||
import { SlaReport } from "@/components/reports/sla-report"
|
import { SlaReport } from "@/components/reports/sla-report"
|
||||||
import { SiteHeader } from "@/components/site-header"
|
import { SiteHeader } from "@/components/site-header"
|
||||||
|
import { requireAuthenticatedSession } from "@/lib/auth-server"
|
||||||
|
|
||||||
export const dynamic = "force-dynamic"
|
export const dynamic = "force-dynamic"
|
||||||
|
|
||||||
export default function ReportsSlaPage() {
|
export default async function ReportsSlaPage() {
|
||||||
|
await requireAuthenticatedSession()
|
||||||
return (
|
return (
|
||||||
<AppShell
|
<AppShell
|
||||||
header={
|
header={
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
import { AppShell } from "@/components/app-shell"
|
import { AppShell } from "@/components/app-shell"
|
||||||
import { SettingsContent } from "@/components/settings/settings-content"
|
import { SettingsContent } from "@/components/settings/settings-content"
|
||||||
import { SiteHeader } from "@/components/site-header"
|
import { SiteHeader } from "@/components/site-header"
|
||||||
|
import { requireAuthenticatedSession } from "@/lib/auth-server"
|
||||||
|
|
||||||
export default function SettingsPage() {
|
export default async function SettingsPage() {
|
||||||
|
await requireAuthenticatedSession()
|
||||||
return (
|
return (
|
||||||
<AppShell
|
<AppShell
|
||||||
header={<SiteHeader title="Configurações" lead="Central de preferências e governança do workspace" />}
|
header={<SiteHeader title="Configurações" lead="Central de preferências e governança do workspace" />}
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,14 @@ import { TicketDetailStatic } from "@/components/tickets/ticket-detail-static"
|
||||||
import { NewTicketDialogDeferred } from "@/components/tickets/new-ticket-dialog.client"
|
import { NewTicketDialogDeferred } from "@/components/tickets/new-ticket-dialog.client"
|
||||||
import { getTicketById } from "@/lib/mocks/tickets"
|
import { getTicketById } from "@/lib/mocks/tickets"
|
||||||
import type { TicketWithDetails } from "@/lib/schemas/ticket"
|
import type { TicketWithDetails } from "@/lib/schemas/ticket"
|
||||||
|
import { requireAuthenticatedSession } from "@/lib/auth-server"
|
||||||
|
|
||||||
type TicketDetailPageProps = {
|
type TicketDetailPageProps = {
|
||||||
params: Promise<{ id: string }>
|
params: Promise<{ id: string }>
|
||||||
}
|
}
|
||||||
|
|
||||||
export default async function TicketDetailPage({ params }: TicketDetailPageProps) {
|
export default async function TicketDetailPage({ params }: TicketDetailPageProps) {
|
||||||
|
await requireAuthenticatedSession()
|
||||||
const { id } = await params
|
const { id } = await params
|
||||||
const isMock = id.startsWith("ticket-")
|
const isMock = id.startsWith("ticket-")
|
||||||
const mock = isMock ? getTicketById(id) : null
|
const mock = isMock ? getTicketById(id) : null
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
import { TicketsResolvedPageClient } from "./tickets-resolved-page-client"
|
import { TicketsResolvedPageClient } from "./tickets-resolved-page-client"
|
||||||
|
import { requireAuthenticatedSession } from "@/lib/auth-server"
|
||||||
|
|
||||||
export default function TicketsResolvedPage() {
|
export default async function TicketsResolvedPage() {
|
||||||
|
await requireAuthenticatedSession()
|
||||||
return <TicketsResolvedPageClient />
|
return <TicketsResolvedPageClient />
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,12 @@ import { AppShell } from "@/components/app-shell"
|
||||||
import { SiteHeader } from "@/components/site-header"
|
import { SiteHeader } from "@/components/site-header"
|
||||||
import { ChartAreaInteractive } from "@/components/chart-area-interactive"
|
import { ChartAreaInteractive } from "@/components/chart-area-interactive"
|
||||||
import { ViewsCharts } from "@/components/charts/views-charts"
|
import { ViewsCharts } from "@/components/charts/views-charts"
|
||||||
|
import { requireAuthenticatedSession } from "@/lib/auth-server"
|
||||||
|
|
||||||
export const dynamic = "force-dynamic"
|
export const dynamic = "force-dynamic"
|
||||||
|
|
||||||
export default function ViewsPage() {
|
export default async function ViewsPage() {
|
||||||
|
await requireAuthenticatedSession()
|
||||||
return (
|
return (
|
||||||
<AppShell
|
<AppShell
|
||||||
header={<SiteHeader title="Visualizações" lead="Relatórios visuais e insights" />}
|
header={<SiteHeader title="Visualizações" lead="Relatórios visuais e insights" />}
|
||||||
|
|
@ -19,4 +21,3 @@ export default function ViewsPage() {
|
||||||
</AppShell>
|
</AppShell>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue