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:
commit
34ba908c42
1 changed files with 20 additions and 0 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue