Git Product home page Git Product logo

app-arquivo's Introduction

Gerenciador de Arquivos

Link do projeto Gerenciador de Arquivos.

Funcionalidades do Sistema / Backend

  • O Sistema de Gerenciador de Arquivos

Setup de ambiente:

Estrutura de pastas

alt text

Como rodar a API

app.listen(8080, () => {
  console.log("Servido iniciado na porta 8080: http://localhost:8080");
});

Conexão como Banco de dados MySQL Workbench:

  • Arquivo: db.js

Dependencias utilizadas:

//import sequilize
const Sequelize = require("sequelize");

//Conection databse  ("namedv", "user Workbench", "password user")
const sequelize = new Sequelize("...", "...", "...", {
  host: "localhost", //Execcting in localhost
  dialect: "mysql", //
  logging: false,
});

//Send Message
sequelize
  .authenticate()
  .then(function () {
    console.log("Conexão com banco de dados!");
  })
  .catch(function (erro) {
    console.log("Erro na conexão com o banco de dados" + erro);
  });

//export
module.exports = sequelize;

Criação da tabela de usuarios

  • Localização: backend/models/Users.js

Autenticação de usuario e Senha criptografada

  • Localização: backend/middleware/auth.js

Rota de Registro de usuário

app.post("/register", async (req, res) => {
  var dados = req.body;
  dados.password = await bcrypt.hash(dados.password, 6);

  await Users.create(dados)
    .then(() => {
      return res.json({
        mensagem: "Usuário cadastrado com sucesso!",
      });
    })
    .catch(() => {
      return res.status(400).json({
        mensagem: "Erro: Usuário não cadastrado com sucesso!",
      });
    });
});

Autenticação de usuario e Senha criptografada

  • Localização: backend/middleware/uploadIamge.js
  • Armazena os arquivos na pasta: ./public/upload/docUsers

Rota de Upload de documentos PDF

app.post("/upload-docs", uploadDocs.single("image"), (req, res) => {
  //Registrando no banco de dados
  if (req.file) {
    Docs.create({
      name: req.body.name,
      documentType: req.body.documentType,
      documentCode: req.body.documentCode,
      documentCpf: req.body.documentCpf,
      documentRg: req.body.documentRg,
      documentDate: req.body.documentDate,
      image: req.file.filename,
    })
      .then(() => {
        return res.json({
          mensagem: "Upload realizado com sucesso!",
        });
      })
      .catch(() => {
        return res.status(400).json({
          mensagem: "Erro: Upload não realizado!",
        });
      });
  }
});

Lista de Rotas implementadas no Sistema

  • / -> Main
  • /register -> Cadastro de usuários
  • /listUsers -> Listagem de Usuários e implementação da Páginação das tabelas no Front-End
  • /vizualizar-usuario/:id -> Vizualizar usuário pelo ID quando selecionado
  • /edit-user/:id -> Editar usuário com o ID seleionado
  • /deleteUsers/:id -> Apagar usuário do sistema pelo ID selecionado
  • /login -> Login com email e Senha(Senha criptografada)
  • /upload-docs -> Upload de documentos tipo PDF
  • /list-files -> Listagem dos documentos
  • /vizualizar-documento/:id -> Vizualizar documento pelo ID quando selecionado
  • /list-prontuario -> Apagar documento do sistema pelo ID selecionado
  • /deleteFiles/:id -> Listagem de tipo de documento (Prontuarios)

Funcionalidades do Sistema / Frontend

Setup de ambiente:

Estrutura de pastas

alt text

Como criar o projeto

  • npx create-react-app name-app

Como rodar o projeto

Componentes criados

  • Forms -> frontend/components/Forms:
    • newDoc.jsx
    • newProntuario.jsx
    • newRegister.jsx
  • Modal -> frontend/components/Modal:
    • ModalFirstDocument.jsx
    • ModalNewNewDocument.jsx
    • ModalNewRegister.jsx
    • ModalNewProntuario.jsx
  • Navbar -> frontend/components/NavBar:
    • NavBar.jsx
  • Sidebar -> frontend/components/Sidebar:
    • SideBar.jsx
  • Tables -> frontend/components/Tables:
    • TableDocs.jsx
    • TableProntuarios.jsx
    • TablesUsers.jsx

Context API

  • Autentificação de usuário: frontend/contexts/auth.jsx:

Pagina criadas

  • Arquivos
  • EditUser
  • Home
  • Login -> Privado, somente para usuários autenticados
  • Prontuarios
  • UsersList -> Privado, somente usuários com permissão de Adminstrador e Gerente
  • VizualizarDocs

API

  • Services: frontend/services/api.jsx:
//User Authentication
//JWT
const jwt = require('jsonwebtoken');
const {
    promisify
} = require('util');

//Export JWT
module.exports = {
    eAdmin: function (req, res, next) {
        const authHeaders = req.headers.authorization;
        if (!authHeaders) {
            return res.status(400).json({
                erro: true,
                message: "Erro: Necessario realizar o login para acessar a página!"
            });
        }

        const [bearer, token] = authHeaders.split(' ');
        console.log("bearer: " + bearer + " Token: " + token)

        if (!token) {
            return res.status(400).json({
                erro: true,
                message: "Erro: Necessario realizar o login para acessar a página!"
            });
        }
        //if valid TOKEN
        try {
            const decode = promisify(jwt.verify)(token, "95d30169a59c418b52013315fc81bc99fdf0a7b03a116f346ab628496f349ed5");
            req.userId = decode.id;
            return next();
        } catch (error) {
            return res.status(400).json({
                erro: true,
                message: "Erro: Necessario realizar o login para acessar a página!"
            });
        }
    }
}```

app-arquivo's People

Contributors

hertzzy avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.