diff --git a/Perplex.Umbraco.Forms/Code/StartNodeUserPermissions.cs b/Perplex.Umbraco.Forms/Code/StartNodeUserPermissions.cs
new file mode 100644
index 0000000..4078447
--- /dev/null
+++ b/Perplex.Umbraco.Forms/Code/StartNodeUserPermissions.cs
@@ -0,0 +1,83 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Umbraco.Core.Models.Membership;
+using Umbraco.Web;
+
+namespace PerplexUmbraco.Forms.Code
+{
+ public static class StartNodeUserPermissions
+ {
+ ///
+ /// Applies Form Start Node permissions to collection of users
+ ///
+ /// Collection of users to iterate over and apply permissions to
+ /// Perplex folder to use for assigning access
+ ///
+ /// In order for this to assign the user permissions to the Perplex Folder Start Node, then the
+ /// user must have a matching Start Content Node name that matches the Perplex Folder name.
+ /// Ex. User has been assigned a Start Content Node of "Testing"; a Perplex folder is created
+ /// with the same name "Testing" so the user will be automatically assigned this folder as a
+ /// Start Form Node within Perplex
+ ///
+ public static void ApplyFolderPermissionsToUsers(IEnumerable users, PerplexFolder folder)
+ {
+ // iterate over each user
+ foreach (var user in users)
+ {
+ // get the user's start content nodes
+ List userStartNodes = GetStartContentNodesByUser(user);
+
+ // iterate over the user's start content nodes
+ foreach (var node in userStartNodes)
+ {
+ // check to see if the name of the perplex folder matches the name of the user's content start node
+ if (folder.Name.Trim().ToLower() == node.Name.ToString().Trim().ToLower())
+ {
+ // add the folder to the list of user's Form Start Nodes
+ // delete any association between a user and this folder being deleted
+ try { Sql.ExecuteSql("INSERT INTO [perplexUmbracoUser] (userId, formsStartNode) VALUES (@userId, @formsStartNode)", parameters: new { userId = user.Id, formsStartNode = folder.Id }); }
+ catch (Exception) { }
+ }
+ }
+ }
+ }
+
+ ///
+ /// Deletes the assocation of the form being deleted with any users in the perplexUmbracoUser table
+ ///
+ /// GUID of the folder being deleted
+ public static void DeleteUserAssociationWithFolder(string folderId)
+ {
+ try { Sql.ExecuteSql("DELETE FROM [perplexUmbracoUser] WHERE formsStartNode = @formsStartNode", parameters: new { formsStartNode = folderId }); }
+ catch (Exception) { }
+ }
+
+ ///
+ /// Gets all the content start nodes associated with a specific IUser
+ ///
+ /// IUser account to retrieve content start nodes
+ ///
+ public static List GetStartContentNodesByUser(IUser user)
+ {
+ Umbraco.Web.UmbracoHelper helper = new UmbracoHelper(UmbracoContext.Current);
+ List contentNodes = new List();
+
+ foreach (int id in user.StartContentIds)
+ {
+ var node = helper.ContentQuery.Content(id);
+
+ // only add this node to the collection if it's of type www_section
+ if (node.DocumentTypeAlias.ToLower() == "www_section")
+ {
+ // add the content node to the collection
+ contentNodes.Add(node);
+ }
+ }
+
+ return contentNodes;
+ }
+ }
+}
diff --git a/Perplex.Umbraco.Forms/Controllers/PerplexUmbracoFormController.cs b/Perplex.Umbraco.Forms/Controllers/PerplexUmbracoFormController.cs
index 19aa2b9..b781eae 100644
--- a/Perplex.Umbraco.Forms/Controllers/PerplexUmbracoFormController.cs
+++ b/Perplex.Umbraco.Forms/Controllers/PerplexUmbracoFormController.cs
@@ -11,11 +11,13 @@
using System.Web.Hosting;
using System.Web.Http;
using Umbraco.Core.IO;
+using Umbraco.Core.Models.Membership;
using Umbraco.Forms.Core.Providers;
using Umbraco.Forms.Data;
using Umbraco.Forms.Data.Storage;
using Umbraco.Forms.Mvc.Models.Backoffice;
using Umbraco.Forms.Web.Models.Backoffice;
+using Umbraco.Web;
using Umbraco.Web.Editors;
using Umbraco.Web.Mvc;
using Umbraco.Web.WebApi;
@@ -134,6 +136,12 @@ public HttpResponseMessage CreateFolder(string parentId, string name)
PerplexFolder.Add(folder, parentId);
+ // now find any users who have a content start type that matches the perplex folder's name
+ IEnumerable users = Services.UserService.GetAll(0, int.MaxValue, out int total);
+
+ // with the new form created, check with users need to be assigned to its Form Start Node
+ StartNodeUserPermissions.ApplyFolderPermissionsToUsers(users, folder);
+
return Request.CreateResponse(HttpStatusCode.OK, folder);
}
@@ -155,6 +163,8 @@ public HttpResponseMessage Update(PerplexFolder folder)
folderToUpdate.Update(folder);
+ // TODO: Update() - add code to update the users' associated with this folder
+
// Return the updated folder
return Request.CreateResponse(HttpStatusCode.OK, folderToUpdate);
}
@@ -265,6 +275,9 @@ public HttpResponseMessage DeleteFolder(string folderId, bool deleteForms)
}
}
+ // delete any association between a user and this folder being deleted
+ StartNodeUserPermissions.DeleteUserAssociationWithFolder(folderId);
+
PerplexFolder parentFolder = folder.GetParent();
// Remove this folder
diff --git a/Perplex.Umbraco.Forms/Perplex.Umbraco.Forms.csproj b/Perplex.Umbraco.Forms/Perplex.Umbraco.Forms.csproj
index 23d0741..b052441 100644
--- a/Perplex.Umbraco.Forms/Perplex.Umbraco.Forms.csproj
+++ b/Perplex.Umbraco.Forms/Perplex.Umbraco.Forms.csproj
@@ -36,49 +36,46 @@
..\packages\AutoMapper.3.3.1\lib\net40\AutoMapper.Net4.dll
-
- ..\packages\UmbracoCms.Core.7.6.0\lib\net45\businesslogic.dll
+
+ ..\packages\UmbracoCms.Core.7.15.4\lib\net452\businesslogic.dll
-
- ..\packages\ClientDependency.1.9.2\lib\net45\ClientDependency.Core.dll
+
+ ..\packages\ClientDependency.1.9.9\lib\net45\ClientDependency.Core.dll
..\packages\ClientDependency-Mvc5.1.8.0.0\lib\net45\ClientDependency.Core.Mvc.dll
-
- ..\packages\UmbracoCms.Core.7.6.0\lib\net45\cms.dll
+
+ ..\packages\UmbracoCms.Core.7.15.4\lib\net452\cms.dll
-
- ..\packages\UmbracoCms.Core.7.6.0\lib\net45\controls.dll
+
+ ..\packages\UmbracoCms.Core.7.15.4\lib\net452\controls.dll
..\packages\xmlrpcnet.2.5.0\lib\net20\CookComputing.XmlRpcV2.dll
True
-
- ..\packages\UmbracoForms.Core.6.0.1\lib\EPPlus.dll
+
+ ..\packages\Examine.0.1.90\lib\net45\Examine.dll
-
- ..\packages\Examine.0.1.82\lib\net45\Examine.dll
-
-
- ..\packages\HtmlAgilityPack.1.4.9.5\lib\Net45\HtmlAgilityPack.dll
+
+ ..\packages\HtmlAgilityPack.1.8.8\lib\Net45\HtmlAgilityPack.dll
..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll
True
-
- ..\packages\ImageProcessor.2.5.3\lib\net45\ImageProcessor.dll
+
+ ..\packages\ImageProcessor.2.7.0.100\lib\net452\ImageProcessor.dll
-
- ..\packages\ImageProcessor.Web.4.8.3\lib\net45\ImageProcessor.Web.dll
+
+ ..\packages\ImageProcessor.Web.4.10.0.100\lib\net452\ImageProcessor.Web.dll
-
- ..\packages\UmbracoCms.Core.7.6.0\lib\net45\interfaces.dll
+
+ ..\packages\UmbracoCms.Core.7.15.4\lib\net452\interfaces.dll
- ..\packages\UmbracoCms.Core.7.6.0\lib\net45\log4net.dll
+ ..\packages\UmbracoCms.Core.7.15.4\lib\net452\log4net.dll
..\packages\Log4Net.Async.2.0.4\lib\net40\Log4Net.Async.dll
@@ -91,34 +88,34 @@
..\packages\Markdown.1.14.7\lib\net45\MarkdownSharp.dll
- ..\packages\UmbracoCms.Core.7.6.0\lib\net45\Microsoft.ApplicationBlocks.Data.dll
+ ..\packages\UmbracoCms.Core.7.15.4\lib\net452\Microsoft.ApplicationBlocks.Data.dll
- ..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll
+ ..\packages\Microsoft.AspNet.Identity.Core.2.2.2\lib\net45\Microsoft.AspNet.Identity.Core.dll
- ..\packages\Microsoft.AspNet.Identity.Owin.2.2.1\lib\net45\Microsoft.AspNet.Identity.Owin.dll
+ ..\packages\Microsoft.AspNet.Identity.Owin.2.2.2\lib\net45\Microsoft.AspNet.Identity.Owin.dll
-
- ..\packages\Microsoft.AspNet.SignalR.Core.2.2.1\lib\net45\Microsoft.AspNet.SignalR.Core.dll
+
+ ..\packages\Microsoft.AspNet.SignalR.Core.2.4.1\lib\net45\Microsoft.AspNet.SignalR.Core.dll
-
- ..\packages\Microsoft.IO.RecyclableMemoryStream.1.2.1\lib\net45\Microsoft.IO.RecyclableMemoryStream.dll
+
+ ..\packages\Microsoft.IO.RecyclableMemoryStream.1.2.2\lib\net45\Microsoft.IO.RecyclableMemoryStream.dll
-
- ..\packages\Microsoft.Owin.3.0.1\lib\net45\Microsoft.Owin.dll
+
+ ..\packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll
-
- ..\packages\Microsoft.Owin.Host.SystemWeb.3.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll
+
+ ..\packages\Microsoft.Owin.Host.SystemWeb.4.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll
-
- ..\packages\Microsoft.Owin.Security.3.0.1\lib\net45\Microsoft.Owin.Security.dll
+
+ ..\packages\Microsoft.Owin.Security.4.0.1\lib\net45\Microsoft.Owin.Security.dll
-
- ..\packages\Microsoft.Owin.Security.Cookies.3.0.1\lib\net45\Microsoft.Owin.Security.Cookies.dll
+
+ ..\packages\Microsoft.Owin.Security.Cookies.4.0.1\lib\net45\Microsoft.Owin.Security.Cookies.dll
-
- ..\packages\Microsoft.Owin.Security.OAuth.3.0.1\lib\net45\Microsoft.Owin.Security.OAuth.dll
+
+ ..\packages\Microsoft.Owin.Security.OAuth.4.0.1\lib\net45\Microsoft.Owin.Security.OAuth.dll
..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
@@ -131,8 +128,8 @@
..\packages\MySql.Data.6.9.9\lib\net45\MySql.Data.dll
-
- ..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll
+
+ ..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll
..\packages\Owin.1.0\lib\net40\Owin.dll
@@ -140,48 +137,55 @@
..\packages\semver.1.1.2\lib\net451\Semver.dll
-
- ..\packages\UmbracoCms.Core.7.6.0\lib\net45\SQLCE4Umbraco.dll
+
+ ..\packages\UmbracoCms.Core.7.15.4\lib\net452\SQLCE4Umbraco.dll
+
- ..\packages\UmbracoCms.Core.7.6.0\lib\net45\System.Data.SqlServerCe.dll
+ ..\packages\UmbracoCms.Core.7.15.4\lib\net452\System.Data.SqlServerCe.dll
- ..\packages\UmbracoCms.Core.7.6.0\lib\net45\System.Data.SqlServerCe.Entity.dll
+ ..\packages\UmbracoCms.Core.7.15.4\lib\net452\System.Data.SqlServerCe.Entity.dll
-
- ..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll
+
+
+
+ ..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll
-
- ..\packages\System.Threading.Tasks.Dataflow.4.7.0\lib\portable-net45+win8+wpa81\System.Threading.Tasks.Dataflow.dll
+
+
+ ..\packages\System.Threading.Tasks.Dataflow.4.9.0\lib\portable-net45+win8+wpa81\System.Threading.Tasks.Dataflow.dll
+
+
+ ..\packages\System.ValueTuple.4.5.0\lib\netstandard1.0\System.ValueTuple.dll
- ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.Helpers.dll
+ ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.Helpers.dll
-
- ..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll
+
+ ..\packages\Microsoft.AspNet.WebApi.Core.5.2.7\lib\net45\System.Web.Http.dll
-
- ..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.3\lib\net45\System.Web.Http.WebHost.dll
+
+ ..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.7\lib\net45\System.Web.Http.WebHost.dll
-
- ..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll
+
+ ..\packages\Microsoft.AspNet.Mvc.5.2.7\lib\net45\System.Web.Mvc.dll
- ..\packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll
+ ..\packages\Microsoft.AspNet.Razor.3.2.7\lib\net45\System.Web.Razor.dll
- ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.dll
+ ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.dll
- ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Deployment.dll
+ ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Deployment.dll
- ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Razor.dll
+ ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Razor.dll
@@ -190,43 +194,46 @@
- ..\packages\UmbracoCms.Core.7.6.0\lib\net45\TidyNet.dll
+ ..\packages\UmbracoCms.Core.7.15.4\lib\net452\TidyNet.dll
+
+
+ ..\packages\UmbracoCms.Core.7.15.4\lib\net452\umbraco.dll
-
- ..\packages\UmbracoCms.Core.7.6.0\lib\net45\umbraco.dll
+
+ ..\packages\UmbracoCms.Core.7.15.4\lib\net452\Umbraco.Core.dll
-
- ..\packages\UmbracoCms.Core.7.6.0\lib\net45\Umbraco.Core.dll
+
+ ..\packages\UmbracoCms.Core.7.15.4\lib\net452\umbraco.DataLayer.dll
-
- ..\packages\UmbracoCms.Core.7.6.0\lib\net45\umbraco.DataLayer.dll
+
+ ..\packages\UmbracoCms.Core.7.15.4\lib\net452\umbraco.editorControls.dll
-
- ..\packages\UmbracoCms.Core.7.6.0\lib\net45\umbraco.editorControls.dll
+
+ ..\packages\UmbracoForms.Core.7.4.0\lib\Umbraco.Forms.Core.dll
-
- ..\packages\UmbracoForms.Core.6.0.1\lib\Umbraco.Forms.Core.dll
+
+ ..\packages\UmbracoForms.Core.7.4.0\lib\Umbraco.Forms.Core.Providers.dll
-
- ..\packages\UmbracoForms.Core.6.0.1\lib\Umbraco.Forms.Core.Providers.dll
+
+ ..\packages\UmbracoForms.Core.7.4.0\lib\Umbraco.Forms.Web.dll
-
- ..\packages\UmbracoForms.Core.6.0.1\lib\Umbraco.Forms.Web.dll
+
+ ..\packages\UmbracoForms.Core.7.4.0\lib\Umbraco.Forms.Web.XmlSerializers.dll
- ..\packages\UmbracoForms.Core.6.0.1\lib\Umbraco.Licensing.dll
+ ..\packages\UmbracoForms.Core.7.4.0\lib\Umbraco.Licensing.dll
-
- ..\packages\UmbracoCms.Core.7.6.0\lib\net45\umbraco.MacroEngines.dll
+
+ ..\packages\UmbracoCms.Core.7.15.4\lib\net452\umbraco.MacroEngines.dll
-
- ..\packages\UmbracoCms.Core.7.6.0\lib\net45\umbraco.providers.dll
+
+ ..\packages\UmbracoCms.Core.7.15.4\lib\net452\umbraco.providers.dll
-
- ..\packages\UmbracoCms.Core.7.6.0\lib\net45\Umbraco.Web.UI.dll
+
+ ..\packages\UmbracoCms.Core.7.15.4\lib\net452\Umbraco.Web.UI.dll
-
- ..\packages\UmbracoCms.Core.7.6.0\lib\net45\UmbracoExamine.dll
+
+ ..\packages\UmbracoCms.Core.7.15.4\lib\net452\UmbracoExamine.dll
@@ -242,6 +249,7 @@
+
diff --git a/Perplex.Umbraco.Forms/app.config b/Perplex.Umbraco.Forms/app.config
index d4774eb..eca3181 100644
--- a/Perplex.Umbraco.Forms/app.config
+++ b/Perplex.Umbraco.Forms/app.config
@@ -4,7 +4,7 @@
-
+
@@ -12,7 +12,7 @@
-
+
@@ -28,19 +28,27 @@
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
diff --git a/Perplex.Umbraco.Forms/packages.config b/Perplex.Umbraco.Forms/packages.config
index 46aa4a3..0b3d724 100644
--- a/Perplex.Umbraco.Forms/packages.config
+++ b/Perplex.Umbraco.Forms/packages.config
@@ -1,45 +1,46 @@
-
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
+
-
-
-
+
+
+
+
\ No newline at end of file