Class: Decidim::DecidimAwesome::Authorizer

Inherits:
Object
  • Object
show all
Defined in:
lib/decidim/decidim_awesome/authorizer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(user, admin_authorizations) ⇒ Authorizer

Returns a new instance of Authorizer.



6
7
8
9
10
11
# File 'lib/decidim/decidim_awesome/authorizer.rb', line 6

def initialize(user, admin_authorizations)
  @user = user
  @admin_authorizations = admin_authorizations
  @admin_authorizations = [] if @admin_authorizations.blank? || !admin_authorizations.is_a?(Array)
  @organization = user.organization
end

Instance Attribute Details

#admin_authorizationsObject (readonly)

Returns the value of attribute admin_authorizations.



12
13
14
# File 'lib/decidim/decidim_awesome/authorizer.rb', line 12

def admin_authorizations
  @admin_authorizations
end

#organizationObject (readonly)

Returns the value of attribute organization.



12
13
14
# File 'lib/decidim/decidim_awesome/authorizer.rb', line 12

def organization
  @organization
end

#userObject (readonly)

Returns the value of attribute user.



12
13
14
# File 'lib/decidim/decidim_awesome/authorizer.rb', line 12

def user
  @user
end

Instance Method Details

#authorizationsObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/decidim/decidim_awesome/authorizer.rb', line 14

def authorizations
  return @authorizations if defined?(@authorizations)

  @authorizations = organization.available_authorizations.filter_map do |name|
    workflow = Decidim::Verifications.find_workflow_manifest(name)
    next unless workflow

    authorization = Decidim::Authorization.find_by(user:, name:)
    {
      name:,
      fullname: workflow.fullname,
      granted: authorization&.granted?,
      pending: authorization.present? && !authorization.granted?,
      managed: admin_authorizations.include?(name.to_s)
    }
  end
  @authorizations = @authorizations.sort_by { |i| i[:managed] ? 0 : 1 }
end