rpad88 / m1s9

Lab365 | Modulo 1 Semana 9

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Lab365

Conteúdo das aulas do Módulo 1 Semana 10

Build with

  • NodeJS
  • Express - Framework para o desenvolvimento de aplicações JavaScript com o Node.js.
  • Sequelize - O Sequelize abstrai os comandos de operações de SQL, e faz com que possamos usar linguagem de programação que já estamos usando no backend
  • Postgre SQL - Banco de dados
  • bcrypt - Criptografa as senhas
  • yup - Validação de parâmetros recebidos na API
  • jwt - Tem como objetivo transmitir ou armazenar de forma compacta e segura objetos JSON entre diferentes aplicações

Important functions

// CRIPTOGRAFIA DA SENHA INFORMADA PELO USER
// função utilizada no model User.js
User.beforeSave(async (user) => {
    if(user.changed('password')) {
        const hashedPassword = await bcrypt.hash(user.password, 10)
        user.password = hashedPassword
    }
})
//VALIDAÇÃO DE TOKEN JWT
// utilizado no middleware
function validateToken(req, res, next) {
    const token = req.headers.authorization
    if (!token || !token.startsWith('Bearer ')) return res.status(403).json({message: 'token ausente'})
     
    const tokenJwt = token.slice(7)

    jwt.verify(tokenJwt, process.env.TOKEN_PWD, (error, conteudoDoToken) => {
        if(error) {
            if(error.name === "TokenExpiredError") return res.status(403).json({message: 'Token expirado'})
            if(error.name === "JsonWebTokenError") return res.status(403).json({message: 'Token invalido'})
        }
        next()
    })
}
// VALIDAÇÃO DE ATRIBUTOS COM YUP
// feita no middleware de validação de cadastro
const validation = yup.object().shape({
   name: yup
      .string("O nome deve ser uma string.")
      .required("Nome é obrigatório"),
   cpf: yup
      .string("cpf deve conter 11 dígitos")
      .min(11, 'cpf deve conter 11 números')
      .max(11, 'cpf deve conter 11 números')
      .required("cpf é obrigatório"),
   password: yup
      .string("Senha deve ser string")
      .min(6, 'Senha deve ter no mínimo 6 caracteres')
      .required("a senha é obrigatória"),
})

How to install used node packages

npm install express --save
npm install sequelize
//faz a conexão com o banco postgres
npm install pg pg-hstore
npm install bcrypt
npm install yup
npm i jsonwebtoken

About

Lab365 | Modulo 1 Semana 9


Languages

Language:JavaScript 100.0%