示例#1
0
        public virtual ActionResult Edit(string id, string version)
        {
            var package = _packageService.FindPackageByIdAndVersion(id, version);

            if (package == null)
            {
                return(HttpNotFound());
            }

            if (!package.IsOwner(User))
            {
                return(new HttpStatusCodeResult(403, "Forbidden"));
            }

            var packageRegistration = _packageService.FindPackageRegistrationById(id);
            var model = new EditPackageRequest
            {
                PackageId       = package.PackageRegistration.Id,
                PackageTitle    = package.Title,
                Version         = package.Version,
                PackageVersions = packageRegistration.Packages
                                  .OrderByDescending(p => new SemanticVersion(p.Version), Comparer <SemanticVersion> .Create((a, b) => a.CompareTo(b)))
                                  .ToList(),
            };

            var pendingMetadata = _editPackageService.GetPendingMetadata(package);

            model.Edit = new EditPackageVersionRequest(package, pendingMetadata);
            return(View(model));
        }
示例#2
0
        private ActionResult EditFailed(string id, EditPackageRequest formData, Package package)
        {
            formData.PackageId    = package.PackageRegistration.Id;
            formData.PackageTitle = package.Title;
            formData.Version      = package.Version;

            var packageRegistration = _packageService.FindPackageRegistrationById(id);

            formData.PackageVersions = packageRegistration.Packages
                                       .OrderByDescending(p => new NuGetVersion(p.Version), Comparer <NuGetVersion> .Create((a, b) => a.CompareTo(b)))
                                       .ToList();

            return(View(formData));
        }
示例#3
0
        public virtual ActionResult Edit(string id, string version, EditPackageRequest formData, string returnUrl)
        {
            var package = _packageService.FindPackageByIdAndVersion(id, version);

            if (package == null)
            {
                return(HttpNotFound());
            }

            if (!package.IsOwner(User))
            {
                return(new HttpStatusCodeResult(403, "Forbidden"));
            }

            var user = GetCurrentUser();

            if (!ModelState.IsValid)
            {
                formData.PackageId    = package.PackageRegistration.Id;
                formData.PackageTitle = package.Title;
                formData.Version      = package.Version;

                var packageRegistration = _packageService.FindPackageRegistrationById(id);
                formData.PackageVersions = packageRegistration.Packages
                                           .OrderByDescending(p => new SemanticVersion(p.Version), Comparer <SemanticVersion> .Create((a, b) => a.CompareTo(b)))
                                           .ToList();

                return(View(formData));
            }

            // Add the edit request to a queue where it will be processed in the background.
            if (formData.Edit != null)
            {
                _editPackageService.StartEditPackageRequest(package, formData.Edit, user);
                _entitiesContext.SaveChanges();
            }

            return(SafeRedirect(returnUrl ?? Url.Package(id, version)));
        }
示例#4
0
        public virtual async Task <ActionResult> Edit(string id, string version, EditPackageRequest formData, string returnUrl)
        {
            var package = _packageService.FindPackageByIdAndVersion(id, version);

            if (package == null)
            {
                return(HttpNotFound());
            }

            if (!package.IsOwner(User))
            {
                return(new HttpStatusCodeResult(403, "Forbidden"));
            }

            var user = GetCurrentUser();

            if (!ModelState.IsValid)
            {
                return(EditFailed(id, formData, package));
            }

            // Add the edit request to a queue where it will be processed in the background.
            if (formData.Edit != null)
            {
                try
                {
                    _editPackageService.StartEditPackageRequest(package, formData.Edit, user);
                    await _entitiesContext.SaveChangesAsync();
                }
                catch (EntityException ex)
                {
                    ModelState.AddModelError("Edit.VersionTitle", ex.Message);

                    return(EditFailed(id, formData, package));
                }
            }

            return(SafeRedirect(returnUrl ?? Url.Package(id, version)));
        }
