Skip to content

Commit

Permalink
user login
Browse files Browse the repository at this point in the history
  • Loading branch information
ren7087 committed Jul 29, 2021
1 parent f4992a6 commit 6eb6b86
Show file tree
Hide file tree
Showing 9 changed files with 106 additions and 2 deletions.
9 changes: 9 additions & 0 deletions app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
class ApplicationController < ActionController::Base
include SessionsHelper #追記
include Pagy::Backend #追記

private

def require_user_logged_in
unless logged_in?
redirect_to login_url
end
end
end
36 changes: 36 additions & 0 deletions app/controllers/sessions_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
class SessionsController < ApplicationController
def new
end

def create
email = params[:session][:email].downcase
password = params[:session][:password]
if login(email, password)
flash[:success] = 'ログインに成功しました。'
redirect_to @user
else
flash.now[:danger] = 'ログインに失敗しました。'
render :new
end
end

def destroy
session[:user_id] = nil
flash[:success] = 'ログアウトしました。'
redirect_to root_url
end

private

def login(email, password)
@user = User.find_by(email: email)
if @user && @user.authenticate(password)
# ログイン成功
session[:user_id] = @user.id
return true
else
# ログイン失敗
return false
end
end
end
2 changes: 2 additions & 0 deletions app/controllers/users_controller.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
class UsersController < ApplicationController
before_action :require_user_logged_in, only: [:index, :show]

def index
@pagy, @users = pagy(User.order(id: :desc), items: 25)
end
Expand Down
9 changes: 9 additions & 0 deletions app/helpers/sessions_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module SessionsHelper
def current_user
@current_user ||= User.find_by(id: session[:user_id])
end

def logged_in?
!!current_user
end
end
19 changes: 17 additions & 2 deletions app/views/layouts/_navbar.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,27 @@
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent">
<span class="navbar-toggler-icon"></span>
</button>

<div class="collapse navbar-collapse justify-content-end" id="navbarSupportedContent">
<% if logged_in? %>
<div class="btn-group">
<ul class="navbar-nav">
<li class="ms-3"><%= link_to 'Users', users_path, class: 'nav-link' %></li>
</ul>

<button type="button" class="btn btn-dark dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"><%= current_user.name %></button>
<ul class="dropdown-menu dropdown-menu-end">
<li class="dropdown-item"><%= link_to 'My profile', user_path(current_user), class: 'nav-link' %></li>
<li class="dropdown-divider"></li>
<li class="dropdown-item"><%= link_to 'Logout', logout_path, method: :delete, class: 'nav-link' %></li>
</ul>
</div>
<% else %>
<ul class="navbar-nav">
<li class="nav-item"><%= link_to 'Signup', signup_path, class: 'nav-link' %></li>
<li class="nav-item"><a href="#" class="nav-link">Login</a></li>
<li class="nav-item"><%= link_to 'Login', login_path, class: 'nav-link' %></li>
</ul>
<% end %>
</div>
</div>
</nav>
Expand Down
2 changes: 2 additions & 0 deletions app/views/sessions/create.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<h1>Sessions#create</h1>
<p>Find me in app/views/sessions/create.html.erb</p>
2 changes: 2 additions & 0 deletions app/views/sessions/destroy.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<h1>Sessions#destroy</h1>
<p>Find me in app/views/sessions/destroy.html.erb</p>
25 changes: 25 additions & 0 deletions app/views/sessions/new.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<div class="text-center">
<h1>Log in</h1>
</div>

<div class="row">
<div class="col-sm-6 offset-sm-3">

<%= form_with(url: login_path, scope: :session) do |f| %>

<div class="mb-3">
<%= f.label :email, 'Email' %>
<%= f.email_field :email, class: 'form-control' %>
</div>

<div class="mb-3">
<%= f.label :password, 'Password' %>
<%= f.password_field :password, class: 'form-control' %>
</div>

<%= f.submit 'Log in', class: 'btn btn-primary w-100' %>
<% end %>

<p>New user? <%= link_to 'Sign up now!', signup_path %></p>
</div>
</div>
4 changes: 4 additions & 0 deletions config/routes.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
Rails.application.routes.draw do
root to: 'tasks#index'

get 'login', to: 'sessions#new'
post 'login', to: 'sessions#create'
delete 'logout', to: 'sessions#destroy'

get 'signup', to: 'users#new'
resources :users, only: [:index, :show, :create]
resources :tasks
Expand Down

0 comments on commit 6eb6b86

Please sign in to comment.