public MingleWorkflowResponse StartMingleWorkflow(MingleWorkflowRequest req) { var uriBuilder = new UriBuilder(this._tokenObject.IonApiUrl + "/Mingle/SocialService.Svc/User/Detail"); NLogLogger.Trace(uriBuilder.Uri.ToString(), "StartMingleWorkflow ionApiUrl"); NLogLogger.Trace(this._bearerToken, "StartMingleWorkflow bearerToken"); if (this._bearerToken == null) { var error = new Errorlist() { Severity = 1, Code = 400 }; var errorResponse = new MingleWorkflowResponse() { ErrorList = new[] { error }, Status = 0 }; NLogLogger.Error("bearertoken not harvested from request header", "StartMingleWorkflow"); return(errorResponse); } var bearerTokenObject = JsonConvert.DeserializeObject <BearerTokenObject>(this._bearerToken); if (this._progressConfiguration.InforOverrideHttps) { ServicePointManager.ServerCertificateValidationCallback += ValidateRemoteCertificate; } ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12; //get ming.le user guid string userGuid = null; var webHeaderCollection = new WebHeaderCollection { { "Authorization", $"Bearer {bearerTokenObject.access_token}" }, { "Accept", "application/json" }, { "Content-Type", "application/json" } }; var responseObject = MakeWebCall.DoWebCallString <MingleUserDetailResponse>(uriBuilder.Uri, false, string.Empty, webHeaderCollection, out var inError, NLogLogger); if (!inError) { if (responseObject.UserDetailList.Length == 1) { userGuid = responseObject.UserDetailList[0].UserGUID; var emailParam = new Startparameter { Name = "EmailAddr", SerializedValue = responseObject.UserDetailList[0].Email }; req.StartParameters = (req.StartParameters ?? Enumerable.Empty <Startparameter>()).Concat(Enumerable.Repeat(emailParam, 1)).ToArray(); } } else { var error = new Errorlist() { Severity = 1, Code = 500, Message = "User Details Error" }; var errorResponse = new MingleWorkflowResponse() { ErrorList = new[] { error }, Status = 0 }; NLogLogger.Error($"Error retrieving UserGUID"); return(errorResponse); } //get customer details, add to payload var customerNumber = req.StartParameters.SingleOrDefault(item => item.Name == "CustomerNumber"); if (customerNumber != null) { var arscRepository = new ArscRepository(this._connection); var arsc = arscRepository.Get(0, int.Parse(customerNumber.SerializedValue), false, 1, ""); var custNameParam = new Startparameter { Name = "CustomerName", SerializedValue = arsc.name }; req.StartParameters = (req.StartParameters ?? Enumerable.Empty <Startparameter>()).Concat(Enumerable.Repeat(custNameParam, 1)).ToArray(); } webHeaderCollection = new WebHeaderCollection { { "Accept", "application/json" }, { "Content-Type", "application/json" } }; uriBuilder = new UriBuilder(uriBuilder.Uri + $"/Mingle/IONDataService.Svc/User/{userGuid}/Workflow/Start"); var returnObject = MakeWebCall.DoWebCallString <MingleWorkflowResponse>(uriBuilder.Uri, true, JsonConvert.SerializeObject(req), webHeaderCollection, out inError, NLogLogger); if (inError) { var error = new Errorlist() { Severity = 1, Code = 500, Message = "User Details Error" }; var errorResponse = new MingleWorkflowResponse() { ErrorList = new[] { error }, Status = 0 }; NLogLogger.Error($"Error starting workflow"); return(errorResponse); } return(returnObject); }
public LoginResponseModel Login(LoginRequestModel loginRequestModel) { _nLogLogger.Trace("Start", "Login Controller"); var loginResults = this.loginService.Login(loginRequestModel, this.ActionContext.Request.Headers.Host); _nLogLogger.Trace("After Login Call", "Login Controller"); if (loginResults.Success) { _nLogLogger.Trace("Before Business Rules", "Login Controller"); this.DoBusinessRules(loginResults); _nLogLogger.Trace("After Business Rules", "Login Controller"); var token = GenerateToken.Generate(_nLogLogger); if (token != "") { bool error; var uriBuilder = new UriBuilder(loginResults.RestAccessUrl + "/web/api/sa/SaGetEnv"); var saGetRequest = new SaGetEnvResponse { ttblsaenv = new Ttblsaenv { dateformat = "" } }; var webHeaderCollection = new WebHeaderCollection { { "Token", token }, { "Accept-Encoding", "gzip, deflate" }, { "Accept", "application/json" }, { "Content-Type", "application/json" } }; var responseObject = MakeWebCall.DoWebCallString <SaGetEnvResponse>(uriBuilder.Uri, true, JsonConvert.SerializeObject(saGetRequest), webHeaderCollection, out error, _nLogLogger); if (!error) { loginResults.DateFormat = responseObject.ttblsaenv.dateformat; } else { _nLogLogger.Error("Failed to get environment"); } uriBuilder = new UriBuilder(loginResults.RestAccessUrl + "/web/api/shared/logintimezone"); var tokenObject = GenerateToken.ReturnToken(); var loginZoneTimeRequest = new LoginZoneTimeRequest { ttbllogintimezone = new Ttbllogintimezone { cono = tokenObject.Cono, oper2 = tokenObject.Oper, sessionid = tokenObject.SessionidGuid, logintimezone = loginRequestModel.OffsetTime } }; MakeWebCall.DoWebCallString <string>(uriBuilder.Uri, true, JsonConvert.SerializeObject(loginZoneTimeRequest), webHeaderCollection, out error, _nLogLogger, true); if (error) { _nLogLogger.Error("Failed to set timezone"); } } } return(loginResults); }
private IEnumerable <GetImageUrlResponse> ReturnUrlFromCall(List <GetImageUrlRequest> getImageUrlRequest, out bool inError) { var queryToGet = getImageUrlRequest.Aggregate($"/{this._supportedRespository.IdmEntityType}[(", (current, request) => current + (current.Length > 14 ? " OR " : string.Empty) + string.Format(this._supportedRespository.Formatter, request.Key.Replace('"', ' '))); queryToGet += $") AND @Company_Number={this._tokenObject.Cono}]"; NLogLogger.Trace($"queryToGet - {queryToGet}"); var oAuthBase = new OAuthBase(); var query = oAuthBase.CreateQueryParam("$offset", "0"); query = query + "&" + oAuthBase.CreateQueryParam("$limit", getImageUrlRequest.Count.ToString()); query = query + "&" + oAuthBase.CreateQueryParam("$includeCount", "false"); query = query + "&" + oAuthBase.CreateQueryParam("$language", "en"); NLogLogger.Trace($"url - {query}"); UriBuilder uriBuilder; string signature; if (!new ProgressConfiguration().SSoEnabled) { // Use OAuth 1.0 if (string.IsNullOrEmpty(this._tokenObject.IdmUrl)) { inError = true; NLogLogger.Error("The IDM URL was empty - Unable to retrieve images"); return(new List <GetImageUrlResponse>()); } // PMC 02/09/2018 - IBM AppScan - This has been manually reviewed and passed as being safe uriBuilder = new UriBuilder(this._tokenObject.IdmUrl) { Query = query }; signature = oAuthBase.GenerateSignature(uriBuilder.Uri, this._tokenObject.IdmConsumerKey, this._tokenObject.IdmSharedSecret, string.Empty, string.Empty, "POST", oAuthBase.GenerateTimeStamp(), oAuthBase.GenerateNonce(6)); NLogLogger.Trace($"OAuth 1.0 - signature - {signature}"); } else { // Use OAuth 2.0 if (string.IsNullOrEmpty(this._tokenObject.IonApiUrl)) { inError = true; NLogLogger.Error("The ION API URL was empty - Unable to retrieve images"); return(new List <GetImageUrlResponse>()); } if (this._bearerToken == null) { NLogLogger.Error("bearertoken not harvested from request header", "ReturnUrlFromCall"); inError = true; return(new List <GetImageUrlResponse>()); } // PMC 02/09/2018 - IBM AppScan - This has been manually reviewed and passed as being safe uriBuilder = new UriBuilder(this._tokenObject.IonApiUrl + "/IDM/api/items/search") { Query = query }; var bearerTokenObject = JsonConvert.DeserializeObject <BearerTokenObject>(this._bearerToken); signature = $"Bearer {bearerTokenObject.access_token}"; NLogLogger.Trace($"OAuth 2.0 - signature - {signature}"); } NLogLogger.Trace($"Calling URI - {uriBuilder.Uri}"); var webHeaderCollection = new WebHeaderCollection { { "Authorization", signature }, { "x-ionapi-docrequest", "DistributionSxe" }, { "Accept-Encoding", "gzip, deflate" }, { "Accept", "application/json" }, { "Content-Type", "text/plain" } }; var idmResponseObject = MakeWebCall.DoWebCallString <IdmResponse>(uriBuilder.Uri, true, queryToGet, webHeaderCollection, out inError, NLogLogger); List <GetImageUrlResponse> returnValue; if (!inError) { NLogLogger.Trace($"idmResponseString - {JsonConvert.SerializeObject(idmResponseObject)}"); returnValue = idmResponseObject.ReturnImageUrl(getImageUrlRequest, this._tokenObject.InforIdmCacheExpirationAbsolute / 2); } else { returnValue = new List <GetImageUrlResponse>(); NLogLogger.Error("Image Retrieval failed"); } return(returnValue); }