diff --git a/umbraco/businesslogic/BasePages/BasePage.cs b/umbraco/businesslogic/BasePages/BasePage.cs index eed3dab726..1de62ae816 100644 --- a/umbraco/businesslogic/BasePages/BasePage.cs +++ b/umbraco/businesslogic/BasePages/BasePage.cs @@ -151,6 +151,8 @@ namespace umbraco.BasePages { if (timeout > DateTime.Now.Ticks) { return true; } else { + // clear the usercontext id to prevent continuous logout entries + BasePage.umbracoUserContextID = String.Empty; BusinessLogic.Log.Add(BusinessLogic.LogTypes.Logout, BusinessLogic.User.GetUser(uid), -1, ""); return false; diff --git a/umbraco/businesslogic/Exceptions/UserAuthorizationException.cs b/umbraco/businesslogic/Exceptions/UserAuthorizationException.cs new file mode 100644 index 0000000000..b27d8d0ae3 --- /dev/null +++ b/umbraco/businesslogic/Exceptions/UserAuthorizationException.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace umbraco.businesslogic.Exceptions +{ + /// + /// Exception class when an Umbraco user either has wrong credentials or insufficient permissions + /// + public class UserAuthorizationException : Exception + { + public UserAuthorizationException() + { + + } + + public UserAuthorizationException(string message) : base(message) + { + + } + } +} diff --git a/umbraco/presentation/umbraco/Trees/loadContent.cs b/umbraco/presentation/umbraco/Trees/loadContent.cs index 67d3c9f26c..5c02bf4cd0 100644 --- a/umbraco/presentation/umbraco/Trees/loadContent.cs +++ b/umbraco/presentation/umbraco/Trees/loadContent.cs @@ -78,10 +78,17 @@ namespace umbraco } else { - ///add the default actions to the content tree - actions.Add(ActionNew.Instance); - actions.Add(ActionSort.Instance); - actions.Add(ContextMenuSeperator.Instance); + // we need to get the default permissions as you can't set permissions on the very root node + List nodeActions = Action.FromString(CurrentUser.GetPermissions("-1")); + List allowedRootActions = new List(); + allowedRootActions.Add(ActionNew.Instance); + allowedRootActions.Add(ActionSort.Instance); + List allowedMenu = GetUserAllowedActions(allowedRootActions, nodeActions); + actions.AddRange(allowedMenu); + if (allowedMenu.Count > 0 ) + actions.Add(ContextMenuSeperator.Instance); + + // default actions for all users actions.Add(ActionRePublish.Instance); actions.Add(ContextMenuSeperator.Instance); actions.Add(ActionRefresh.Instance);