From 9c033b42480ce6328aa90043d50b2b3193619fe5 Mon Sep 17 00:00:00 2001 From: Ilya Zverev Date: Tue, 12 Jan 2016 13:40:05 +0300 Subject: [PATCH] [oauth] Fix after rebase + get rid of RequestToken type --- editor/editor_tests/osm_auth_test.cpp | 2 +- editor/osm_auth.cpp | 39 +++++++++++++-------------- editor/osm_auth.hpp | 12 ++++----- 3 files changed, 25 insertions(+), 28 deletions(-) diff --git a/editor/editor_tests/osm_auth_test.cpp b/editor/editor_tests/osm_auth_test.cpp index 5bc80ffeed..5f3d99fb78 100644 --- a/editor/editor_tests/osm_auth_test.cpp +++ b/editor/editor_tests/osm_auth_test.cpp @@ -10,7 +10,7 @@ constexpr char const * kIZTestUser = "Testuser"; constexpr char const * kIZTestPassword = "testtest"; constexpr char const * kIZInvalidPassword = "123"; constexpr char const * kFacebookToken = "CAAYYoGXMFUcBAHZBpDFyFPFQroYRMtzdCzXVFiqKcZAZB44jKjzW8WWoaPWI4xxl9EK8INIuTZAkhpURhwSiyOIKoWsgbqZAKEKIKZC3IdlUokPOEuaUpKQzgLTUcYNLiqgJogjUTL1s7Myqpf8cf5yoxQm32cqKZAdozrdx2df4FMJBSF7h0dXI49M2WjCyjPcEKntC4LfQsVwrZBn8uStvUJBVGMTwNWkZD"; -constexpr char const * kGoogleToken = "eyJhbGciOiJSUzI1NiIsImtpZCI6IjVhZDc2OGE1ZDhjMTJlYmE3OGJiY2M5Yjg1ZGNlMzJhYzFjZGM3MzYifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhdWQiOiI0MTgwNTMwODI0ODktaTk3MGYwbHJvYjhsNGo1aTE2a2RlOGMydnBzODN0Y2wuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMTQxMTI2Njc5NzEwNTQ0MTk2OTMiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiYXpwIjoiNDE4MDUzMDgyNDg5LTN2a2RzZ2E3cm9pNjI4ZGh2YTZydnN0MmQ4MGY5NWZuLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiZW1haWwiOiJ6dmVyaWtAdGV4dHVhbC5ydSIsImlhdCI6MTQ1MjI2ODI0NCwiZXhwIjoxNDUyMjcxODQ0LCJuYW1lIjoiSWx5YSBadmVyZXYiLCJnaXZlbl9uYW1lIjoiSWx5YSIsImZhbWlseV9uYW1lIjoiWnZlcmV2IiwibG9jYWxlIjoicnUifQ.E55Fwdt--Jln6p-eKZS18U3KNf0233hfJtLZywOxGs9HMiZNG6xZrYwPM8OFGMhweplITtCokZR54wYDD113HH5Bmt5DbdZXgGZ8mZmqS3U_toNeHWI92Zfhew08OUDF_pR1ykV76KqjW4QGQnmeEYYs4O4I2Xw3nyUTAeTxleBHTgBNW-XZHTQc0l_gr3cWULCTuGOKGTSAO6ccVx34r8n1wfbHmWYGEtdNpJxK_AVCl64pCoXL-uEV7Cp3nSKFSW4Ei6b-DW6hygVuhMNWDUZGvxLm8CbQTOHTRRCpM5vuhcPEAQHlxZrmEpU7lLXZCDBEvM9JdDvDicg_WQNf3w"; +//constexpr char const * kGoogleToken = "eyJhbGciOiJSUzI1NiIsImtpZCI6IjVhZDc2OGE1ZDhjMTJlYmE3OGJiY2M5Yjg1ZGNlMzJhYzFjZGM3MzYifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhdWQiOiI0MTgwNTMwODI0ODktaTk3MGYwbHJvYjhsNGo1aTE2a2RlOGMydnBzODN0Y2wuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMTQxMTI2Njc5NzEwNTQ0MTk2OTMiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiYXpwIjoiNDE4MDUzMDgyNDg5LTN2a2RzZ2E3cm9pNjI4ZGh2YTZydnN0MmQ4MGY5NWZuLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiZW1haWwiOiJ6dmVyaWtAdGV4dHVhbC5ydSIsImlhdCI6MTQ1MjI2ODI0NCwiZXhwIjoxNDUyMjcxODQ0LCJuYW1lIjoiSWx5YSBadmVyZXYiLCJnaXZlbl9uYW1lIjoiSWx5YSIsImZhbWlseV9uYW1lIjoiWnZlcmV2IiwibG9jYWxlIjoicnUifQ.E55Fwdt--Jln6p-eKZS18U3KNf0233hfJtLZywOxGs9HMiZNG6xZrYwPM8OFGMhweplITtCokZR54wYDD113HH5Bmt5DbdZXgGZ8mZmqS3U_toNeHWI92Zfhew08OUDF_pR1ykV76KqjW4QGQnmeEYYs4O4I2Xw3nyUTAeTxleBHTgBNW-XZHTQc0l_gr3cWULCTuGOKGTSAO6ccVx34r8n1wfbHmWYGEtdNpJxK_AVCl64pCoXL-uEV7Cp3nSKFSW4Ei6b-DW6hygVuhMNWDUZGvxLm8CbQTOHTRRCpM5vuhcPEAQHlxZrmEpU7lLXZCDBEvM9JdDvDicg_WQNf3w"; } // namespace UNIT_TEST(OSM_Auth_InvalidLogin) diff --git a/editor/osm_auth.cpp b/editor/osm_auth.cpp index 33c244580a..f721d7a9d6 100644 --- a/editor/osm_auth.cpp +++ b/editor/osm_auth.cpp @@ -181,24 +181,23 @@ string OsmOAuth::SendAuthRequest(string const & requestTokenKey, SessionID const return callbackURL.substr(pos + vKey.length(), end == string::npos ? end : end - pos - vKey.length()+ 1); } -OsmOAuth::RequestToken OsmOAuth::FetchRequestToken() const +TKeySecret OsmOAuth::FetchRequestToken() const { - // Aquire a request token. OAuth::Consumer const consumer(m_consumerKeySecret.first, m_consumerKeySecret.second); OAuth::Client oauth(&consumer); string const requestTokenUrl = m_baseUrl + "/oauth/request_token"; string const requestTokenQuery = oauth.getURLQueryString(OAuth::Http::Get, requestTokenUrl + "?oauth_callback=oob"); HTTPClientPlatformWrapper request(requestTokenUrl + "?" + requestTokenQuery); if (!(request.RunHTTPRequest() && request.error_code() == 200 && !request.was_redirected())) - return RequestToken(string(), string()); + return TKeySecret(string(), string()); OAuth::Token reqToken = OAuth::Token::extract(request.server_response()); - return RequestToken(reqToken.key(), reqToken.secret()); + return TKeySecret(reqToken.key(), reqToken.secret()); } -OsmOAuth::AuthResult OsmOAuth::FinishAuthorization(OsmOAuth::RequestToken const & requestToken, string const & verifier, ClientToken & token) const +OsmOAuth::AuthResult OsmOAuth::FinishAuthorization(TKeySecret const & requestToken, string const & verifier, TKeySecret & outKeySecret) const { - OAuth::Consumer consumer(m_consumerKey, m_consumerSecret); - OAuth::Token reqToken(requestToken.first, requestToken.second, verifier); + OAuth::Consumer const consumer(m_consumerKeySecret.first, m_consumerKeySecret.second); + OAuth::Token const reqToken(requestToken.first, requestToken.second, verifier); OAuth::Client oauth(&consumer, &reqToken); string const accessTokenUrl = m_baseUrl + "/oauth/access_token"; string const queryString = oauth.getURLQueryString(OAuth::Http::Get, accessTokenUrl, "", true); @@ -217,7 +216,7 @@ OsmOAuth::AuthResult OsmOAuth::FinishAuthorization(OsmOAuth::RequestToken const OsmOAuth::AuthResult OsmOAuth::FetchAccessToken(SessionID const & sid, TKeySecret & outKeySecret) const { // Aquire a request token. - RequestToken requestToken = FetchRequestToken(); + TKeySecret const requestToken = FetchRequestToken(); if (requestToken.first.empty()) return AuthResult::NoOAuth; @@ -228,7 +227,7 @@ OsmOAuth::AuthResult OsmOAuth::FetchAccessToken(SessionID const & sid, TKeySecre LogoutUser(sid); // Got pin, exchange it for the access token. - return FinishAuthorization(requestToken, pin, token); + return FinishAuthorization(requestToken, pin, outKeySecret); } OsmOAuth::AuthResult OsmOAuth::AuthorizePassword(string const & login, string const & password, TKeySecret & outKeySecret) const @@ -273,22 +272,22 @@ OsmOAuth::AuthResult OsmOAuth::AuthorizeGoogle(string const & googleToken, TKeyS return FetchAccessToken(sid, outKeySecret); } -std::pair OsmOAuth::GetFacebookOAuthURL() const +std::pair OsmOAuth::GetFacebookOAuthURL() const { - RequestToken requestToken = FetchRequestToken(); + TKeySecret const requestToken = FetchRequestToken(); if (requestToken.first.empty()) - return std::pair(string(), requestToken); + return std::pair(string(), requestToken); string const url = m_baseUrl + kFacebookOAuthPart + requestToken.first; - return std::pair(url, requestToken); + return std::pair(url, requestToken); } -std::pair OsmOAuth::GetGoogleOAuthURL() const +std::pair OsmOAuth::GetGoogleOAuthURL() const { - RequestToken requestToken = FetchRequestToken(); + TKeySecret const requestToken = FetchRequestToken(); if (requestToken.first.empty()) - return std::pair(string(), requestToken); + return std::pair(string(), requestToken); string const url = m_baseUrl + kGoogleOAuthPart + requestToken.first; - return std::pair(url, requestToken); + return std::pair(url, requestToken); } OsmOAuth::Response OsmOAuth::Request(TKeySecret const & keySecret, string const & method, string const & httpMethod, string const & body) const @@ -349,9 +348,9 @@ OsmOAuth::AuthResult OsmOAuth::FetchAccessToken(SessionID const & sid) return FetchAccessToken(sid, m_tokenKeySecret); } -OsmOAuth::AuthResult OsmOAuth::FinishAuthorization(OsmOAuth::RequestToken const & requestToken, string const & verifier) +OsmOAuth::AuthResult OsmOAuth::FinishAuthorization(TKeySecret const & requestToken, string const & verifier) { - return FinishAuthorization(requestToken, verifier, m_token); + return FinishAuthorization(requestToken, verifier, m_tokenKeySecret); } OsmOAuth::AuthResult OsmOAuth::AuthorizePassword(string const & login, string const & password) @@ -366,7 +365,7 @@ OsmOAuth::AuthResult OsmOAuth::AuthorizeFacebook(string const & facebookToken) OsmOAuth::AuthResult OsmOAuth::AuthorizeGoogle(string const & googleToken) { - return AuthorizeGoogle(googleToken, m_token); + return AuthorizeGoogle(googleToken, m_tokenKeySecret); } OsmOAuth::Response OsmOAuth::Request(string const & method, string const & httpMethod, string const & body) const diff --git a/editor/osm_auth.hpp b/editor/osm_auth.hpp index c518cbd421..b5d1100af7 100644 --- a/editor/osm_auth.hpp +++ b/editor/osm_auth.hpp @@ -43,8 +43,6 @@ public: /// A pair of . using Response = std::pair; - /// A request token container, with key and secret. - using RequestToken = std::pair; /// The constructor. Simply stores a lot of strings in fields. /// @param[apiUrl] The OSM API URL defaults to baseUrl, or kDefaultApiURL if not specified. @@ -80,10 +78,10 @@ public: /// @name Methods for WebView-based authentication. //@{ - std::pair GetFacebookOAuthURL() const; - std::pair GetGoogleOAuthURL() const; - AuthResult FinishAuthorization(RequestToken const & requestToken, string const & verifier, ClientToken & token) const; - AuthResult FinishAuthorization(RequestToken const & requestToken, string const & verifier); + std::pair GetFacebookOAuthURL() const; + std::pair GetGoogleOAuthURL() const; + AuthResult FinishAuthorization(TKeySecret const & requestToken, string const & verifier, TKeySecret & outKeySecret) const; + AuthResult FinishAuthorization(TKeySecret const & requestToken, string const & verifier); //@} /// Tokenless GET request, for convenience. @@ -109,7 +107,7 @@ private: AuthResult LoginUserPassword(string const & login, string const & password, SessionID const & sid) const; AuthResult LoginSocial(string const & callbackPart, string const & socialToken, SessionID const & sid) const; string SendAuthRequest(string const & requestTokenKey, SessionID const & sid) const; - RequestToken FetchRequestToken() const; + TKeySecret FetchRequestToken() const; AuthResult FetchAccessToken(SessionID const & sid, TKeySecret & outKeySecret) const; AuthResult FetchAccessToken(SessionID const & sid); };