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

Loading…