Sha256: 3765113c739b6ce3b97008844f8200126a21e277722c8f3b495c29ee0649c4e4

Contents?: true

Size: 1.8 KB

Versions: 48

Compression:

Stored size: 1.8 KB

Contents

# frozen_string_literal: true

class Spree::Api::UsersController < Spree::Api::BaseController
  before_action :load_resource, only: [:show, :update, :destroy]

  def index
    user_scope = user_class.accessible_by(current_ability, :show)
    if params[:ids]
      ids = params[:ids].split(",").flatten
      @users = user_scope.where(id: ids)
    else
      @users = user_scope.ransack(params[:q]).result
    end

    @users = paginate(@users.distinct)
    respond_with(@users)
  end

  def show
    respond_with(@user)
  end

  def new
    authorize! :new, user_class
    respond_with(user_class.new)
  end

  def create
    authorize! :create, user_class

    @user = user_class.new(permitted_user_params)

    if @user.save
      respond_with(@user, status: 201, default_template: :show)
    else
      invalid_resource!(@user)
    end
  end

  def update
    authorize! :update, @user

    if @user.update(permitted_user_params)
      respond_with(@user, status: 200, default_template: :show)
    else
      invalid_resource!(@user)
    end
  end

  def destroy
    authorize! :destroy, @user

    destroy_result = if @user.respond_to?(:discard)
      @user.discard
    else
      @user.destroy
    end

    if destroy_result
      respond_with(@user, status: 204)
    else
      invalid_resource!(@user)
    end
  rescue ActiveRecord::DeleteRestrictionError
    render "spree/api/errors/delete_restriction", status: 422
  end

  private

  def user_class
    Spree.user_class
  end

  def load_resource
    @user = user_class.accessible_by(current_ability, :show).find(params[:id])
  end

  def permitted_user_params
    params.require(:user).permit(permitted_user_attributes)
  end

  def permitted_user_attributes
    if action_name == "create" || can?(:update_email, @user)
      super | [:email]
    else
      super
    end
  end
end

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
solidus_api-4.1.6 app/controllers/spree/api/users_controller.rb
solidus_api-4.4.2 app/controllers/spree/api/users_controller.rb
solidus_api-4.4.1 app/controllers/spree/api/users_controller.rb
solidus_api-4.4.0 app/controllers/spree/api/users_controller.rb
solidus_api-4.3.4 app/controllers/spree/api/users_controller.rb
solidus_api-4.2.4 app/controllers/spree/api/users_controller.rb
solidus_api-4.1.5 app/controllers/spree/api/users_controller.rb
solidus_api-4.3.3 app/controllers/spree/api/users_controller.rb
solidus_api-4.3.2 app/controllers/spree/api/users_controller.rb
solidus_api-4.1.4 app/controllers/spree/api/users_controller.rb
solidus_api-4.3.1 app/controllers/spree/api/users_controller.rb
solidus_api-4.3.0 app/controllers/spree/api/users_controller.rb
solidus_api-4.2.3 app/controllers/spree/api/users_controller.rb
solidus_api-4.1.3 app/controllers/spree/api/users_controller.rb
solidus_api-4.0.4 app/controllers/spree/api/users_controller.rb
solidus_api-3.4.6 app/controllers/spree/api/users_controller.rb
solidus_api-4.0.3 app/controllers/spree/api/users_controller.rb
solidus_api-4.1.2 app/controllers/spree/api/users_controller.rb
solidus_api-4.2.2 app/controllers/spree/api/users_controller.rb
solidus_api-3.4.5 app/controllers/spree/api/users_controller.rb