示例#5
0
        public virtual ActionResult Edit(string id, string version, EditPackageRequest formData, string returnUrl)
        {
            var package = _packageService.FindPackageByIdAndVersion(id, version);
            if (package == null)
            {
                return HttpNotFound();
            }

            if (!package.IsOwner(User))
            {
                return new HttpStatusCodeResult(403, "Forbidden");
            }

            var user = GetCurrentUser();
            if (!ModelState.IsValid)
            {
                formData.PackageId = package.PackageRegistration.Id;
                formData.PackageTitle = package.Title;
                formData.Version = package.Version;

                var packageRegistration = _packageService.FindPackageRegistrationById(id);
                formData.PackageVersions = packageRegistration.Packages
                        .OrderByDescending(p => new SemanticVersion(p.Version), Comparer<SemanticVersion>.Create((a, b) => a.CompareTo(b)))
                        .ToList();

                return View(formData);
            }

            // Add the edit request to a queue where it will be processed in the background.
            if (formData.Edit != null)
            {
                _editPackageService.StartEditPackageRequest(package, formData.Edit, user);
                _entitiesContext.SaveChanges();
            }

            return SafeRedirect(returnUrl ?? Url.Package(id, version));
        }
示例#6
0
        public virtual ActionResult Edit(string id, string version)
        {
            var package = _packageService.FindPackageByIdAndVersion(id, version);
            if (package == null)
            {
                return HttpNotFound();
            }

            if (!package.IsOwner(User))
            {
                return new HttpStatusCodeResult(403, "Forbidden");
            }

            var packageRegistration = _packageService.FindPackageRegistrationById(id);
            var model = new EditPackageRequest
            {
                PackageId = package.PackageRegistration.Id,
                PackageTitle = package.Title,
                Version = package.Version,
                PackageVersions = packageRegistration.Packages
                    .OrderByDescending(p => new SemanticVersion(p.Version), Comparer<SemanticVersion>.Create((a, b) => a.CompareTo(b)))
                    .ToList(),
            };

            var pendingMetadata = _editPackageService.GetPendingMetadata(package);
            model.Edit = new EditPackageVersionRequest(package, pendingMetadata);
            return View(model);
        }
        public virtual ActionResult Edit(string id, string version, EditPackageRequest formData, string returnUrl)
        {
            var package = _packageService.FindPackageByIdAndVersion(id, version);
            if (package == null)
            {
                return HttpNotFound();
            }

            var user = _userService.FindByUsername(HttpContext.User.Identity.Name);
            if (user == null || !package.IsOwner(HttpContext.User))
            {
                return new HttpStatusCodeResult(403, "Forbidden");
            }

            if (!ModelState.IsValid)
            {
                return View();
            }

            // Add the edit request to a queue where it will be processed in the background.
            if (formData.Edit != null)
            {
                _editPackageService.StartEditPackageRequest(package, formData.Edit, user);
                _entitiesContext.SaveChanges();
            }

            return Redirect(RedirectHelper.SafeRedirectUrl(Url, returnUrl ?? Url.Package(id, version)));
        }
        private ActionResult EditFailed(string id, EditPackageRequest formData, Package package)
        {
            formData.PackageId = package.PackageRegistration.Id;
            formData.PackageTitle = package.Title;
            formData.Version = package.Version;

            var packageRegistration = _packageService.FindPackageRegistrationById(id);
            formData.PackageVersions = packageRegistration.Packages
                .OrderByDescending(p => new NuGetVersion(p.Version), Comparer<NuGetVersion>.Create((a, b) => a.CompareTo(b)))
                .ToList();

            return View(formData);
        }
        public virtual async Task<ActionResult> Edit(string id, string version, EditPackageRequest formData, string returnUrl)
        {
            var package = _packageService.FindPackageByIdAndVersion(id, version);
            if (package == null)
            {
                return HttpNotFound();
            }

            if (!package.IsOwner(User))
            {
                return new HttpStatusCodeResult(403, "Forbidden");
            }

            var user = GetCurrentUser();
            if (!ModelState.IsValid)
            {
                return EditFailed(id, formData, package);
            }

            // Add the edit request to a queue where it will be processed in the background.
            if (formData.Edit != null)
            {
                try
                {
                    _editPackageService.StartEditPackageRequest(package, formData.Edit, user);
                    await _entitiesContext.SaveChangesAsync();

                    var packageWithEditsApplied = formData.Edit.ApplyTo(package);

                    await _auditingService.SaveAuditRecord(new PackageAuditRecord(packageWithEditsApplied, AuditedPackageAction.Edit));
                }
                catch (EntityException ex)
                {
                    ModelState.AddModelError("Edit.VersionTitle", ex.Message);

                    return EditFailed(id, formData, package);
                }
            }

            return SafeRedirect(returnUrl ?? Url.Package(id, version));
        }