From 5d37adf09bb56d8dcab04fd43b7d4a8197652f21 Mon Sep 17 00:00:00 2001 From: vfedosevich Date: Sat, 10 Jan 2015 06:00:59 -0800 Subject: [PATCH] web portal folder permission fix --- .../Controllers/AccountController.cs | 1 + .../WebsitePanel.WebDavPortal/Global.asax.cs | 2 ++ .../Models/AccountModel.cs | 2 ++ .../Models/WebDavManager.cs | 8 +++++++- .../WebsitePanel.WebDavPortal/Web.config | 19 +++++++++++++++++-- .../WebsitePanel.WebDavPortal.csproj | 3 +++ .../WebsitePanel.WebDavPortal/packages.config | 1 + 7 files changed, 33 insertions(+), 3 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Controllers/AccountController.cs b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Controllers/AccountController.cs index 7c9f5602..a6d39fd8 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Controllers/AccountController.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Controllers/AccountController.cs @@ -61,6 +61,7 @@ namespace WebsitePanel.WebDavPortal.Controllers Session[WebDavAppConfigManager.Instance.SessionKeys.ItemId] = exchangeAccount.ItemId; model.Groups = ES.Services.Organizations.GetSecurityGroupsByMember(exchangeAccount.ItemId, exchangeAccount.AccountId); + model.DisplayName = exchangeAccount.DisplayName; WebDavManager manager = null; diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Global.asax.cs b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Global.asax.cs index f62048b9..e56e596a 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Global.asax.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Global.asax.cs @@ -18,6 +18,8 @@ namespace WebsitePanel.WebDavPortal BundleConfig.RegisterBundles(BundleTable.Bundles); DependencyResolver.SetResolver(new NinjectDependecyResolver()); + + log4net.Config.XmlConfigurator.Configure(); } protected void Application_Error(object sender, EventArgs e) diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Models/AccountModel.cs b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Models/AccountModel.cs index 2ad1e6a8..b5b778d1 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Models/AccountModel.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Models/AccountModel.cs @@ -23,6 +23,8 @@ namespace WebsitePanel.WebDavPortal.Models } } + public string DisplayName { get; set; } + public IEnumerable Groups { get; set; } public string LdapError { get; set; } diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Models/WebDavManager.cs b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Models/WebDavManager.cs index d4ba4fba..c021050b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Models/WebDavManager.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Models/WebDavManager.cs @@ -12,13 +12,16 @@ using WebsitePanel.Providers.OS; using Ninject; using WebsitePanel.WebDavPortal.DependencyInjection; using System.Web.Mvc; +using log4net; namespace WebsitePanel.WebDavPortal.Models { public class WebDavManager : IWebDavManager { private readonly WebDavSession _webDavSession = new WebDavSession(); + private readonly AccountModel _accountModel; + private readonly ILog Log; private IList _rootFolders; private int _itemId; @@ -40,6 +43,7 @@ namespace WebsitePanel.WebDavPortal.Models public WebDavManager(NetworkCredential credential, int itemId) { _accountModel = DependencyResolver.Current.GetService(); + Log = LogManager.GetLogger(this.GetType()); _webDavSession.Credentials = credential; _itemId = itemId; @@ -132,13 +136,15 @@ namespace WebsitePanel.WebDavPortal.Models private IList ConnectToWebDavServer(AccountModel user) { var rootFolders = new List(); + foreach (var folder in ES.Services.EnterpriseStorage.GetEnterpriseFolders(_itemId)) { var permissions = ES.Services.EnterpriseStorage.GetEnterpriseFolderPermissions(_itemId, folder.Name); foreach (var permission in permissions) { - if ((!permission.IsGroup && permission.DisplayName == user.UserName) + if ((!permission.IsGroup + && (permission.DisplayName == user.UserName || permission.DisplayName == user.DisplayName)) || (permission.IsGroup && user.Groups.Any(x=> x.DisplayName == permission.DisplayName))) { rootFolders.Add(folder); diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Web.config b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Web.config index c45fcad6..3acfef9f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Web.config +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Web.config @@ -1,12 +1,27 @@ - + -
+
+
+ + + + + + + + + + + + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/WebsitePanel.WebDavPortal.csproj b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/WebsitePanel.WebDavPortal.csproj index faebb242..369a9e7b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/WebsitePanel.WebDavPortal.csproj +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/WebsitePanel.WebDavPortal.csproj @@ -48,6 +48,9 @@ False ..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll + + ..\packages\log4net.2.0.0\lib\net40-full\log4net.dll + ..\..\Lib\Microsoft.Web.Services3.dll diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/packages.config b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/packages.config index 5c38485f..e9fed748 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/packages.config +++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/packages.config @@ -4,6 +4,7 @@ +