Skip to content

Commit 6e54c6f

Browse files
committed
Implementation for IContentDashboardSettings
1 parent eabfa7f commit 6e54c6f

File tree

5 files changed

+73
-8
lines changed

5 files changed

+73
-8
lines changed

src/Umbraco.Core/ConfigsExtensions.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
using Umbraco.Core.Configuration.Grid;
66
using Umbraco.Core.Configuration.HealthChecks;
77
using Umbraco.Core.Configuration.UmbracoSettings;
8+
using Umbraco.Core.Dashboards;
89
using Umbraco.Core.IO;
910
using Umbraco.Core.Logging;
1011
using Umbraco.Core.Manifest;
12+
using Umbraco.Core.Services;
1113

1214
namespace Umbraco.Core
1315
{
@@ -48,6 +50,10 @@ public static void AddCoreConfigs(this Configs configs)
4850
configDir,
4951
factory.GetInstance<ManifestParser>(),
5052
factory.GetInstance<IRuntimeState>().Debug));
53+
54+
configs.Add<IContentDashboardSettings>(factory =>
55+
new ContentDashboardSettings(factory.GetInstance<IGlobalSettings>(),
56+
factory.GetInstance<IUserService>()));
5157
}
5258
}
5359
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
using Umbraco.Core.Configuration;
7+
using Umbraco.Core.Services;
8+
9+
namespace Umbraco.Core.Dashboards
10+
{
11+
public class ContentDashboardSettings: IContentDashboardSettings
12+
{
13+
private readonly IGlobalSettings _globalSettings;
14+
private readonly IUserService _userService;
15+
16+
public ContentDashboardSettings(IGlobalSettings globalSettings, IUserService userService)
17+
{
18+
_globalSettings = globalSettings;
19+
_userService = userService;
20+
}
21+
22+
public IAccessRule[] GetAccessRulesFromConfig()
23+
{
24+
var rules = new List<IAccessRule>();
25+
26+
if (_globalSettings.AllowContentDashboardAccessToAllUsers)
27+
{
28+
var allUserGroups = _userService.GetAllUserGroups();
29+
30+
foreach (var userGroup in allUserGroups)
31+
{
32+
rules.Add(new AccessRule
33+
{
34+
Type = AccessRuleType.Grant,
35+
Value = userGroup.Alias
36+
});
37+
}
38+
}
39+
40+
return rules.ToArray();
41+
}
42+
}
43+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace Umbraco.Core.Dashboards
8+
{
9+
public interface IContentDashboardSettings
10+
{
11+
IAccessRule[] GetAccessRulesFromConfig();
12+
}
13+
}

src/Umbraco.Core/Umbraco.Core.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@
131131
<Compile Include="Constants-CharArrays.cs" />
132132
<Compile Include="Collections\EventClearingObservableCollection.cs" />
133133
<Compile Include="Constants-SqlTemplates.cs" />
134+
<Compile Include="Dashboards\ContentDashboardSettings.cs" />
135+
<Compile Include="Dashboards\IContentDashboardSettings.cs" />
134136
<Compile Include="Exceptions\UnattendedInstallException.cs" />
135137
<Compile Include="Migrations\Upgrade\V_8_0_0\Models\ContentTypeDto80.cs" />
136138
<Compile Include="Migrations\Upgrade\V_8_0_0\Models\PropertyDataDto80.cs" />

src/Umbraco.Web/Dashboards/ContentDashboard.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ namespace Umbraco.Web.Dashboards
1010
[Weight(10)]
1111
public class ContentDashboard : IDashboard
1212
{
13+
private readonly IContentDashboardSettings _dashboardSettings;
1314
public string Alias => "contentIntro";
1415

1516
public string[] Sections => new[] { "content" };
@@ -20,24 +21,24 @@ public IAccessRule[] AccessRules
2021
{
2122
get
2223
{
23-
IAccessRule[] rules;
24-
var dashboardConfig = Path.Combine(IOHelper.MapPath(SystemDirectories.Config), "content.dashboard.access.config.js");
24+
var rules = _dashboardSettings.GetAccessRulesFromConfig();
2525

26-
if (File.Exists(dashboardConfig))
27-
{
28-
var rawJson = File.ReadAllText(dashboardConfig);
29-
rules = JsonConvert.DeserializeObject<AccessRule[]>(rawJson);
30-
}
31-
else
26+
if (rules.Length == 0)
3227
{
3328
rules = new IAccessRule[]
3429
{
3530
new AccessRule {Type = AccessRuleType.Deny, Value = Constants.Security.TranslatorGroupAlias},
3631
new AccessRule {Type = AccessRuleType.Grant, Value = Constants.Security.AdminGroupAlias}
3732
};
3833
}
34+
3935
return rules;
4036
}
4137
}
38+
39+
public ContentDashboard(IContentDashboardSettings dashboardSettings)
40+
{
41+
_dashboardSettings = dashboardSettings;
42+
}
4243
}
4344
}

0 commit comments

Comments
 (0)