1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00

Merge pull request #3169 from mattbostock/78700334-fog-credential-org-ignored

Error if FOG_CREDENTIAL doesn't match session
This commit is contained in:
Wesley Beary 2014-09-19 09:06:33 -05:00
commit 34ba908c42

View file

@ -461,6 +461,10 @@ module Fog
def login
if @vcloud_token = ENV['FOG_VCLOUD_TOKEN']
response = get_current_session
session_org = response.body[:org]
session_user = response.body[:user]
check_session_matches_credentials(session_org, session_user)
else
response = post_login_session
x_vcloud_authorization = response.headers.keys.find do |key|
@ -468,6 +472,7 @@ module Fog
end
@vcloud_token = response.headers[x_vcloud_authorization]
end
@org_name = response.body[:org]
@user_name = response.body[:user]
end
@ -478,6 +483,21 @@ module Fog
@vcloud_token = nil
@org_name = nil
end
def check_session_matches_credentials(session_org, session_user)
fog_credential_org = @vcloud_director_username.split('@').last
fog_credential_user = @vcloud_director_username.split('@')[0...-1].join
if session_org != fog_credential_org
raise Fog::Errors::Error.new "FOG_CREDENTIAL specified is for vCloud organisation '#{fog_credential_org}' but " +
"your current session is for '#{session_org}'. You should generate a new FOG_VCLOUD_TOKEN."
end
if session_user != fog_credential_user
raise Fog::Errors::Error.new "FOG_CREDENTIAL specified is for user '#{fog_credential_user}' but " +
"your current session is for '#{session_user}'. You should generate a new FOG_VCLOUD_TOKEN."
end
end
end
class Mock