Додаємо реєстрацію та аутентифікацію користувачів за допомогою Devise
Created by Piotr Steininger, @polishprince
Updated by Ernesto Jimenez, @ernesto_jimenez
Переклад українською - Bogdan Varshchuk, @g3d
Редагування та оновлення - Aleksandra Klochko, @aleksacastle
Цей крок передбачає, що у вас вже створений додаток Ideas.
1.Додання devise gem
Відкриємо Gemfile
та додамо ці рядки
gem 'devise'
у консолі запустимо
bundle install
щоб встановити gem. Не забудь перезапустити Rails сервер.
2.Встановлення Devise
Запустимо в терміналі:
rails g devise:install
3.Налаштування Devise
Перевіримо, чи у нас описані url опції за замовчуванням. Відкриємо config/environments/development.rb
та додамо:
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
перед словом end
.
Відкриємо app/views/layouts/application.html.erb
та додамо:
<% if notice %>
<p class="alert alert-success"><%= notice %></p>
<% end %>
<% if alert %>
<p class="alert alert-danger"><%= alert %></p>
<% end %>
над рядками
<%= yield %>
Відкриємо app/views/ideas/show.html.erb
і видалимо рядок:
<p id="notice"><%= notice %></p>
робимо те саме у файлі app/views/comments/show.html.erb
.
4.Створення моделi користувача
Використаємо команду Device gem для створення моделi користувача.
rails g devise user
rails db:migrate
Ментор: Поясни що було згенеровано. Що таке поля?
5.Створення першого користувача
Коли в нас все встановлено, ми можемо створити першого користувача. Devise автоматично створює всі маршрути, щоб створити новий аккаунт, увійти чи вийти з додатку.
Переконаємося, що rails сервер увімкнений, відкрий http://localhost:3000/users/sign_up та створи новий профайл користувача.
6.Додання посилання для авторизації та реєстрації
Все, що нам залишилось зробити, це додати відповідні посилання або повідомлення у верхньому правому кутку про те, що користувач увійшов в свій профайл.
В файл app/views/layouts/application.html.erb
додаємо:
<p class="navbar-text pull-right">
<% if user_signed_in? %>
Logged in as <strong><%= current_user.email %></strong>.
<%= link_to 'Edit profile', edit_user_registration_path, :class => 'navbar-link' %> |
<%= link_to "Logout", destroy_user_session_path, method: :delete, :class => 'navbar-link' %>
<% else %>
<%= link_to "Sign up", new_user_registration_path, :class => 'navbar-link' %> |
<%= link_to "Login", new_user_session_path, :class => 'navbar-link' %>
<% end %>
</p>
над рядками
<ul class="nav">
<li class="active"><a href="/ideas">Ideas</a></li>
</ul>
Також потрібно, щоб користувач переходив на сторінку авторизації автоматично, якщо він ще не увійшов у свій профайл. Для цього відкриваємо app/controllers/application_controller.rb
та додаємо:
before_action :authenticate_user!
після protect_from_forgery with: :exception
.
Відкрий браузер та спробуй увійти та вийти з профайлу.
Ментор: Розкажіть про user_signed_in?
та current_user
. Чим вони корисні?
Що далі?
- Додамо додаткові поля до моделі користувача
- Додамо зв’язки між користувачами та ідеями
- Встановимо обмеження для користувачів
- Розширимо функціонал із використанням ролей і рівнів доступу (можна використати популярні бібліотеки на кшталт CanCanCan, Rolify, тощо)