permissions sur le paquet

broken/ef
Paul Schneider 3 years ago
parent 3a59b8304a
commit d80271dcbf
1 changed files with 42 additions and 34 deletions

@ -43,8 +43,6 @@ namespace nuget_host.Controllers
{
try
{
var clientVersionId = Request.Headers["X-NuGet-Client-Version"];
var apiKey = Request.Headers["X-NuGet-ApiKey"];
ViewData["versionId"] = typeof(PackagesController).Assembly.FullName;
@ -78,9 +76,8 @@ namespace nuget_host.Controllers
{
if (entry.FullName.EndsWith(".nuspec"))
{
// var entry = archive.GetEntry(filename);
var specstr = entry.Open();
NuGet.Packaging.Core.NuspecCoreReader reader = new NuspecCoreReader(specstr);
NuspecCoreReader reader = new NuspecCoreReader(specstr);
string pkgdesc = reader.GetDescription();
string pkgid = reader.GetId();
@ -90,45 +87,56 @@ namespace nuget_host.Controllers
string pkgpath = Path.Combine(pkgidpath, version.Version.ToString());
string name = $"{pkgid}-{version}.nupkg";
string fullpath = Path.Combine(pkgpath, name);
Package package;
var destpkgiddir = new DirectoryInfo(pkgidpath);
if (destpkgiddir.Exists)
{
package = dbContext.Packages.SingleOrDefault(p => p.Id == pkgid);
if (package != null) if (package.OwnerId != apikey.UserId)
{
return new ForbidResult();
}
}
else
{
destpkgiddir.Create();
package = new Package
{
Id = pkgid,
Description = pkgdesc,
OwnerId = apikey.UserId
};
dbContext.Packages.Add(package);
}
var source = new FileInfo(initpath);
var dest = new FileInfo(fullpath);
var destdir = new DirectoryInfo(dest.DirectoryName);
if (dest.Exists)
{
ViewData["error"] = "existe déjà";
logger.LogInformation("400 : existe déjà");
ViewData["error"] = "existant";
logger.LogWarning("400 : existant");
return BadRequest(ViewData);
}
destdir.Create();
source.MoveTo(fullpath);
files.Add(name);
var newpkg = new Package
else
{
Id = pkgid,
Description = pkgdesc,
OwnerId = apikey.UserId
};
dbContext.Packages.Add(newpkg);
var newversion = new PackageVersion
{
Package = newpkg,
Major = version.Major,
Minor = version.Minor,
Patch = version.Patch,
IsPrerelease = version.IsPrerelease,
FullString = version.ToFullString()
};
dbContext.PackageVersions.Add(newversion);
await dbContext.SaveChangesAsync();
logger.LogInformation($"new package : {entry.Name}");
destdir.Create();
source.MoveTo(fullpath);
files.Add(name);
var newversion = new PackageVersion
{
Package = package,
Major = version.Major,
Minor = version.Minor,
Patch = version.Patch,
IsPrerelease = version.IsPrerelease,
FullString = version.ToFullString()
};
dbContext.PackageVersions.Add(newversion);
await dbContext.SaveChangesAsync();
logger.LogInformation($"new package : {entry.Name}");
}
}
}
}

Loading…