PageRenderTime 1424ms CodeModel.GetById 9ms RepoModel.GetById 0ms app.codeStats 0ms

/backend/app/controllers/spree/admin/users_controller.rb

https://github.com/fig/spree
Ruby | 109 lines | 89 code | 19 blank | 1 comment | 12 complexity | aaf41f25e6cf23611c82619007d8264f MD5 | raw file
Possible License(s): BSD-3-Clause
  1. module Spree
  2. module Admin
  3. class UsersController < ResourceController
  4. rescue_from Spree::Core::DestroyWithOrdersError, with: :user_destroy_with_orders_error
  5. after_action :sign_in_if_change_own_password, only: :update
  6. def show
  7. redirect_to edit_admin_user_path(@user)
  8. end
  9. def create
  10. @user = Spree.user_class.new(user_params)
  11. if @user.save
  12. flash.now[:success] = flash_message_for(@user, :successfully_created)
  13. render :edit
  14. else
  15. render :new
  16. end
  17. end
  18. def update
  19. if params[:user][:password].blank? && params[:user][:password_confirmation].blank?
  20. params[:user].delete(:password)
  21. params[:user].delete(:password_confirmation)
  22. end
  23. if @user.update_attributes(user_params)
  24. flash.now[:success] = Spree.t(:account_updated)
  25. end
  26. render :edit
  27. end
  28. def addresses
  29. if request.put?
  30. if @user.update_attributes(user_params)
  31. flash.now[:success] = Spree.t(:account_updated)
  32. end
  33. render :addresses
  34. end
  35. end
  36. def orders
  37. params[:q] ||= {}
  38. @search = Spree::Order.reverse_chronological.ransack(params[:q].merge(user_id_eq: @user.id))
  39. @orders = @search.result.page(params[:page])
  40. end
  41. def items
  42. params[:q] ||= {}
  43. @search = Spree::Order.includes(
  44. line_items: {
  45. variant: [:product, { option_values: :option_type }]
  46. }).ransack(params[:q].merge(user_id_eq: @user.id))
  47. @orders = @search.result.page(params[:page])
  48. end
  49. def generate_api_key
  50. if @user.generate_spree_api_key!
  51. flash[:success] = Spree.t('api.key_generated')
  52. end
  53. redirect_to edit_admin_user_path(@user)
  54. end
  55. def clear_api_key
  56. if @user.clear_spree_api_key!
  57. flash[:success] = Spree.t('api.key_cleared')
  58. end
  59. redirect_to edit_admin_user_path(@user)
  60. end
  61. def model_class
  62. Spree.user_class
  63. end
  64. protected
  65. def collection
  66. return @collection if @collection.present?
  67. @collection = super
  68. @search = @collection.ransack(params[:q])
  69. @collection = @search.result.page(params[:page]).per(Spree::Config[:admin_users_per_page])
  70. end
  71. private
  72. def user_params
  73. params.require(:user).permit(permitted_user_attributes |
  74. [spree_role_ids: [],
  75. ship_address_attributes: permitted_address_attributes,
  76. bill_address_attributes: permitted_address_attributes])
  77. end
  78. # handling raise from Spree::Admin::ResourceController#destroy
  79. def user_destroy_with_orders_error
  80. invoke_callbacks(:destroy, :fails)
  81. render status: :forbidden, plain: Spree.t(:error_user_destroy_with_orders)
  82. end
  83. def sign_in_if_change_own_password
  84. if try_spree_current_user == @user && @user.password.present?
  85. sign_in(@user, event: :authentication, bypass: true)
  86. end
  87. end
  88. end
  89. end
  90. end