הוסיפי אותנטיקציה עם Devise

נוצר על ידי Piotr Steininger, @polishprince

עודכן על ידי Ernesto Jimenez, @ernesto_jimenez

**המדריך הזה מניח שכבר בנית האפליקציה לדוגמה של RailsGirls המתוארת ** במדריך לבניית אפליקציה.

שלב 0: הוסיפי את ה-devise gem

פתחי את ה- Gemfile והוסיפי את השורה הבאה

gem 'devise'

ולאחר מכן הריצי את הפקודה

bundle install

על מנת להתקין את ה- gem. זכרי גם לאתחל את שרת ה- Rails.

שלב 1: שלבי את devise באפליקציה שלך

הריצי את הפקודה הבאה בטרמינל.

rails g devise:install

שלב 2: התאימי את 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 . השורות האלה מיותרות מכיוון שאנחנו הוספנו את זה לקובץ app/views/layouts/application.html.erb.

לסיום, אם את מתכננת להעלות את האפליקציה שלך לאינטרנט עם Heroku עלייך לפתוח את הקובץ config/application.rb ולהוסיף את השורה הבאה:

config.assets.initialize_on_precompile = false

כך שתהיה השורה השלישית מתחתית הקובץ (לפני מילת המפתח end הראשונה מבין השתיים)

שלב 3: צרי את מודל המשתמש (User)

אנו נשתמש בחבילת סקריפטים לשם יצירת מודל של משתמש.

rails g devise user
   rake db:migrate

מדריך/ה: הסבר/הסבירי איזה מודל משתמש (user model) נוצר. מהם השדות?

שלב 4: צרי את המשתמש הראשון שלך

כעת, לאחר שערכת את כל הסידורים הנדרשים, תוכלי ליצור את המשתמש הראשון שלך. Devise יוצר את כל הקוד וההפניות הנדרשים ליצירת חשבונות משתמש, פרטי כניסה לאפליקציה ויציאה ממנה, וכולי.

וודאי שהשרת רץ, פתחי את http://localhost:3000/users/sign_up וצרי את חשבון המשתמש שלך.

שלב 5: הוסיפי קישורים להרשמה ולהתחברות

כל שעלינו לעשות כעת זה להוסיף את הקישורים המתאים להתחברות - או הודעה שמהשתמש מחובר - בצד הימני העליון של סרגל הניווט.

כדי לעשות זאת, ערכי את 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 %>

מייד לאחר

<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. כיצד הם שימושיים?

מה הלאה?