Commit 49d2b018 by Tô Ngọc Ánh

Merge branch 'sign-in-out' into 'master'

Finish sign in

See merge request !7
parents 9c90e762 3325c153
Pipeline #672 failed with stages
in 0 seconds
......@@ -12,5 +12,6 @@
//
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require turbolinks
//= require_tree .
......@@ -7,7 +7,7 @@ class SessionsController < ApplicationController
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
# Sign the user in and redirect to the user's show page.
sign_in user
sign_in (user)
redirect_to user
else
flash.now[:error] = 'Invalid email/password combination' # Not quite right!
......@@ -16,5 +16,7 @@ class SessionsController < ApplicationController
end
def destroy
sign_out
redirect_to root_url
end
end
......@@ -10,6 +10,7 @@ class UsersController < ApplicationController
def create
@user = User.new(user_params)
if @user.save
sign_in(@user)
flash[:success] = "Welcome to the Sample App"
redirect_to @user
else
......
......@@ -18,4 +18,10 @@ module SessionsHelper
remember_token = User.digest(cookies[:remember_token])
@current_user ||= User.find_by(remember_token: remember_token)
end
def sign_out
current_user.update_attribute(:remember_token, User.digest(User.new_remember_token))
cookies.delete(:remember_token)
self.current_user = nil
end
end
......@@ -6,7 +6,24 @@
<ul class="nav pull-right">
<li><%= link_to "Home", home_path %></li>
<li><%= link_to "Help", help_path %></li>
<li><%= link_to "Sign in", signin_path %></li>
<% if signed_in? %>
<li><%= link_to "Users", '#' %></li>
<li id="fat-menu" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
Account <b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><%= link_to "Profile", current_user %></li>
<li><%= link_to "Settings", '#' %></li>
<li class="divider"></li>
<li>
<%= link_to "Sign out", signout_path, method: :delete %>
</li>
</ul>
</li>
<% else %>
<li><%= link_to "Sign in", signin_path %></li>
<% end %>
</ul>
</nav>
</div>
......
......@@ -16,7 +16,7 @@ development:
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
test: &test
<<: *default
database: db/test.sqlite3
......@@ -25,3 +25,6 @@ production:
adapter: postgresql
encoding: unicode
url: <%= ENV['DATABASE_URL'] %>
cucumber:
<<: *test
\ No newline at end of file
......@@ -36,6 +36,11 @@ describe "AuthenticationPages" do
it { should have_link('Profile', href: user_path(user)) }
it { should have_link('Sign out', href: signout_path) }
it { should_not have_link('Sign in', href: signin_path) }
describe "followed by signout" do
before { click_link "Sign out" }
it { should have_link('Sign in') }
end
end
end
end
......@@ -43,6 +43,15 @@ describe "User pages" do
it "should create a user" do
expect { click_button submit }.to change(User, :count).by(1)
end
describe "after saving the user" do
before { click_button submit }
let(:user) { User.find_by(email: 'user@example.com') }
it { should have_link('Sign out') }
it { should have_title(user.name) }
it { should have_selector('div.alert.alert-success', text: 'Welcome') }
end
end
end
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment