module Decidim::HasPrivateUsers

A concern with the features needed when you want a model to be able to create private users

Public Class Methods

private_spaces() click to toggle source
# File lib/decidim/has_private_users.rb, line 47
def self.private_spaces
  where(private_space: true)
end
public_spaces() click to toggle source
# File lib/decidim/has_private_users.rb, line 43
def self.public_spaces
  where(private_space: false).published
end
visible_for(user) click to toggle source
# File lib/decidim/has_private_users.rb, line 21
def self.visible_for(user)
  if user
    return all if user.admin?

    where(
      id: public_spaces +
          private_spaces
            .joins(:participatory_space_private_users)
            .where(decidim_participatory_space_private_users: { decidim_user_id: user.id })
    )
  else
    public_spaces
  end
end

Public Instance Methods

can_participate?(user) click to toggle source
# File lib/decidim/has_private_users.rb, line 36
def can_participate?(user)
  return true unless private_space?
  return false unless user

  participatory_space_private_users.exists?(decidim_user_id: user.id)
end