Provide SDK API to get authentication session details Added SessionDetails class and GetSessionDetails() function. Updated command line test.
Closes: MAASMOB-58 Project: http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-sdk-core/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-sdk-core/commit/9640f6ea Tree: http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-sdk-core/tree/9640f6ea Diff: http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-sdk-core/diff/9640f6ea Branch: refs/heads/master Commit: 9640f6eaf631921db375cb70a6f7504181c1549f Parents: 8eef723 Author: slav.klenov <[email protected]> Authored: Tue Apr 26 12:41:23 2016 +0300 Committer: slav.klenov <[email protected]> Committed: Tue Apr 26 14:05:42 2016 +0300 ---------------------------------------------------------------------- src/mpin_sdk.cpp | 25 ++++++++++++++++++++----- src/mpin_sdk.h | 13 ++++++++++++- tests/cmdline_test.cpp | 15 ++++++++++++--- 3 files changed, 44 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-sdk-core/blob/9640f6ea/src/mpin_sdk.cpp ---------------------------------------------------------------------- diff --git a/src/mpin_sdk.cpp b/src/mpin_sdk.cpp index ad86a75..65608aa 100644 --- a/src/mpin_sdk.cpp +++ b/src/mpin_sdk.cpp @@ -405,6 +405,7 @@ Status MPinSDK::HttpResponse::TranslateToMPinStatus(Context context) case GET_CLIENT_SETTINGS: case AUTHENTICATE_PASS1: case AUTHENTICATE_PASS2: + case GET_SESSION_DETAILS: break; case REGISTER: if(m_httpStatus == HTTP_FORBIDDEN) @@ -1332,18 +1333,27 @@ bool MPinSDK::ValidateAccessNumberChecksum(const String& accessNumber) return calculatedCheckSum == checkSum; } -String MPinSDK::GetPrerollUserId(const String& accessCode) +void MPinSDK::SessionDetails::Clear() { + prerollId.clear(); + appName.clear(); + appIconUrl.clear(); +} + +Status MPinSDK::GetSessionDetails(const String& accessCode, OUT SessionDetails& sessionDetails) +{ + sessionDetails.Clear(); + Status s = CheckIfBackendIsSet(); if(s != Status::OK) { - return ""; + return s; } String codeStatusUrl = m_clientSettings.GetStringParam("codeStatusURL"); if(codeStatusUrl.empty()) { - return ""; + return Status::OK; } util::JsonObject data; @@ -1353,10 +1363,15 @@ String MPinSDK::GetPrerollUserId(const String& accessCode) HttpResponse response = MakeRequest(codeStatusUrl, IHttpRequest::POST, data); if(response.GetStatus() != HttpResponse::HTTP_OK) { - return ""; + return response.TranslateToMPinStatus(HttpResponse::GET_SESSION_DETAILS); } - return response.GetJsonData().GetStringParam("prerollId"); + const util::JsonObject& json = response.GetJsonData(); + sessionDetails.prerollId = json.GetStringParam("prerollId"); + sessionDetails.appName = json.GetStringParam("appName"); + sessionDetails.appIconUrl = json.GetStringParam("appLogoURL"); + + return Status::OK; } void MPinSDK::DeleteUser(UserPtr user) http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-sdk-core/blob/9640f6ea/src/mpin_sdk.h ---------------------------------------------------------------------- diff --git a/src/mpin_sdk.h b/src/mpin_sdk.h index f5f77b6..bd7a2f1 100644 --- a/src/mpin_sdk.h +++ b/src/mpin_sdk.h @@ -221,6 +221,16 @@ public: Status status; }; + class SessionDetails + { + public: + void Clear(); + + String prerollId; + String appName; + String appIconUrl; + }; + MPinSDK(); ~MPinSDK(); Status Init(const StringMap& config, IN IContext* ctx); @@ -243,7 +253,7 @@ public: Status FinishAuthenticationOTP(INOUT UserPtr user, const String& pin, OUT OTP& otp); Status FinishAuthenticationAN(INOUT UserPtr user, const String& pin, const String& accessNumber); - String GetPrerollUserId(const String& accessCode); + Status GetSessionDetails(const String& accessCode, OUT SessionDetails& sessionDetails); void DeleteUser(INOUT UserPtr user); void DeleteUser(INOUT UserPtr user, const String& backend); @@ -282,6 +292,7 @@ private: AUTHENTICATE_PASS1, AUTHENTICATE_PASS2, AUTHENTICATE_RPA, + GET_SESSION_DETAILS, }; enum DataType http://git-wip-us.apache.org/repos/asf/incubator-milagro-mfa-sdk-core/blob/9640f6ea/tests/cmdline_test.cpp ---------------------------------------------------------------------- diff --git a/tests/cmdline_test.cpp b/tests/cmdline_test.cpp index 685a37a..d08336b 100644 --- a/tests/cmdline_test.cpp +++ b/tests/cmdline_test.cpp @@ -82,7 +82,7 @@ int main(int argc, char *argv[]) } bool testMaasWorkflow = false; - const char *maasBackend = "http://192.168.98.141:8001"; + const char *maasBackend = "http://mpinaas-demo.miracl.net:8001"; if(testMaasWorkflow) { s = sdk.SetBackend(maasBackend); @@ -161,8 +161,17 @@ int main(int argc, char *argv[]) { cout << "Enter access code: "; cin >> accessCode; - MPinSDK::String userId = sdk.GetPrerollUserId(accessCode); - cout << "GetPrerollUserId() returned '" << userId << "'. Press any key to continue..." << endl; + MPinSDK::SessionDetails sd; + s = sdk.GetSessionDetails(accessCode, sd); + if(s == MPinSDK::Status::OK) + { + cout << "GetSessionDetails() returned prerollId = '" + << sd.prerollId << "' appName = '" << sd.appName << "' appIconUrl = '" << sd.appIconUrl << "'" << endl; + } + else + { + cout << "ERROR: GetSessionDetails() returned status = " << s.GetStatusCode() << ", error = '" << s.GetErrorMessage() << "'" << endl; + } } s = sdk.StartAuthentication(user, accessCode);
