O backend deste sistema foi desenvolvido em Node.js com Express e Sequelize, oferecendo uma API RESTful para o gerenciamento de usuários, controle de acessos temporários e autenticação.
- Node.js
- Express
- Sequelize (ORM)
- PostgreSQL
- JWT para autenticação
- Sucrase
- Cors
- Dotenv
- Node.js 16+
- PostgreSQL 12+
- NPM ou Yarn
- Clone o repositório:
git clone [URL_DO_REPOSITORIO]
cd sistema-gestao-acessos-backend
- Instale as dependências:
npm install
# ou
yarn install
- Configure o banco de dados:
Edite o arquivo
src/config/database.js
conforme necessário:
module.exports = {
dialect: 'postgres',
host: 'localhost',
port: 5432,
username: 'postgres',
password: 'postgres',
database: 'manage_access',
define: {
timestamps: true,
underscored: true,
underscoredAll: true,
},
}
- Defina as variáveis de ambiente criando um arquivo
.env
na raiz do projeto:
JWT_SECRET=mysecretjwttoken12345
- Execute as migrações do banco de dados:
npx sequelize db:migrate
- Inicie o servidor:
npm run dev
# ou
yarn dev
O servidor estará disponível em http://localhost:3333
.
src/
├── app/
│ ├── controllers/ # Controladores da aplicação
│ ├── middlewares/ # Middlewares personalizados
│ ├── models/ # Modelos Sequelize
│ └── utils/ # Utilitários e helpers
├── config/ # Configurações do projeto
├── database/
│ ├── migrations/ # Migrações do Sequelize
│ └── index.js # Configuração da conexão
├── routes.js # Definição das rotas
└── server.js # Configuração do servidor Express
POST /login
- Autenticação de usuário- Body:
{ email, password }
- Body:
POST /user
- Criar novo usuário- Body:
{ name, email, password_hash }
- Body:
POST /user/approved
- Aprovar/Rejeitar usuário- Body:
{ email, approved }
- Body:
POST /manageAccess
- Conceder acesso- Body:
{ feature, user_id, final_date }
- Body:
POST /manageAccess/revoked
- Revogar acesso- Body:
{ feature, user_id }
- Body:
GET /documents
- Verificar acesso a documentos- Query:
{ user_id }
- Query:
- Middleware de autenticação para rotas protegidas
- Token JWT com expiração de 60 minutos
- Verificação de token em todas as rotas protegidas
- Verificação de permissões por recurso
- Validação de datas de expiração
- Sistema de revogação de acessos
{
id: UUID,
name: String,
email: String,
password_hash: String,
active: Boolean,
type: Integer, // 1 = Admin, 2 = User
created_at: DateTime,
updated_at: DateTime
}
{
id: UUID,
feature: Integer, // 0 = Documents, 1 = RestrictedArea, 2 = InternalSystem
user_id: UUID,
initial_date: DateTime,
final_date: DateTime,
revoked: Boolean,
created_at: DateTime,
updated_at: DateTime
}
O sistema possui logs detalhados para:
- Erros de autenticação
- Operações no banco de dados
- Requisições à API
- Alterações de acesso
Para ambiente de produção:
- Configure as variáveis de ambiente adequadamente.
- Execute o build:
npm run build
# ou
yarn build
- Inicie o servidor:
npm start
# ou
yarn start
O projeto utiliza Nodemon com Sucrase para desenvolvimento:
{
"execMap": {
"js": "sucrase-node"
}
}
Comandos úteis do Sequelize:
# Criar nova migração
npx sequelize migration:create --name=create-users
# Executar migrações
npx sequelize db:migrate
# Reverter última migração
npx sequelize db:migrate:undo
Este projeto está sob a licença MIT.
- Itamar Alves Ferreira Junior