1- using System . IO ;
2- using Newtonsoft . Json ;
1+ using System . Collections . Generic ;
32using Umbraco . Core ;
43using Umbraco . Core . Composing ;
54using Umbraco . Core . Dashboards ;
6- using Umbraco . Core . IO ;
5+ using Umbraco . Core . Services ;
76
87namespace Umbraco . Web . Dashboards
98{
109 [ Weight ( 10 ) ]
1110 public class ContentDashboard : IDashboard
1211 {
1312 private readonly IContentDashboardSettings _dashboardSettings ;
13+ private readonly IUserService _userService ;
14+ private IAccessRule [ ] _accessRulesFromConfig ;
15+
1416 public string Alias => "contentIntro" ;
1517
1618 public string [ ] Sections => new [ ] { "content" } ;
@@ -21,7 +23,7 @@ public IAccessRule[] AccessRules
2123 {
2224 get
2325 {
24- var rules = _dashboardSettings . GetAccessRulesFromConfig ( ) ;
26+ var rules = AccessRulesFromConfig ;
2527
2628 if ( rules . Length == 0 )
2729 {
@@ -36,9 +38,39 @@ public IAccessRule[] AccessRules
3638 }
3739 }
3840
39- public ContentDashboard ( IContentDashboardSettings dashboardSettings )
41+ private IAccessRule [ ] AccessRulesFromConfig
42+ {
43+ get
44+ {
45+ if ( _accessRulesFromConfig is null )
46+ {
47+ var rules = new List < IAccessRule > ( ) ;
48+
49+ if ( _dashboardSettings . AllowContentDashboardAccessToAllUsers )
50+ {
51+ var allUserGroups = _userService . GetAllUserGroups ( ) ;
52+
53+ foreach ( var userGroup in allUserGroups )
54+ {
55+ rules . Add ( new AccessRule
56+ {
57+ Type = AccessRuleType . Grant ,
58+ Value = userGroup . Alias
59+ } ) ;
60+ }
61+ }
62+
63+ _accessRulesFromConfig = rules . ToArray ( ) ;
64+ }
65+
66+ return _accessRulesFromConfig ;
67+ }
68+ }
69+
70+ public ContentDashboard ( IContentDashboardSettings dashboardSettings , IUserService userService )
4071 {
4172 _dashboardSettings = dashboardSettings ;
73+ _userService = userService ;
4274 }
4375 }
4476}
0 commit comments