Exemple #1
0
        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));
        }
Exemple #2
0
        public mvc.ActionResult FormComplete(Guid id, bool embedded)
        {
            var fsc = GuestSessionCookie.Get(Request, id);

            if (fsc != null)
            {
                fsc.Delete(Request, Response);
            }

            return(View(embedded));
        }
Exemple #3
0
        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)));
            }
        }
Exemple #4
0
        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));
        }