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());
        }
Пример #2
0
        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));
            }
        }