module IdentityAccessManagement::UserPolicy

Public Class Methods

from_template(template, project: nil, settings: nil) click to toggle source
# File lib/superluminal/iam.rb, line 13
def self.from_template(template, project: nil, settings: nil)
  policy = YAML.load_file "#{ settings.template_path }/#{ template }.yaml"
  policy['Statement'].each do |statement|
    statement['Resource'] = settings.environments.map do |environment|
      "arn:aws:s3:::#{ settings.s3.namespace }-#{ project }-#{ environment.name }#{ policy['Metadata']['resource_suffix'] }"
    end
  end
  policy.delete 'Metadata'
  return MultiJson.encode policy
end
generate(project_name, settings, templates: ['s3/bucket', 's3/contents']) click to toggle source
# File lib/superluminal/iam.rb, line 24
def self.generate(project_name, settings, templates: ['s3/bucket', 's3/contents'])
  templates.map do |template|
    { name: template.gsub(/\//, '-'),
      document: from_template(template, project: project_name, settings: settings)
    }
  end
end
upload(policy, named: nil, for_user: nil) click to toggle source
# File lib/superluminal/iam.rb, line 32
def self.upload(policy, named: nil, for_user: nil)
  IdentityAccessManagement.api.put_user_policy(
    user_name: for_user,
    policy_name: named,
    policy_document: policy
  )
end