authentication
parent
11d208ef56
commit
156632c5d7
|
|
@ -31,7 +31,7 @@ Metrics/BlockLength:
|
||||||
- config/environments/development.rb
|
- config/environments/development.rb
|
||||||
|
|
||||||
Layout/IndentationConsistency:
|
Layout/IndentationConsistency:
|
||||||
EnforcedStyle: indented_internal_methods
|
EnforcedStyle: normal
|
||||||
|
|
||||||
Layout/MultilineMethodCallIndentation:
|
Layout/MultilineMethodCallIndentation:
|
||||||
EnforcedStyle: indented
|
EnforcedStyle: indented
|
||||||
|
|
|
||||||
|
|
@ -2,4 +2,16 @@
|
||||||
|
|
||||||
class ApplicationController < ActionController::Base
|
class ApplicationController < ActionController::Base
|
||||||
skip_before_action :verify_authenticity_token
|
skip_before_action :verify_authenticity_token
|
||||||
|
|
||||||
|
before_action :ensure_authentication
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def ensure_authentication
|
||||||
|
redirect_to login_path if current_user.blank?
|
||||||
|
end
|
||||||
|
|
||||||
|
def current_user
|
||||||
|
@current_user ||= User.find_by(id: session[:current_user_id])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
class AuthenticateController < ApplicationController
|
|
||||||
def create
|
|
||||||
# Enable authentication here
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class ConversationsController < ApplicationController
|
||||||
|
def index; end
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class SessionsController < ApplicationController
|
||||||
|
skip_before_action :ensure_authentication
|
||||||
|
|
||||||
|
def new; end
|
||||||
|
|
||||||
|
def create
|
||||||
|
user = User.find_or_initialize_by(email: params[:email])
|
||||||
|
if user.authenticate(params[:password])
|
||||||
|
session[:current_user_id] = user.id
|
||||||
|
redirect_to root_path
|
||||||
|
else
|
||||||
|
render :new, status: :unauthorized
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
session[:current_user_id] = nil
|
||||||
|
redirect_to login_path
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>chatbot</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav>
|
||||||
|
<% if @current_user %>
|
||||||
|
<%= form_with url: logout_path do |form| %>
|
||||||
|
<%= form.submit "logout" %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</nav>
|
||||||
|
<main>
|
||||||
|
<%= yield %>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
<%= form_with do |form| %>
|
||||||
|
<%= form.label :email, "email" %>
|
||||||
|
<%= form.text_field :email %>
|
||||||
|
<%= form.label :password, "password" %>
|
||||||
|
<%= form.password_field :password %>
|
||||||
|
<%= form.submit "login" %>
|
||||||
|
<% end %>
|
||||||
|
|
@ -1,5 +1,11 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
Rails.application.routes.draw do
|
Rails.application.routes.draw do
|
||||||
post :authenticate, to: 'authenticate#create'
|
root to: redirect('/conversations')
|
||||||
|
|
||||||
|
get :login, to: 'sessions#new'
|
||||||
|
post :login, to: 'sessions#create'
|
||||||
|
post :logout, to: 'sessions#destroy'
|
||||||
|
|
||||||
|
resources :conversations
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue