From 4f7fdf789f51c9499582d264811e211fe5ad170b Mon Sep 17 00:00:00 2001 From: djsegal Date: Fri, 12 Feb 2016 15:30:29 -0500 Subject: [PATCH] Refactor resource_data out into app controller --- .../devise_token_auth/application_controller.rb | 14 ++++++++++++++ .../devise_token_auth/passwords_controller.rb | 9 ++++----- .../registrations_controller.rb | 17 ++++++----------- .../passwords_controller_test.rb | 4 ++-- 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/app/controllers/devise_token_auth/application_controller.rb b/app/controllers/devise_token_auth/application_controller.rb index 3bdc74d23..18e930cb9 100644 --- a/app/controllers/devise_token_auth/application_controller.rb +++ b/app/controllers/devise_token_auth/application_controller.rb @@ -2,6 +2,14 @@ module DeviseTokenAuth class ApplicationController < DeviseController include DeviseTokenAuth::Concerns::SetUserByToken + def resource_data + response_data = @resource.as_json + if is_json_api + response_data['type'] = @resource.class.name.parameterize + end + response_data + end + def resource_errors return @resource.errors.to_hash.merge(full_messages: @resource.errors.full_messages) end @@ -21,5 +29,11 @@ def resource_class(m=nil) mapping.to end + + def is_json_api + return false unless defined?(ActiveModel::Serializer) + return ActiveModel::Serializer.config.adapter == :json_api + end + end end diff --git a/app/controllers/devise_token_auth/passwords_controller.rb b/app/controllers/devise_token_auth/passwords_controller.rb index 49b48f79b..dce44a8cb 100644 --- a/app/controllers/devise_token_auth/passwords_controller.rb +++ b/app/controllers/devise_token_auth/passwords_controller.rb @@ -160,7 +160,7 @@ def render_create_error_missing_redirect_url def render_create_error_not_allowed_redirect_url render json: { status: 'error', - data: @resource.as_json, + data: resource_data, errors: [I18n.t("devise_token_auth.passwords.not_allowed_redirect_url", redirect_url: @redirect_url)] }, status: 422 end @@ -168,6 +168,7 @@ def render_create_error_not_allowed_redirect_url def render_create_success render json: { success: true, + data: resource_data, message: I18n.t("devise_token_auth.passwords.sended", email: @email) } end @@ -207,10 +208,8 @@ def render_update_error_missing_password def render_update_success render json: { success: true, - data: { - user: @resource, - message: I18n.t("devise_token_auth.passwords.successfully_updated") - } + data: resource_data, + message: I18n.t("devise_token_auth.passwords.successfully_updated") } end diff --git a/app/controllers/devise_token_auth/registrations_controller.rb b/app/controllers/devise_token_auth/registrations_controller.rb index 8b7a333dd..cf337c51f 100644 --- a/app/controllers/devise_token_auth/registrations_controller.rb +++ b/app/controllers/devise_token_auth/registrations_controller.rb @@ -110,7 +110,7 @@ def account_update_params def render_create_error_missing_confirm_success_url render json: { status: 'error', - data: @resource.as_json, + data: resource_data, errors: [I18n.t("devise_token_auth.registrations.missing_confirm_success_url")] }, status: 422 end @@ -118,27 +118,22 @@ def render_create_error_missing_confirm_success_url def render_create_error_redirect_url_not_allowed render json: { status: 'error', - data: @resource.as_json, + data: resource_data, errors: [I18n.t("devise_token_auth.registrations.redirect_url_not_allowed", redirect_url: @redirect_url)] }, status: 422 end def render_create_success - response_data = @resource.as_json - if defined?(ActiveModel::Serializer) && - ActiveModel::Serializer.config.adapter == :json_api - response_data['type'] = @resource.class.name.parameterize - end render json: { status: 'success', - data: response_data + data: resource_data } end def render_create_error render json: { status: 'error', - data: @resource.as_json, + data: resource_data, errors: resource_errors }, status: 422 end @@ -146,7 +141,7 @@ def render_create_error def render_create_error_email_already_exists render json: { status: 'error', - data: @resource.as_json, + data: resource_data, errors: [I18n.t("devise_token_auth.registrations.email_already_exists", email: @resource.email)] }, status: 422 end @@ -154,7 +149,7 @@ def render_create_error_email_already_exists def render_update_success render json: { status: 'success', - data: @resource.as_json + data: resource_data } end diff --git a/test/controllers/devise_token_auth/passwords_controller_test.rb b/test/controllers/devise_token_auth/passwords_controller_test.rb index 74377035c..00cb1f6eb 100644 --- a/test/controllers/devise_token_auth/passwords_controller_test.rb +++ b/test/controllers/devise_token_auth/passwords_controller_test.rb @@ -380,8 +380,8 @@ class DeviseTokenAuth::PasswordsControllerTest < ActionController::TestCase end test "request should return success message" do - assert @data["data"]["message"] - assert_equal @data["data"]["message"], I18n.t("devise_token_auth.passwords.successfully_updated") + assert @data["message"] + assert_equal @data["message"], I18n.t("devise_token_auth.passwords.successfully_updated") end test "new password should authenticate user" do