private mvc.ActionResult CreateDocumentAndRedirect(ProxyAuthRequestResult req, JObject jArgs, Guid instanceId) { var fSvc = SvcBldr.FormsV2(); var cdsr = fSvc.CreateDocument(new FormDocumentCreateArgs { IsTemporary = true, FormTemplateId = new Guid(jArgs["FormTemplateId"].Value <string>()) //Convert failure when .Value<Guid> is used. }); ExceptionsML.Check(cdsr.Error); var vrId = Functions.NewSeq(); jArgs["DocumentVersionId"] = cdsr.Result.Version.Id; jArgs["FormRequestId"] = req.Id; jArgs["ViewRequestId"] = vrId; jArgs["UseRecaptcha"] = false; ExceptionsML.Check(cdsr.Error); var secSvc = SvcBldr.SecurityV2(); var viewerCPR = new ProxyAuthRequest { Id = vrId, ExpirationType = ExpirationMode.CustomCount, ExpirationValue = "1", //Expires as soon as the form is submitted. RequestType = ProxyAuthRequestType.AccessViewer, Token = req.Token, Parameters = JsonConvert.SerializeObject(jArgs) }; var cprSR = secSvc.CreateProxyRequest(viewerCPR); ExceptionsML.Check(cprSR.Error); var fsc = GuestSessionCookie.Create(Response, cprSR.Result, instanceId, req.Id); return(RedirectToAction("Index", fsc)); }
public mvc.ActionResult FormComplete(Guid id, bool embedded) { var fsc = GuestSessionCookie.Get(Request, id); if (fsc != null) { fsc.Delete(Request, Response); } return(View(embedded)); }
public mvc.ActionResult Index() { try { var reqId = Guid.Empty; var instanceId = Guid.Empty; if (!Guid.TryParse(Request.QueryString[Constants.REQUESTID], out reqId) || !Guid.TryParse(Request.QueryString[Constants.INSTANCEID], out instanceId)) { throw new Exception(Constants.i18n("incompleteProxyAuthRequestURL")); } var gsc = GuestSessionCookie.Get(Request, reqId); if (gsc != null) { var ar = RedirectToLastSession(gsc); if (ar != null) { return(ar); } } var cm = GuestChallengeModel.GetOrValidate(reqId, instanceId, Request, SvcBldr); if (cm.ShowPassword || cm.ShowRecaptcha) { return(View("Challenge", cm)); } switch (cm.ProxyRequest.RequestType) { case ProxyAuthRequestType.DownloadFiles: return(View("DocumentDownload")); //TODO: Fix, this cannot get the Request case ProxyAuthRequestType.AccessViewer: var baseUri = Functions.CombineUri(CurrentDomain, HttpContext.Request.ApplicationPath); var model = new GuestViewerModel(SvcBldr); model.Load(baseUri, cm.ProxyRequest); SignIn(model.EncryptedToken, model.User, false); return(View("GuestViewer", model)); case ProxyAuthRequestType.CreateForm: return(CreateForm(cm.ProxyRequest, instanceId)); default: throw new NotImplementedException(cm.ProxyRequest.RequestType.ToString()); } } catch (Exception ex) { return(View("../Home/Oops", ExceptionsML.GetExceptionML(ex))); } }
private mvc.ActionResult RedirectToLastSession(GuestSessionCookie fsc) { var client = SvcBldr.SecurityV2(); var sr = client.GetProxyRequest(new GetProxyRequestArgs { Id = fsc.RequestId, InstanceId = fsc.InstanceId, DontGetToken = true }); if (sr.Error != null) { if (sr.Error.Type == typeof(ProxyAuthRequestExpiredException).ToString()) { fsc.Delete(Request, Response); return(null); } ExceptionsML.Check(sr.Error); } return(RedirectToAction("Index", fsc)); }