permissions sur le paquet
This commit is contained in:
@ -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);
|
||||
destdir.Create();
|
||||
|
||||
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}");
|
||||
|
||||
|
||||
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}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user