class AwsAssumeRole::Cli::Actions::Console
Constants
- CONSOLE_URL
- CommandSchema
- FEDERATION_URL
- GENERIC_SIGNIN_URL
- LOGIN_URL
- SIGNIN_URL
Public Instance Methods
act_on(config)
click to toggle source
# File lib/aws_assume_role/cli/actions/console.rb, line 62 def act_on(config) final_url = try_federation(config) || try_switch_url(config) || CONSOLE_URL Launchy.open final_url rescue KeyError, Aws::Errors::NoSuchProfileError error format(t("errors.NoSuchProfileError"), config.profile) rescue Aws::Errors::MissingCredentialsError error t("errors.MissingCredentialsError") end
session_json(credentials)
click to toggle source
# File lib/aws_assume_role/cli/actions/console.rb, line 41 def session_json(credentials) { sessionId: credentials.credentials.access_key_id, sessionKey: credentials.credentials.secret_access_key, sessionToken: credentials.credentials.session_token, }.to_json end
try_federation(config)
click to toggle source
# File lib/aws_assume_role/cli/actions/console.rb, line 30 def try_federation(config) credentials = try_for_credentials config.to_h return unless credentials.set? session = session_json(credentials) signin_url = format SIGNIN_URL, CGI.escape(session) sso_token = JSON.parse(URI.parse(signin_url).read)["SigninToken"] format LOGIN_URL, CGI.escape(CONSOLE_URL), CGI.escape(sso_token) rescue OpenURI::HTTPError error "Error getting federated session, forming simple switch URL instead" end
try_switch_url(config)
click to toggle source
# File lib/aws_assume_role/cli/actions/console.rb, line 49 def try_switch_url(config) profile = AwsAssumeRole.shared_config.determine_profile(profile_name: config.profile) config_section = AwsAssumeRole.shared_config.parsed_config[profile] raise Aws::Errors::NoSuchProfileError if config_section.nil? resolved_role_arn = config.role_arn || config_section.fetch("role_arn", nil) return unless resolved_role_arn components = resolved_role_arn.split(":") account = components[4] role = components[5].split("/").last display_name = config.profile || "#{account}_#{role}" format "https://signin.aws.amazon.com/switchrole?account=%s&roleName=%s&displayName=%s", account, role, display_name end