Class: Decidim::DecidimAwesome::AuthorizationGroup

Inherits:
ApplicationRecord
  • Object
show all
Defined in:
app/models/decidim/decidim_awesome/authorization_group.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.authorizations(organization) ⇒ Object



14
15
16
# File 'app/models/decidim/decidim_awesome/authorization_group.rb', line 14

def self.authorizations(organization)
  Decidim::Verifications::Authorizations.new(organization: organization, name: :awesome_authorization_handler, granted: true).query
end

.sync_user_authorization(user) ⇒ Object



18
19
20
21
22
23
24
25
26
# File 'app/models/decidim/decidim_awesome/authorization_group.rb', line 18

def self.sync_user_authorization(user)
  handler = Decidim::AuthorizationHandler.handler_for("awesome_authorization_handler", user: user)

  if handler.valid?
    Decidim::Authorization.create_or_update_from(handler)
  else
    Decidim::Authorization.find_by(user: user, name: "awesome_authorization_handler")&.destroy!
  end
end

Instance Method Details

#authorizations_in_groupObject



41
42
43
# File 'app/models/decidim/decidim_awesome/authorization_group.rb', line 41

def authorizations_in_group
  @authorizations_in_group ||= AuthorizationGroup.authorizations(organization).select { |authorization| authorization.["groups"]&.include?(id.to_s) }
end

#granted_in_groupObject



45
46
47
# File 'app/models/decidim/decidim_awesome/authorization_group.rb', line 45

def granted_in_group
  @granted_in_group ||= organization.users.where(id: authorizations_in_group.pluck(:decidim_user_id))
end

#granted_in_group_countObject



49
50
51
# File 'app/models/decidim/decidim_awesome/authorization_group.rb', line 49

def granted_in_group_count
  @granted_in_group_count ||= granted_in_group.count
end

#members_countObject



37
38
39
# File 'app/models/decidim/decidim_awesome/authorization_group.rb', line 37

def members_count
  @members_count ||= members.count
end

#reset_caches!Object



28
29
30
31
32
33
34
35
# File 'app/models/decidim/decidim_awesome/authorization_group.rb', line 28

def reset_caches!
  @members_count = nil
  @authorizations_in_group = nil
  @granted_in_group = nil
  @granted_in_group_count = nil
  @users = nil
  @users_count = nil
end

#synced?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'app/models/decidim/decidim_awesome/authorization_group.rb', line 61

def synced?
  users.pluck(:id).sort == granted_in_group.pluck(:id).sort
end

#usersObject



53
54
55
# File 'app/models/decidim/decidim_awesome/authorization_group.rb', line 53

def users
  @users ||= organization.users.where(email: members.select(:email))
end

#users_countObject



57
58
59
# File 'app/models/decidim/decidim_awesome/authorization_group.rb', line 57

def users_count
  @users_count ||= users.count
end