app/models/spree/ability.rb
# Implementation class for Cancan gem. Instead of overriding this class, consider adding new permissions # using the special +register_ability+ method which allows extensions to add their own abilities. # # See http://github.com/ryanb/cancan for more details on cancan. require 'cancan' module Spree class Ability include CanCan::Ability class_attribute :abilities self.abilities = Set.new attr_reader :user # Allows us to go beyond the standard cancan initialize method which makes it difficult for engines to # modify the default +Ability+ of an application. The +ability+ argument must be a class that includes # the +CanCan::Ability+ module. The registered ability should behave properly as a stand-alone class # and therefore should be easy to test in isolation. def self.register_ability(ability) self.abilities.add(ability) end def self.remove_ability(ability) self.abilities.delete(ability) end def initialize(current_user) @user = current_user || Spree.user_class.new alias_actions activate_permission_sets register_extension_abilities end private def alias_actions clear_aliased_actions # override cancan default aliasing (we don't want to differentiate between read and index) alias_action :delete, to: :destroy alias_action :edit, to: :update alias_action :new, to: :create alias_action :new_action, to: :create alias_action :show, to: :read alias_action :index, :read, to: :display end # Before, this was the only way to extend this ability. Permission sets have been added since. # It is recommended to use them instead for extension purposes if possible. def register_extension_abilities Ability.abilities.each do |clazz| ability = clazz.send(:new, user) merge(ability) end end def activate_permission_sets Spree::RoleConfiguration.instance.activate_permissions! self, user end end end
Source Files
- app/controllers/spree/base_controller.rb
- app/helpers/spree/base_helper.rb
- app/helpers/spree/checkout_helper.rb
- app/helpers/spree/orders_helper.rb
- app/helpers/spree/products_helper.rb
- app/helpers/spree/store_helper.rb
- app/helpers/spree/taxons_helper.rb
- app/mailers/spree/base_mailer.rb
- app/mailers/spree/carton_mailer.rb
- app/mailers/spree/order_mailer.rb
- app/mailers/spree/reimbursement_mailer.rb
- app/mailers/spree/test_mailer.rb
- app/models/concerns/spree/adjustment_source.rb
- app/models/concerns/spree/calculated_adjustments.rb
- app/models/concerns/spree/default_price.rb
- app/models/concerns/spree/display_money.rb
- app/models/concerns/spree/named_type.rb
- app/models/concerns/spree/ordered_property_value_list.rb
- app/models/concerns/spree/ransackable_attributes.rb
- app/models/concerns/spree/user_address_book.rb
- app/models/concerns/spree/user_api_authentication.rb
- app/models/concerns/spree/user_methods.rb
- app/models/concerns/spree/user_payment_source.rb
- app/models/concerns/spree/user_reporting.rb
- app/models/spree/ability.rb
- app/models/spree/address.rb
- app/models/spree/adjustment.rb
- app/models/spree/adjustment_reason.rb
- app/models/spree/app_configuration.rb
- app/models/spree/asset.rb
- app/models/spree/base.rb
- app/models/spree/billing_integration.rb
- app/models/spree/calculator.rb
- app/models/spree/calculator/default_tax.rb
- app/models/spree/calculator/flat_percent_item_total.rb
- app/models/spree/calculator/flat_rate.rb
- app/models/spree/calculator/flexi_rate.rb
- app/models/spree/calculator/free_shipping.rb
- app/models/spree/calculator/percent_on_line_item.rb
- app/models/spree/calculator/percent_per_item.rb
- app/models/spree/calculator/price_sack.rb
- app/models/spree/calculator/returns/default_refund_amount.rb
- app/models/spree/calculator/shipping/flat_percent_item_total.rb
- app/models/spree/calculator/shipping/flat_rate.rb
- app/models/spree/calculator/shipping/flexi_rate.rb
- app/models/spree/calculator/shipping/per_item.rb
- app/models/spree/calculator/shipping/price_sack.rb
- app/models/spree/calculator/tiered_flat_rate.rb
- app/models/spree/calculator/tiered_percent.rb
- app/models/spree/carton.rb
- app/models/spree/classification.rb
- app/models/spree/country.rb
- app/models/spree/credit_card.rb
- app/models/spree/customer_return.rb
- app/models/spree/exchange.rb
- app/models/spree/gateway.rb
- app/models/spree/gateway/bogus.rb
- app/models/spree/gateway/bogus_simple.rb
- app/models/spree/image.rb
- app/models/spree/inventory_unit.rb
- app/models/spree/item_adjustments.rb
- app/models/spree/legacy_user.rb
- app/models/spree/line_item.rb
- app/models/spree/line_item_action.rb
- app/models/spree/log_entry.rb
- app/models/spree/option_type.rb
- app/models/spree/option_type_prototype.rb
- app/models/spree/option_value.rb
- app/models/spree/option_values_variant.rb
- app/models/spree/order.rb
- app/models/spree/order/checkout.rb
- app/models/spree/order/payments.rb
- app/models/spree/order_cancellations.rb
- app/models/spree/order_capturing.rb
- app/models/spree/order_contents.rb
- app/models/spree/order_inventory.rb
- app/models/spree/order_merger.rb
- app/models/spree/order_mutex.rb
- app/models/spree/order_promotion.rb
- app/models/spree/order_shipping.rb
- app/models/spree/order_stock_location.rb
- app/models/spree/order_update_attributes.rb
- app/models/spree/order_updater.rb
- app/models/spree/payment.rb
- app/models/spree/payment/processing.rb
- app/models/spree/payment_capture_event.rb
- app/models/spree/payment_create.rb
- app/models/spree/payment_method.rb
- app/models/spree/payment_method/check.rb
- app/models/spree/payment_method/store_credit.rb
- app/models/spree/preference.rb
- app/models/spree/preferences/configuration.rb
- app/models/spree/preferences/preferable.rb
- app/models/spree/preferences/preferable_class_methods.rb
- app/models/spree/preferences/scoped_store.rb
- app/models/spree/preferences/static_model_preferences.rb
- app/models/spree/preferences/statically_configurable.rb
- app/models/spree/preferences/store.rb
- app/models/spree/price.rb
- app/models/spree/product.rb
- app/models/spree/product/scopes.rb
- app/models/spree/product_option_type.rb
- app/models/spree/product_promotion_rule.rb
- app/models/spree/product_property.rb
- app/models/spree/product_scope/scopes.rb
- app/models/spree/promotion.rb
- app/models/spree/promotion/actions/create_adjustment.rb
- app/models/spree/promotion/actions/create_item_adjustments.rb
- app/models/spree/promotion/actions/create_quantity_adjustments.rb
- app/models/spree/promotion/actions/free_shipping.rb
- app/models/spree/promotion/rules/first_order.rb
- app/models/spree/promotion/rules/first_repeat_purchase_since.rb
- app/models/spree/promotion/rules/item_total.rb
- app/models/spree/promotion/rules/nth_order.rb
- app/models/spree/promotion/rules/one_use_per_user.rb
- app/models/spree/promotion/rules/option_value.rb
- app/models/spree/promotion/rules/product.rb
- app/models/spree/promotion/rules/taxon.rb
- app/models/spree/promotion/rules/user.rb
- app/models/spree/promotion/rules/user_logged_in.rb
- app/models/spree/promotion_action.rb
- app/models/spree/promotion_builder.rb
- app/models/spree/promotion_category.rb
- app/models/spree/promotion_chooser.rb
- app/models/spree/promotion_code.rb
- app/models/spree/promotion_code/code_builder.rb
- app/models/spree/promotion_handler/cart.rb
- app/models/spree/promotion_handler/coupon.rb
- app/models/spree/promotion_handler/free_shipping.rb
- app/models/spree/promotion_handler/page.rb
- app/models/spree/promotion_rule.rb
- app/models/spree/promotion_rule_taxon.rb
- app/models/spree/promotion_rule_user.rb
- app/models/spree/property.rb
- app/models/spree/property_prototype.rb
- app/models/spree/prototype.rb
- app/models/spree/prototype_taxon.rb
- app/models/spree/refund.rb
- app/models/spree/refund_reason.rb
- app/models/spree/reimbursement.rb
- app/models/spree/reimbursement/credit.rb
- app/models/spree/reimbursement/reimbursement_type_engine.rb
- app/models/spree/reimbursement/reimbursement_type_validator.rb
- app/models/spree/reimbursement_performer.rb
- app/models/spree/reimbursement_tax_calculator.rb
- app/models/spree/reimbursement_type.rb
- app/models/spree/reimbursement_type/credit.rb
- app/models/spree/reimbursement_type/exchange.rb
- app/models/spree/reimbursement_type/original_payment.rb
- app/models/spree/reimbursement_type/reimbursement_helpers.rb
- app/models/spree/reimbursement_type/store_credit.rb
- app/models/spree/return_authorization.rb
- app/models/spree/return_item.rb
- app/models/spree/return_item/eligibility_validator/base_validator.rb
- app/models/spree/return_item/eligibility_validator/default.rb
- app/models/spree/return_item/eligibility_validator/inventory_shipped.rb
- app/models/spree/return_item/eligibility_validator/no_reimbursements.rb
- app/models/spree/return_item/eligibility_validator/order_completed.rb
- app/models/spree/return_item/eligibility_validator/rma_required.rb
- app/models/spree/return_item/eligibility_validator/time_since_purchase.rb
- app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb
- app/models/spree/return_item/exchange_variant_eligibility/same_product.rb
- app/models/spree/return_reason.rb
- app/models/spree/returns_calculator.rb
- app/models/spree/role.rb
- app/models/spree/role_user.rb
- app/models/spree/shipment.rb
- app/models/spree/shipping_calculator.rb
- app/models/spree/shipping_category.rb
- app/models/spree/shipping_manifest.rb
- app/models/spree/shipping_method.rb
- app/models/spree/shipping_method_category.rb
- app/models/spree/shipping_method_zone.rb
- app/models/spree/shipping_rate.rb
- app/models/spree/state.rb
- app/models/spree/state_change.rb
- app/models/spree/stock/adjuster.rb
- app/models/spree/stock/availability_validator.rb
- app/models/spree/stock/content_item.rb
- app/models/spree/stock/coordinator.rb
- app/models/spree/stock/differentiator.rb
- app/models/spree/stock/estimator.rb
- app/models/spree/stock/inventory_unit_builder.rb
- app/models/spree/stock/inventory_validator.rb
- app/models/spree/stock/package.rb
- app/models/spree/stock/packer.rb
- app/models/spree/stock/prioritizer.rb
- app/models/spree/stock/quantifier.rb
- app/models/spree/stock/shipping_rate_selector.rb
- app/models/spree/stock/shipping_rate_sorter.rb
- app/models/spree/stock/splitter/backordered.rb
- app/models/spree/stock/splitter/base.rb
- app/models/spree/stock/splitter/shipping_category.rb
- app/models/spree/stock/splitter/weight.rb
- app/models/spree/stock_item.rb
- app/models/spree/stock_location.rb
- app/models/spree/stock_movement.rb
- app/models/spree/stock_transfer.rb
- app/models/spree/store.rb
- app/models/spree/store_credit.rb
- app/models/spree/store_credit_category.rb
- app/models/spree/store_credit_event.rb
- app/models/spree/store_credit_type.rb
- app/models/spree/store_credit_update_reason.rb
- app/models/spree/store_payment_method.rb
- app/models/spree/tax_category.rb
- app/models/spree/tax_rate.rb
- app/models/spree/taxon.rb
- app/models/spree/taxonomy.rb
- app/models/spree/tracker.rb
- app/models/spree/transfer_item.rb
- app/models/spree/unit_cancel.rb
- app/models/spree/user_address.rb
- app/models/spree/user_class_handle.rb
- app/models/spree/user_stock_location.rb
- app/models/spree/validations/db_maximum_length_validator.rb
- app/models/spree/variant.rb
- app/models/spree/variant/scopes.rb
- app/models/spree/variant_property_rule.rb
- app/models/spree/variant_property_rule_condition.rb
- app/models/spree/variant_property_rule_value.rb
- app/models/spree/zone.rb
- app/models/spree/zone_member.rb
- lib/generators/spree/custom_user/custom_user_generator.rb
- lib/generators/spree/dummy/dummy_generator.rb
- lib/generators/spree/dummy/templates/initializers/custom_user.rb
- lib/generators/spree/dummy/templates/initializers/devise.rb
- lib/generators/spree/dummy/templates/rails/application.rb
- lib/generators/spree/dummy/templates/rails/boot.rb
- lib/generators/spree/dummy/templates/rails/routes.rb
- lib/generators/spree/dummy/templates/rails/test.rb
- lib/generators/spree/install/install_generator.rb
- lib/generators/spree/install/templates/config/initializers/spree.rb
- lib/solidus_core.rb
- lib/spree/core.rb
- lib/spree/core/controller_helpers/auth.rb
- lib/spree/core/controller_helpers/common.rb
- lib/spree/core/controller_helpers/order.rb
- lib/spree/core/controller_helpers/payment_parameters.rb
- lib/spree/core/controller_helpers/respond_with.rb
- lib/spree/core/controller_helpers/search.rb
- lib/spree/core/controller_helpers/store.rb
- lib/spree/core/controller_helpers/strong_parameters.rb
- lib/spree/core/current_store.rb
- lib/spree/core/delegate_belongs_to.rb
- lib/spree/core/engine.rb
- lib/spree/core/environment.rb
- lib/spree/core/environment/calculators.rb
- lib/spree/core/environment_extension.rb
- lib/spree/core/importer.rb
- lib/spree/core/importer/order.rb
- lib/spree/core/importer/product.rb
- lib/spree/core/permalinks.rb
- lib/spree/core/product_duplicator.rb
- lib/spree/core/product_filters.rb
- lib/spree/core/role_configuration.rb
- lib/spree/core/routes.rb
- lib/spree/core/search/base.rb
- lib/spree/core/search/variant.rb
- lib/spree/core/stock_configuration.rb
- lib/spree/core/unreturned_item_charger.rb
- lib/spree/core/validators/email.rb
- lib/spree/core/version.rb
- lib/spree/deprecation.rb
- lib/spree/i18n.rb
- lib/spree/localized_number.rb
- lib/spree/mailer_previews/carton_preview.rb
- lib/spree/mailer_previews/order_preview.rb
- lib/spree/migrations.rb
- lib/spree/money.rb
- lib/spree/permission_sets.rb
- lib/spree/permission_sets/base.rb
- lib/spree/permission_sets/configuration_display.rb
- lib/spree/permission_sets/configuration_management.rb
- lib/spree/permission_sets/dashboard_display.rb
- lib/spree/permission_sets/default_customer.rb
- lib/spree/permission_sets/order_display.rb
- lib/spree/permission_sets/order_management.rb
- lib/spree/permission_sets/product_display.rb
- lib/spree/permission_sets/product_management.rb
- lib/spree/permission_sets/promotion_display.rb
- lib/spree/permission_sets/promotion_management.rb
- lib/spree/permission_sets/report_display.rb
- lib/spree/permission_sets/restricted_stock_display.rb
- lib/spree/permission_sets/restricted_stock_management.rb
- lib/spree/permission_sets/restricted_stock_transfer_display.rb
- lib/spree/permission_sets/restricted_stock_transfer_management.rb
- lib/spree/permission_sets/stock_display.rb
- lib/spree/permission_sets/stock_management.rb
- lib/spree/permission_sets/stock_transfer_display.rb
- lib/spree/permission_sets/stock_transfer_management.rb
- lib/spree/permission_sets/super_user.rb
- lib/spree/permission_sets/user_display.rb
- lib/spree/permission_sets/user_management.rb
- lib/spree/permitted_attributes.rb
- lib/spree/promo/environment.rb
- lib/spree/responder.rb
- lib/spree/testing_support/ability_helpers.rb
- lib/spree/testing_support/authorization_helpers.rb
- lib/spree/testing_support/bar_ability.rb
- lib/spree/testing_support/caching.rb
- lib/spree/testing_support/capybara_ext.rb
- lib/spree/testing_support/common_rake.rb
- lib/spree/testing_support/controller_requests.rb
- lib/spree/testing_support/extension_rake.rb
- lib/spree/testing_support/factories.rb
- lib/spree/testing_support/factories/address_factory.rb
- lib/spree/testing_support/factories/adjustment_factory.rb
- lib/spree/testing_support/factories/adjustment_reason_factory.rb
- lib/spree/testing_support/factories/calculator_factory.rb
- lib/spree/testing_support/factories/carton_factory.rb
- lib/spree/testing_support/factories/country_factory.rb
- lib/spree/testing_support/factories/credit_card_factory.rb
- lib/spree/testing_support/factories/customer_return_factory.rb
- lib/spree/testing_support/factories/image_factory.rb
- lib/spree/testing_support/factories/inventory_unit_factory.rb
- lib/spree/testing_support/factories/line_item_factory.rb
- lib/spree/testing_support/factories/option_type_factory.rb
- lib/spree/testing_support/factories/option_value_factory.rb
- lib/spree/testing_support/factories/order_factory.rb
- lib/spree/testing_support/factories/order_promotion_factory.rb
- lib/spree/testing_support/factories/payment_factory.rb
- lib/spree/testing_support/factories/payment_method_factory.rb
- lib/spree/testing_support/factories/price_factory.rb
- lib/spree/testing_support/factories/product_factory.rb
- lib/spree/testing_support/factories/product_option_type_factory.rb
- lib/spree/testing_support/factories/product_property_factory.rb
- lib/spree/testing_support/factories/promotion_category_factory.rb
- lib/spree/testing_support/factories/promotion_code_factory.rb
- lib/spree/testing_support/factories/promotion_factory.rb
- lib/spree/testing_support/factories/property_factory.rb
- lib/spree/testing_support/factories/prototype_factory.rb
- lib/spree/testing_support/factories/refund_factory.rb
- lib/spree/testing_support/factories/refund_reason_factory.rb
- lib/spree/testing_support/factories/reimbursement_factory.rb
- lib/spree/testing_support/factories/reimbursement_type_factory.rb
- lib/spree/testing_support/factories/return_authorization_factory.rb
- lib/spree/testing_support/factories/return_item_factory.rb
- lib/spree/testing_support/factories/return_reason_factory.rb
- lib/spree/testing_support/factories/role_factory.rb
- lib/spree/testing_support/factories/shipment_factory.rb
- lib/spree/testing_support/factories/shipping_category_factory.rb
- lib/spree/testing_support/factories/shipping_method_factory.rb
- lib/spree/testing_support/factories/shipping_rate_factory.rb
- lib/spree/testing_support/factories/state_factory.rb
- lib/spree/testing_support/factories/stock_item_factory.rb
- lib/spree/testing_support/factories/stock_location_factory.rb
- lib/spree/testing_support/factories/stock_movement_factory.rb
- lib/spree/testing_support/factories/stock_package_factory.rb
- lib/spree/testing_support/factories/stock_packer_factory.rb
- lib/spree/testing_support/factories/stock_transfer_factory.rb
- lib/spree/testing_support/factories/store_credit_category_factory.rb
- lib/spree/testing_support/factories/store_credit_event_factory.rb
- lib/spree/testing_support/factories/store_credit_factory.rb
- lib/spree/testing_support/factories/store_credit_type_factory.rb
- lib/spree/testing_support/factories/store_credit_update_reason_factory.rb
- lib/spree/testing_support/factories/store_factory.rb
- lib/spree/testing_support/factories/tax_category_factory.rb
- lib/spree/testing_support/factories/tax_rate_factory.rb
- lib/spree/testing_support/factories/taxon_factory.rb
- lib/spree/testing_support/factories/taxonomy_factory.rb
- lib/spree/testing_support/factories/tracker_factory.rb
- lib/spree/testing_support/factories/user_factory.rb
- lib/spree/testing_support/factories/variant_factory.rb
- lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb
- lib/spree/testing_support/factories/variant_property_rule_factory.rb
- lib/spree/testing_support/factories/variant_property_rule_value_factory.rb
- lib/spree/testing_support/factories/zone_factory.rb
- lib/spree/testing_support/flash.rb
- lib/spree/testing_support/i18n.rb
- lib/spree/testing_support/order_walkthrough.rb
- lib/spree/testing_support/preferences.rb
- lib/spree/testing_support/sequences.rb
- lib/spree/testing_support/url_helpers.rb
- lib/spree_core.rb