Skip to content

Instantly share code, notes, and snippets.

@BSierakowski
Last active June 19, 2020 16:46
Show Gist options
  • Save BSierakowski/6ece85c47ecba5125bd81f7892a82add to your computer and use it in GitHub Desktop.
Save BSierakowski/6ece85c47ecba5125bd81f7892a82add to your computer and use it in GitHub Desktop.
organization_id = 1460
final_results = []
organization = Organization.find(organization_id)
details = {}
organization.users.each do |user|
user_account_ids = user.accounts.pluck(:id)
organization_account_ids = user.organizations.first.accounts.pluck(:id)
group_account_ids = []
good_ids = []
bad_ids = []
good_private_ids = []
bad_private_ids = []
good_group_ids = []
bad_group_ids = []
good_everyone_ids = []
bad_everyone_ids = []
details["#{user.email}"] = {}
details["#{user.email}"][:good_logins] = []
details["#{user.email}"][:bad_logins] = []
organization_membership = OrganizationMembership.where(user_id: user.id, organization_id: organization.id).first
if organization_membership.role == "admin" or organization_membership.role == "owner"
organization.groups.each do |group|
group_account_ids += group.accounts.pluck(:id)
end
else
user.groups.each do |group|
group_account_ids += group.accounts.pluck(:id)
end
end
puts "checking for private keyed logins"
user_account_ids.each do |account_id|
account = Account.find(account_id)
puts "checking keyed login for #{account.name}, id: #{account.id}"
kl = KeyedLogin.where(account_id: account_id, user_id: user.id)
if kl.present?
good_private_ids += [account_id]
details["#{user.email}"][:good_logins] += ["#{account_id}, #{account.name}, private login"]
else
bad_private_ids += [account_id]
details["#{user.email}"][:bad_logins] += ["#{account_id}, #{account.name}, private login"]
end
end
puts "checking for group keyed logins"
group_account_ids.each do |account_id|
account = Account.find(account_id)
group = account.groups.first
puts "checking keyed login for #{account.name}, id: #{account.id}"
kl = KeyedLogin.where(account_id: account_id, user_id: user.id)
if kl.present?
good_group_ids += [account_id]
details["#{user.email}"][:good_logins] += ["#{account_id}, #{account.name}, #{group.name}, group login"]
else
bad_group_ids += [account_id]
details["#{user.email}"][:bad_logins] += ["#{account_id}, #{account.name}, #{group.name}, group login"]
end
end
puts "checking for organization keyed logins"
organization_account_ids.each do |account_id|
account = Account.find(account_id)
puts "checking keyed login for #{account.name}, id: #{account.id}"
kl = KeyedLogin.where(account_id: account_id, user_id: user.id)
if kl.present?
good_everyone_ids += [account_id]
details["#{user.email}"][:good_logins] += ["#{account_id}, #{account.name}, #{organization.name}, organization login"]
else
bad_everyone_ids += [account_id]
details["#{user.email}"][:bad_logins] += ["#{account_id}, #{account.name}, #{organization.name}, organization login"]
end
end
good_ids = good_private_ids + good_group_ids + good_everyone_ids
bad_ids = bad_private_ids + bad_group_ids + bad_everyone_ids
final_results += ["#{user.email}, role: #{organization_membership.role}, good count: #{good_ids.count}, bad count: #{bad_ids.count}"]
end
puts final_results
puts details.to_json
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment