public override async Task<HttpResponseMessage> ExecuteAsync(System.Threading.CancellationToken cancellationToken) { _request.SetSuppressXfo(); Logger.Info("Posting to " + _response.RedirectUri); // see if we have a DefaultViewService for the IViewService // to allow for customization of the authorize response page var ctx = _request.GetOwinContext(); var defaultViewSvc = ctx.ResolveDependency<IViewService>() as DefaultViewService; if (defaultViewSvc != null) { Logger.Debug("Using DefaultViewService to render authorization response HTML"); var vm = new AuthorizeResponseViewModel { SiteName = _response.Request.Options.SiteName, SiteUrl = _request.GetIdentityServerBaseUrl(), ResponseFormUri = _response.RedirectUri, ResponseFormFields = _response.ToNameValueCollection().ToFormPost() }; var result = new HtmlStreamActionResult(() => defaultViewSvc.AuthorizeResponse(vm)); return await result.ExecuteAsync(cancellationToken); } Logger.Debug("Using AssetManager to render authorization response HTML"); return await base.ExecuteAsync(cancellationToken); }
/// <summary> /// Loads the HTML for the authorize response page. /// </summary> /// <param name="model">The model.</param> /// <returns> /// Stream for the HTML /// </returns> public virtual async Task<Stream> AuthorizeResponse(AuthorizeResponseViewModel model) { var newModel = new CommonViewModel { SiteName = model.SiteName, SiteUrl = model.SiteUrl }; var scripts = new List<string>(); scripts.AddRange(config.Scripts ?? Enumerable.Empty<string>()); scripts.Add("~/assets/app.FormPostResponse.js"); var data = BuildModelDictionary(newModel, AuthorizeResponseView, config.Stylesheets, scripts); data.Add("responseUri", model.ResponseFormUri); data.Add("responseFields", model.ResponseFormFields); string html = await LoadHtmlTemplate(AuthorizeResponseView); html = FormatHtmlTemplate(html, data); return html.ToStream(); }