Skip to content

EasyRetro Plataforma de gestão ágil e gerenciamento de projetos

Notifications You must be signed in to change notification settings

StratusTI/SteelElo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

122 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

 Eu crie todo o visual dos quick-links em @app/components/shared/company/user/user-quick-link.tsx agora preciso que gere todo o backend, mantendo o padrão de arquitetura. Gere testes para validar (unitário e integração). O link deve ser único por usuário, o mesmo não pode ter dois links iguais (mesmo com título diferentes).

Validando Usuário/JWT- Cookies Headers

API Routes

// app/api/auth/me/route.ts
import { verifyJWT } from '@/src/http/middlewares/verify-jwt';

export async function GET() {
  const { user, error } = await verifyJWT();
  if (error) return error;

  return NextResponse.json(user);
}

export async function POST(request: Request) {
  const { email, password } = await request.json();
  const { user, error } = await verifyJWT({ email, password });
  if (error) return error;

  return NextResponse.json(user);
}
// app/api/users/[id]/route.ts
import { verifyJWT } from '@/src/http/middlewares/verify-jwt';

export async function GET() {
  const { user, error } = await verifyJWT();
  if (error) return error;

  return NextResponse.json(user);
}

export async function PUT(request: Request) {
  const { user, error } = await verifyJWT();
  if (error) return error;

  const { name, email } = await request.json();
  const { user: updatedUser, error: updateError } = await updateUser({ id: user.id, name, email });
  if (updateError) return updateError;

  return NextResponse.json(updatedUser);
}

Server Components

// app/dashboard/page.tsx
import { verifyJWT } from '@/src/http/middlewares/verify-jwt';

export default async function DashboardPage() {
  const { user, error } = await verifyJWT();
  if (error) return error;

  return (
    <div>
      <h1>Bem-vindo, {user.nome}</h1>
      <p>Email: {user.email}</p>
      {user.admin === 1 && <p>Você é admin</p>}
    </div>
  )
}

Client Components

// app/layout.tsx
import { AuthProvider } from '@/interface-adapters/hooks/use-auth'
import { getAuthUser } from '@/interface-adapters/guards/require-auth'

export default async function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  const user = await getAuthUser()

  return (
    <html lang="pt-BR">
      <body>
        <AuthProvider user={user}>
          {children}
        </AuthProvider>
      </body>
    </html>
  )
}
// app/components/user-menu.tsx
'use client'

import { useAuth } from '@/interface-adapters/hooks/use-auth'

export function UserMenu() {
  const { user, isAdmin } = useAuth()

  if (!user) return null

  return (
    <div>
      <span>{user.nome}</span>
      {isAdmin && <span>Admin</span>}
    </div>
  )
}

About

EasyRetro Plataforma de gestão ágil e gerenciamento de projetos

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages