Cursos / Informática para Internet / Plataformas de aplicações Web / Aula

arrow_back Aula 10 - PetTopStore - Admin - Parte 2

Autenticação - Criando usuários iniciais

O sistema administrativo precisa inicialmente de um mecanismo de autenticação. No nosso modelo do banco de dados, um usuário "administrador" do sistema é na verdade um registro na tabela "employees" especialmente com o campo is_admin = true;

Antes de iniciar, vamos precisar de uma biblioteca para tratar com criptografia de senhas chamada "bcrypt". Para instalar no projeto admin:

npm install bcrypt

Vamos inicialmente criar alguns usuários na tabela "employees" no banco de dados. Para isso vamos utilizar o recurso chamado de "seeds" do knex.

Seed são similares às migrations, mas são normalmente usadas para se adicionar dados iniciais no banco de dados e não alterar ou criar tabelas.

Crie uma seed para se criar o primeiro administrador com o comando:

npx knex seed:make create_initial_employees

O arquivo criado estará na pasta "seeds" na aplicação, com o nome "create_initial_employees.js". Edite o arquivo e salve-o com o seguinte conteúdo:

const bcrypt = require('bcrypt');

exports.seed = function(knex) {
  // Remove todos os employees
  return knex('employees').del()
    .then(function () {
      // Depois insere os seguintes:
      return knex('employees').insert([
        {
          id: 1,
          name: 'Maria Admin',
          email: 'maria@pettopstore.com',
          password: bcrypt.hashSync('123456', 10),
          is_admin: true
        },
        {
          id: 2,
          name: 'João Vendedor',
          email: 'joao@pettopstore.com',
          password: bcrypt.hashSync('654321', 10),
          is_admin: false
        },
      ]);
    });

};

Repare que o arquivo create_initial_employees.js realiza as ações:

  • Para a tabela 'employees' remove todos os registros
  • Depois, para a mesma tabela, adiciona 2 employees, um com is_admin = true (Maria) e outro com is_admin = false (João). Note que nesse sistema administrativo não será possível logar como João, pois ele não é administrador.
  • Os employees são criados com a senha criptografada usando o comando bcrypt.hashSync(senha_do_employee, 10), que recebe uma senha e retorna uma hash (versão critografada) dela que pode ser armazenada no banco dae dados com segurança. Esse número 10, no segundo parâmetro do hashSync serve como configuração do método de criptografia, algo interno do bcrypt.

Para rodar o seed execute no terminal:

npx knex seed:run


Versão 5.3 - Todos os Direitos reservados