Class: Decidim::DefaultPermissions

Inherits:
Object
  • Object
show all
Includes:
UserRoleChecker
Defined in:
decidim-core/app/permissions/decidim/default_permissions.rb

Overview

Default permissions class for all components and spaces. It deauthorizes all actions by any kind of user. Also works as a default implementation so other components can inherit from it and get some convenience methods. Delegates the admin permission check on :subject and :action to the permissions of each module.

Instance Method Summary collapse

Constructor Details

#initialize(user, permission_action, context = {}) ⇒ DefaultPermissions

Returns a new instance of DefaultPermissions.



11
12
13
14
15
# File 'decidim-core/app/permissions/decidim/default_permissions.rb', line 11

def initialize(user, permission_action, context = {})
  @user = user
  @permission_action = permission_action
  @context = context
end

Instance Method Details

#permissionsObject



17
18
19
20
21
22
23
24
25
26
# File 'decidim-core/app/permissions/decidim/default_permissions.rb', line 17

def permissions
  return permission_action if permission_action.scope != target_scope

  return permission_action unless subject == target_subject

  permission_method = "can_#{action}?"
  toggle_allow(send(permission_method)) if respond_to?(permission_method, true)

  permission_action
end