Skip to content

Repository files navigation

🚀 Fastify Authentication API

Este projeto é uma API de autenticação utilizando Fastify, Prisma, JWT e Zod para validação de dados.

🛠 Tecnologias Utilizadas


📦 Como Configurar o Projeto

1️⃣ Clonar o Repositório

  git clone <URL_DO_REPOSITORIO>
  cd nome-do-repositorio

2️⃣ Instalar as Dependências

Se estiver utilizando pnpm (recomendado):

pnpm install

Se estiver utilizando npm:

npm install

Se estiver utilizando yarn:

yarn install

3️⃣ Configurar Variáveis de Ambiente

Crie um arquivo .env na raiz do projeto e adicione as variáveis necessárias:

DATABASE_URL="postgresql://root:12345@localhost:5432/fastify-auth?schema=public"
JWT_SECRET="seu-segredo-aqui"

O JWT_SECRET pode ser gerado no linux usando o seguinte comando:

openssl rand -base64 32

🐳 Rodando o Banco de Dados com Docker

Se desejar rodar o banco de dados via Docker, utilize o docker-compose.yml com o seguinte comando:

docker-compose up -d

🔥 Rodando a API

1️⃣ Criar as Migrações do Prisma

Antes de rodar a API, execute:

pnpm db:migrate

Se estiver usando npm:

npm run db:migrate

2️⃣ Iniciar o Servidor

Para rodar a API em modo de desenvolvimento:

pnpm dev

Para rodar com npm:

npm run dev

Se estiver usando yarn:

yarn dev

🔑 Rotas Disponíveis

🔹 POST /register

Cria um novo usuário.

Body:

{
  "email": "user@example.com",
  "password": "senha123",
  "name": "User Name"
}

🔹 POST /login

Gera um token de autenticação JWT.

Body:

{
  "email": "user@example.com",
  "password": "senha123"
}

🔹 POST /refresh-token

Gera um novo token de acesso a partir do refreshToken.

Body:

{
  "refreshToken": "token-aqui"
}

🔹 GET /protected (Autenticado)

Exemplo de rota protegida.

Headers:

{
  "Authorization": "Bearer seu_token_aqui"
}

🔒 Criando uma Rota Protegida

Para criar uma rota autenticada, utilize o preHandler do Fastify:

fastify.get('/protected', {
  preHandler: [fastify.authenticate]
}, async (request, reply) => {
  return { message: 'Você acessou uma rota protegida!' };
});

🚀 Contribuindo

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b minha-feature)
  3. Faça o commit das suas alterações (git commit -m 'feat: Minha nova funcionalidade')
  4. Faça um push para a branch (git push origin minha-feature)
  5. Abra um Pull Request

About

a simple template of fastify auth

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages