Skip to content

Commit 13fb13e

Browse files
authored
Merge commit from fork
Refined validation of portal import
2 parents 9a8d95f + 0657f52 commit 13fb13e

File tree

2 files changed

+54
-18
lines changed

2 files changed

+54
-18
lines changed

DNN Platform/Modules/DnnExportImport/Components/Controllers/ImportController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public bool VerifyImportPackage(string packageId, ImportExportSummary summary, o
8888
{
8989
bool isValid;
9090
errorMessage = string.Empty;
91-
var importFolder = Path.Combine(ExportFolder, packageId);
91+
var importFolder = Path.Combine(ExportFolder, Path.GetFileName(packageId));
9292
if (!IsValidImportFolder(importFolder))
9393
{
9494
return false;

DNN Platform/Modules/DnnExportImport/Services/ExportImportController.cs

Lines changed: 53 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,19 @@ namespace Dnn.ExportImport.Services
1515
using DotNetNuke.Services.Localization;
1616
using DotNetNuke.Web.Api;
1717

18+
/// <summary>
19+
/// REST APIs to manage import/export jobs.
20+
/// </summary>
1821
[RequireHost]
1922
public class ExportImportController : DnnApiController
2023
{
24+
/// <summary>
25+
/// Exports the specified site.
26+
/// </summary>
27+
/// <param name="exportDto">The details needed to export a site.</param>
28+
/// <returns>OK.</returns>
2129
[HttpPost]
2230
[ValidateAntiForgeryToken]
23-
2431
public HttpResponseMessage Export(ExportDto exportDto)
2532
{
2633
var controller = new ExportController();
@@ -29,14 +36,17 @@ public HttpResponseMessage Export(ExportDto exportDto)
2936
return this.Request.CreateResponse(HttpStatusCode.OK, new { jobId });
3037
}
3138

39+
/// <summary>
40+
/// Imports a site.
41+
/// </summary>
42+
/// <param name="importDto">The details required to import a site.</param>
43+
/// <returns>OK or BadRequest with a message.</returns>
3244
[HttpPost]
3345
[ValidateAntiForgeryToken]
34-
3546
public HttpResponseMessage Import(ImportDto importDto)
3647
{
3748
var controller = new ImportController();
38-
string message;
39-
if (controller.VerifyImportPackage(importDto.PackageId, null, out message))
49+
if (controller.VerifyImportPackage(importDto.PackageId, null, out var message))
4050
{
4151
var jobId = controller.QueueOperation(this.PortalSettings.UserId, importDto);
4252
return this.Request.CreateResponse(HttpStatusCode.OK, new { jobId });
@@ -45,14 +55,17 @@ public HttpResponseMessage Import(ImportDto importDto)
4555
return this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, message);
4656
}
4757

58+
/// <summary>
59+
/// Verifies an import package validity.
60+
/// </summary>
61+
/// <param name="packageId">The ID of the package to validate.</param>
62+
/// <returns>OK with a summary or BadRequest with an error message.</returns>
4863
[HttpGet]
49-
5064
public HttpResponseMessage VerifyImportPackage(string packageId)
5165
{
5266
var controller = new ImportController();
53-
string message;
5467
var summary = new ImportExportSummary();
55-
var isValid = controller.VerifyImportPackage(packageId, summary, out message);
68+
var isValid = controller.VerifyImportPackage(packageId, summary, out var message);
5669
summary.ConvertToLocal(this.UserInfo);
5770
return isValid
5871
? this.Request.CreateResponse(HttpStatusCode.OK, summary)
@@ -66,20 +79,22 @@ public HttpResponseMessage VerifyImportPackage(string packageId)
6679
/// <param name="pageSize">Page size. Should not be more than 100.</param>
6780
/// <returns>An <see cref="HttpResponseMessage"/>.</returns>
6881
[HttpGet]
69-
7082
public HttpResponseMessage GetImportPackages(string keyword = "", string order = "newest", int pageIndex = 0, int pageSize = 10)
7183
{
7284
var controller = new ImportController();
73-
int total;
74-
var packages = controller.GetImportPackages(out total, keyword, order, pageIndex, pageSize).ToList();
85+
var packages = controller.GetImportPackages(out var total, keyword, order, pageIndex, pageSize).ToList();
7586
packages.ForEach(package => package.ConvertToLocal(this.UserInfo));
7687
return this.Request.CreateResponse(HttpStatusCode.OK, new { packages, total });
7788
}
7889

79-
// this is POST so users can't cancel using a simple browser link
90+
/// <summary>
91+
/// Cancels a job.
92+
/// </summary>
93+
/// <param name="jobId">The ID of the job to cancel.</param>
94+
/// <remarks>This is a POST so users can't cancel using a simple browser link.</remarks>
95+
/// <returns>OK or a BadRequest with a cancel status value.</returns>
8096
[HttpPost]
8197
[ValidateAntiForgeryToken]
82-
8398
public HttpResponseMessage CancelProcess([FromUri] int jobId)
8499
{
85100
var controller = new BaseController();
@@ -88,10 +103,14 @@ public HttpResponseMessage CancelProcess([FromUri] int jobId)
88103
cancelStatus ? HttpStatusCode.OK : HttpStatusCode.BadRequest, new { success = cancelStatus });
89104
}
90105

91-
// this is POST so users can't remove a job using a browser link
106+
/// <summary>
107+
/// Removes a job.
108+
/// </summary>
109+
/// <param name="jobId">The ID of the job to remove.</param>
110+
/// <remarks>This is a POST so users can't remove a job using a browser link.</remarks>
111+
/// <returns>OK or a BadRequest with a status value.</returns>
92112
[HttpPost]
93113
[ValidateAntiForgeryToken]
94-
95114
public HttpResponseMessage RemoveJob([FromUri] int jobId)
96115
{
97116
var controller = new BaseController();
@@ -100,8 +119,13 @@ public HttpResponseMessage RemoveJob([FromUri] int jobId)
100119
cancelStatus ? HttpStatusCode.OK : HttpStatusCode.BadRequest, new { success = cancelStatus });
101120
}
102121

122+
/// <summary>
123+
/// Gets the last job time.
124+
/// </summary>
125+
/// <param name="portal">The ID of the portal to check.</param>
126+
/// <param name="jobType">Type of the job.</param>
127+
/// <returns>OK with the last time or a BadRequest with a message.</returns>
103128
[HttpGet]
104-
105129
public HttpResponseMessage LastJobTime(int portal, JobType jobType)
106130
{
107131
if (!this.UserInfo.IsSuperUser && portal != this.PortalSettings.PortalId)
@@ -124,8 +148,16 @@ public HttpResponseMessage LastJobTime(int portal, JobType jobType)
124148
new { lastTime = Util.GetDateTimeString(lastTime) });
125149
}
126150

151+
/// <summary>
152+
/// Gets all the jobs.
153+
/// </summary>
154+
/// <param name="portal">The ID of the portal to check.</param>
155+
/// <param name="pageSize">Size of the page.</param>
156+
/// <param name="pageIndex">Index of the page.</param>
157+
/// <param name="jobType">Type of the job.</param>
158+
/// <param name="keywords">The keywords to search for.</param>
159+
/// <returns>OK with a list of jobs or a BadRequest with an error message.</returns>
127160
[HttpGet]
128-
129161
public HttpResponseMessage AllJobs(int portal, int? pageSize = 10, int? pageIndex = 0, int? jobType = null, string keywords = null)
130162
{
131163
if (!this.UserInfo.IsSuperUser && portal != this.PortalSettings.PortalId)
@@ -140,8 +172,12 @@ public HttpResponseMessage AllJobs(int portal, int? pageSize = 10, int? pageInde
140172
return this.Request.CreateResponse(HttpStatusCode.OK, jobs);
141173
}
142174

175+
/// <summary>
176+
/// Jobs the details about a single job.
177+
/// </summary>
178+
/// <param name="jobId">The ID of the job to get.</param>
179+
/// <returns>OK with the job details or BadRequest with an error message.</returns>
143180
[HttpGet]
144-
145181
public HttpResponseMessage JobDetails(int jobId)
146182
{
147183
var controller = new BaseController();

0 commit comments

Comments
 (0)