Class: Decidim::Abilities::BaseAbility

Inherits:
Object
  • Object
show all
Includes:
CanCan::Ability
Defined in:
app/models/decidim/abilities/base_ability.rb

Overview

Defines the abilities for a User. Intended to be used with ‘cancancan`.

Instance Method Summary collapse

Constructor Details

#initialize(user, context = {}) ⇒ BaseAbility

Initializes the ability class for the given user. Automatically merges injected abilities fmor the configuration. In order to inject more abilities, add this code in the ‘engine.rb` file of your own engine, for example, inside an initializer:

Decidim.configure do |config|
  config.abilities << Decidim::MyEngine::Abilities::MyAbility
end

Note that, in development, this will force you to restart the server every time you change things in your ability classes.

user - the User that needs its abilities checked. context - a Hash with some context related to the current request.



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/models/decidim/abilities/base_ability.rb', line 23

def initialize(user, context = {})
  Decidim.abilities.each do |ability|
    merge ability.constantize.new(user, context)
  end

  can :manage, Authorization do |authorization|
    authorization.user == user
  end

  can :manage, Follow do |follow|
    follow.user == user
  end

  can :manage, Notification do |notification|
    notification.user == user
  end
end