Class: CrmAbility
- Inherits:
-
Object
- Object
- CrmAbility
- Includes:
- CanCan::Ability
- Defined in:
- app/models/crm_ability.rb
Overview
Authorization rules for CRM users (Employees only).
Loaded by CrmController via current_ability; never evaluated for customer/
contact portal sessions.
Rules are grouped into private methods matching the domain section they cover.
All methods close over +party+, +account+, and +party_id+ set in +initialize+.
Instance Attribute Summary collapse
-
#account ⇒ Object
readonly
Returns the value of attribute account.
-
#party ⇒ Object
readonly
Returns the value of attribute party.
-
#party_id ⇒ Object
readonly
Returns the value of attribute party_id.
Instance Method Summary collapse
-
#initialize(party) ⇒ CrmAbility
constructor
A new instance of CrmAbility.
Constructor Details
#initialize(party) ⇒ CrmAbility
Returns a new instance of CrmAbility.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'app/models/crm_ability.rb', line 14 def initialize(party) @party = party @account = party&.account return unless account && party.is_a?(Employee) @party_id = party.id # Admin short-circuit: grant everything and return early. if account.has_role?(%w[admin executive_manager]) define_admin_abilities return end # Memoize role checks so repeated has_role? / is_*? calls don't re-traverse # inherited_role_names for each permission block. @is_employee = account.is_employee? @is_manager = account.is_manager? @is_accounting = account.has_role?(%w[accounting_rep accounting_manager]) @is_accounting_manager = account.is_accounting_manager? @is_sales_manager = account.is_sales_manager? @is_sales_rep = account.is_sales_rep? @is_warehouse = account.has_role?(%w[warehouse_rep warehouse_manager accounting_manager item_manager]) @is_item_manager = account.is_item_manager? @is_marketing_rep = account.has_role?(%w[marketing_rep marketing_manager]) @is_hr_manager = account.is_hr_manager? @is_hr_rep = account.is_hr_rep? @is_pto_manager = account.is_pto_manager? @is_pto_rep = account.is_pto_rep? @is_engineering_mgr = account.is_engineering_manager? @is_engineering_rep = account.is_engineering_rep? @is_document_maint = account.is_document_maintainer? @is_edi_admin = account.is_edi_admin? define_misc_employee_abilities define_accounting_abilities define_order_credit_abilities define_warehouse_abilities define_sales_manager_abilities define_sales_rep_abilities define_marketing_abilities define_technical_support_abilities define_item_manager_abilities define_data_specialist_abilities define_customer_ops_abilities define_edi_abilities define_hr_abilities define_pto_abilities define_training_abilities define_engineering_abilities define_document_maintainer_abilities define_manager_abilities define_employee_abilities if @is_employee define_receiver_abilities define_miscellaneous_abilities end |
Instance Attribute Details
#account ⇒ Object (readonly)
Returns the value of attribute account.
12 13 14 |
# File 'app/models/crm_ability.rb', line 12 def account @account end |
#party ⇒ Object (readonly)
Returns the value of attribute party.
12 13 14 |
# File 'app/models/crm_ability.rb', line 12 def party @party end |
#party_id ⇒ Object (readonly)
Returns the value of attribute party_id.
12 13 14 |
# File 'app/models/crm_ability.rb', line 12 def party_id @party_id end |