Ini adalah artikel pertama pada tahun 2017, sudah lama vakum karena liburan akhirnya bisa kembali ngeblog.
Pada tutorial sebelumnya kita sudah membuat sebuah function login pada project Ruby on Rails, sekarang kita akan melanjutkan tutorialnya dengan menambahkan function logout.
Pertama, edit file routes.rb pada path config/ dengan menambahkan route logout sehingga akan tampak seperti ini,
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
# root 'application#hello'
get 'users' => 'users#index'
get '' => 'home#index'
get 'signup' => 'users#_signup'
post 'signup' => 'users#_addUser'
get 'login' => 'auth#index'
post 'login' => 'auth#create'
delete 'logout' => 'auth#logout'
get 'edit/:id' => 'users#_show', as: :user
post 'edit/:id' => 'users#_edit'
delete 'delete/:id' => 'users#_delete'
end
Selanjutnya, tambahkan function logout dengan mengedit controller auth_controller.rb pada path app/controllers/ sehingga akan tampak seperti ini,
class AuthController < ApplicationController
def index
end
def create
@user = User.find_by_email(params[:session][:email])
if @user && @user.authenticate(params[:session][:password])
session[:user_id] = @user.id
redirect_to '/'
else
redirect_to 'login'
end
end
def logout
session[:user_id] = nil
redirect_to '/'
end
end
Kemudian, tambahkan link untuk logout yang akan kita tempatkan pada file application.html.erb pada path app/layouts/ sehingga codenya akan tampak seperti ini,
<!DOCTYPE html>
<html>
<head>
<title><%= yield(:title) %> | Page</title>
<%= csrf_meta_tags %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>
<body>
<div class="header">
<div class="content">
<div class="left-float">
<a href="/" class="button-header">Home</a>
<div class="dropdown">
<a class="button-header dropbtn" onclick="myFunction()">Table</a>
<div id="myDropdown" class="dropdown-content">
<a href="/users">User</a>
<a href="#">Link 2</a>
<a href="#">Link 3</a>
</div>
</div>
</div>
<div class="right-float">
<% if current_user %>
<%= link_to 'Logout', logout_path, method: :delete, data: { confirm: 'Are you sure to logout?' } %>
<% else %>
<a href="/login" class="button-header">Login</a>
<% end %>
</div>
</div>
</div>
<div class="isi">
<%= yield %>
</div>
<div class="footer">
COPYRIGHT © 2016 CODEDOCT.COM ALL RIGHTS RESERVED.
</div>
</body>
</html>
Terakhir, buat tanda sedang login atau tidak dengan mengedit file index.html.erb pada path app/views/home/ menjadi seperti ini,
<%= provide(:title, "Home") %>
<h1 class="text-center">Welcome to my ruby website <% if current_user %><%=current_user.email%><% else %>Guest<% end %></h1>
<br>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
Sehingga tampilan saat sedang tidak login akan tampak seperti ini,
Sedangkan tampilan saat sedang login dan akan logout akan tampak sepreti ini,
===DONE!===