public async Task <IActionResult> UpdateRegisteredApplication(RegisteredApplicationViewModel model, string returnUrl = "/applications") { ViewData["ReturnUrl"] = returnUrl; if (ModelState.IsValid) { RegisteredApplication registeredApp = await _context.Applications.Include(r => r.RedirectURIs).FirstOrDefaultAsync(r2 => r2.ClientId.Equals(model.ClientId)); if (registeredApp == null) { return(View()); // We failed? } var RedirectUriForm = HttpContext.Request.Form; List <string> rdis = registeredApp.RedirectURIs.Select(x => x.URI).ToList(); List <string> newRids = new List <string>(); foreach (string key in RedirectUriForm.Keys) { if (key.ToLowerInvariant().StartsWith("redirect_")) { string val = RedirectUriForm[key]; if (!String.IsNullOrWhiteSpace(val)) { bool success = Uri.TryCreate(val, UriKind.RelativeOrAbsolute, out Uri testUri); if (success) { string pathAndQuery = testUri.ToString(); // Check that this item hasn't already been added if (!newRids.Contains(pathAndQuery)) { newRids.Add(pathAndQuery); } } } } } registeredApp.ApplicationDescription = String.IsNullOrEmpty(model.ApplicationDescription) ? registeredApp.ApplicationDescription : model.ApplicationDescription; registeredApp.ApplicationName = String.IsNullOrEmpty(model.ApplicationName) ? registeredApp.ApplicationName : model.ApplicationName; registeredApp.RedirectURIs = newRids.Any() ? newRids.Select((r) => { return(new RedirectURI(r) { RegisteredApplication = registeredApp, RegisteredApplicationId = registeredApp.ClientId }); }).ToList() : registeredApp.RedirectURIs; RegisteredApplication updated = await _context.UpdateRegisteredApplication(registeredApp); if (updated != null) { return(RedirectToLocal(returnUrl)); } } return(View()); }
public async Task <IActionResult> Register(RegisteredApplicationViewModel model, string returnUrl = "/applications") { ViewData["ReturnUrl"] = returnUrl; if (ModelState.IsValid) { RegisteredApplication ra = await _context.CreateRegisteredApplication(model.ApplicationName, model.ApplicationDescription); if (ra != null) { return(RedirectToLocal(returnUrl)); } } // If we got this far, something failed, redisplay form return(View(model)); }
public async Task <IActionResult> Index(string clientid) { RegisteredApplication ra = await _context.Applications.Include(r => r.RedirectURIs).FirstOrDefaultAsync(r2 => r2.ClientId.Equals(clientid)); if (ra == null) { return(Error()); } else { RegisteredApplicationViewModel rvm = new RegisteredApplicationViewModel() { ApplicationDescription = ra.ApplicationDescription, ApplicationName = ra.ApplicationName, RedirectURIs = ra.RedirectURIs.Select(x => x.URI), ClientId = ra.ClientId, ClientSecret = ra.ClientSecret }; return(View(rvm)); } }