permissions sur le paquet
This commit is contained in:
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…
Add table
Add a link
Reference in a new issue