Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. Ruby on Rails
Code

Explorando Devise, Parte 1

Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Exploring Devise.
Exploring Devise, Part 2

Portuguese (Português) translation by Erick Patrick (you can also view the original English article)

Em um dos artigos anteriores, sobre envio de imagens no Rails, mencionamos Devise mas não nos aprodundamos. Nesse tutorial, falaremos sobre Devise.

Prontos? Comecemos!

Introdução e Módulos do Devise

Devise é um solução de autenticação para Rails criada com Warden e criada pelo pessoal do Plataformatec. Devises provê vários módulos:

  • Database Authenticable: Criptografa e salva senhas numa base de dados para validar a atentividade de um usuário durante acesso.
  • Omniauthable: Dá suporte ao OmniAuth no Devise. Usuários da aplicação serão capazes de acessar usando Facebook, Twitter e Google, por exemplo.
  • Confirmable: Isso habilita o envio de e-mails com instruções que ajudarão na verificação de uma conta.
  • Recoverable: Esse módulo ajuda na recuperação de senhas dos usuários. Com isso, o usuário pode resetar sua senha.
  • Registerable: Manipula o registro dos usuários. Também permite usuário editar e remover suas contas.
  • Rememberable: Esse módulo permite a aplicação lembrar um usuário através da criação de um cookie.
  • Trackable: Permite registrar o número de acessos, timestamps e endereços de IP.
  • Timeoutable: Esse módulo é responsável por expirar a sessão que não estiver ativa por um determinado tempo.
  • Validatable: Com esse módulo, email e senha tem de ser validados.
  • Lockable: Esse provê uma camada extra de segurança—ao ativado, uma conta pode ser bloqueada após um certo número de tentativas de acesso erradas.

Integração do Devise

Para esse tutorial, geraremos uma aplicação Rails que usaremos para ver como Devise funciona. Continuemos!

rails new devise-app -T

O semáforo -T fala pro Rails gerar a aplicação sem o conjunto de testes padrão. Naveguemos até o diretório da aplicação e coloquemos as gems abaixo no arquivo Gemfile.

Agora, instalemos as gem do Devise e Bootstrap adicionadas.

bundle install

Renomeiemos o arquivo app/assets/stylesheets/application.css para app/assets/stylesheets/application.scss e adicione as linhas a seguir:

Abramos arquivo app/assets/javascripts/application.jsfile e requisite bootstrap-sprockets. O nosso parece com isso:

Agora, precisamos executar o comando run do Rails para instalar os arquivos de configuração do Devise. E fazemos isso assim:

rails generate devise:install

Ele retornará o seguinte, na linha de comando. Devemos lê-lo e entender o que aconteceu.

O comando também gera dois aruivos, que encontramos no diretório config. Também nos dá algumas instruções do que fazer.

Naveguemos ao layout da aplicação, app/views/layouts/application.html.erb, e façamo-no ficar desse jeito:

Precisamos definir as opções padrão de URL para o ambiente de desenvolvimento. Adicionemos o código abaixo em config/environments/development.rb.

Agora, precisamos criar um modelo User para o Devise. Podemos fazê-lo usando a linha de comando.

rails generate devise User

Isso gerará um arquivo user.rb na pasta app/models. O arquivo gerado parecerá com isso:

Também podemos ver que ele contém os módulos base mencionados acima. O comando executado também modificou o arquivo config/routes.rb adicionando uma rota para o Devise. Temos de verificá-lo depois, também.

Agora, precisamos migrar a base de dados. Fazemos isso executando:

rake db:migrate

Autenticação Usando Devise

Agora, precisamos criar um PagesController e envolver a autenticação do Devise—isso previnirá pessoas não autorizadas a ver a página.

rails generate controller Pages index

Abramos o arquivo de rotas e configuremos a raiz da aplicação.

Abramos o PagesController e adicionemos autenticação às páginas index e new.

O código mostra que as páginas index e new são acessíveis apenas por usuários registrados. Abra a linha de comanda e execute rails server. Acesse http://localhost:3000 no navegador e será enviado, automaticamente para a pagina de acesso do Devise.

Acessando Sem Usar Email

Os meios padrão de acesso do Devise envolve o uso de email e senha. E se quisermos permitir usuários acessar através de nome de usuário único? Se isso é o que queremos, isso é possível. Vejamos como.

Execute o comando:

rails generate migration AddUsernameToUSers username:string

Isso adicionará uma nova coluna para username na tabela users. Migremos a base de dados.

rake db:migrate

Precisaremos adicionar um campo às visões onde os usuários possam digitar seu nome de usuário. Ao rimos ao diretório app/views, não encontremos qualquer arquivo renderizando as visões do Devise. Isso se dá pelo Devise carregar as visões do conjunto de gem. Para customizá-las, temos de gerar cóias das visões. Esse comando resolve.

rails generate devise:views

Isso gerará alguns diretórios e arquivos na pasta app/views.

Precisaremos editar a página de acesso, registro e atualização de informação do usuário. Basta colar o código abaixo em seus respectivos arquivos.

Cadastro

Edição

Acesso

Usando o editor de texto, naveguemos até app/controllers/application_controller.rb. Precisaremos modificá-lo para permitir o uso do nome de usuário. Modifique-o para parecer com isso:

Agora, um usuário pode acessar com seu nome de usuário. Agora, há algo errado na nossa aplicação. Quando um usuário acessa, não temos com sair. Isso não é uma boa experiência do usuário. Mostraremos como resolver isso.

Da linha de comando, criemos um novo diretório chamado shared na pasta app/views.

O arquivo recém criado será uma parcial, onde ficará o código da barra de navegação ficará. Cole o código a seguir.

Agora, precisamos renderizar a barra de navegação no layout da aplicação. Abra app/views/layouts/application.html.erb e cole o código que renderizará a barra de navegação.

Conclusão

Nessa parte, aprendemos a instalar o Devise e adicionamos autenticação às páginas. Também mencionamos sobre parciais. Cobrimos melhor em um outro tutorial.

Na próxima parte, cobriremos algumas áreas mais avançadas que isso. Espero que tenha valido seu tempo!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.