From 111673574764e0b5f400944cdea70e68a37caa6d Mon Sep 17 00:00:00 2001 From: butumusho Date: Wed, 20 Jul 2016 16:54:18 +0300 Subject: [PATCH 1/3] Added #destroy action. --- app/controllers/application_controller.rb | 6 ++++++ app/controllers/sessions_controller.rb | 6 +++++- app/services/session.rb | 4 ++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index cbd11ad..4ad8c27 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -21,6 +21,12 @@ def current_user end end + def destroy + resource.destroy! + + head :ok + end + private def authenticate! current_user || raise(AuthorizationError) diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index d31c779..6688c4b 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -7,6 +7,10 @@ def resource end def resource_params - params.require(:session).permit(:email, :password) + if params[:session] + params.require(:session).permit(:email, :password) + else + current_user.attributes + end end end diff --git a/app/services/session.rb b/app/services/session.rb index 13a4cea..e154713 100644 --- a/app/services/session.rb +++ b/app/services/session.rb @@ -27,6 +27,10 @@ def save user.create_auth_token && true end + def destroy! + user.auth_token.destroy! + end + def as_json *args { auth_token: auth_token_value } end From 5b621e6f6cc5f56ed047525466dc24639135b65c Mon Sep 17 00:00:00 2001 From: butumusho Date: Wed, 20 Jul 2016 20:09:05 +0300 Subject: [PATCH 2/3] Refactored destroy action. --- app/controllers/application_controller.rb | 2 +- app/controllers/sessions_controller.rb | 12 ++++++------ app/services/session.rb | 2 ++ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 4ad8c27..490ccfd 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -12,7 +12,7 @@ class ApplicationController < ActionController::Base end def create - render :errors unless resource.save + render :errors unless build_resource.save end def current_user diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 6688c4b..c96ad80 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -2,15 +2,15 @@ class SessionsController < ApplicationController skip_before_action :authenticate!, only: :create private - def resource + def build_resource @session ||= Session.new resource_params end + def resource + @session ||= Session.new user: current_user + end + def resource_params - if params[:session] - params.require(:session).permit(:email, :password) - else - current_user.attributes - end + params.require(:session).permit(:email, :password) end end diff --git a/app/services/session.rb b/app/services/session.rb index e154713..2d1cc9f 100644 --- a/app/services/session.rb +++ b/app/services/session.rb @@ -8,6 +8,8 @@ class Session def initialize params={} params = params&.symbolize_keys || {} + @user = params[:user] + @email = params[:email] @password = params[:password] From 545dd803cc126b80890df4d9f1c7da461b62191f Mon Sep 17 00:00:00 2001 From: butumusho Date: Thu, 21 Jul 2016 18:08:10 +0300 Subject: [PATCH 3/3] Added destroy action right to Sessions Controller. --- app/controllers/application_controller.rb | 14 +++++++------- app/controllers/sessions_controller.rb | 10 ++++++---- app/services/session.rb | 6 ------ 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 490ccfd..2ebdaa6 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -12,13 +12,7 @@ class ApplicationController < ActionController::Base end def create - render :errors unless build_resource.save - end - - def current_user - authenticate_or_request_with_http_token do |token, options| - @current_user = User.joins(:auth_token).find_by(auth_tokens: { value: token }) - end + render :errors unless resource.save end def destroy @@ -27,6 +21,12 @@ def destroy head :ok end + def current_user + authenticate_or_request_with_http_token do |token, options| + @current_user = User.joins(:auth_token).find_by(auth_tokens: { value: token }) + end + end + private def authenticate! current_user || raise(AuthorizationError) diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index c96ad80..0e1eabe 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -1,13 +1,15 @@ class SessionsController < ApplicationController skip_before_action :authenticate!, only: :create - private - def build_resource - @session ||= Session.new resource_params + def destroy + current_user.auth_token.destroy! + + head :ok end + private def resource - @session ||= Session.new user: current_user + @session ||= Session.new resource_params end def resource_params diff --git a/app/services/session.rb b/app/services/session.rb index 2d1cc9f..13a4cea 100644 --- a/app/services/session.rb +++ b/app/services/session.rb @@ -8,8 +8,6 @@ class Session def initialize params={} params = params&.symbolize_keys || {} - @user = params[:user] - @email = params[:email] @password = params[:password] @@ -29,10 +27,6 @@ def save user.create_auth_token && true end - def destroy! - user.auth_token.destroy! - end - def as_json *args { auth_token: auth_token_value } end