diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/MultiUserExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/MultiUserExt.cs index f8c5a110..3b8beae9 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/MultiUserExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/MultiUserExt.cs @@ -1089,7 +1089,7 @@ namespace VEPROMS.CSLA.Library } public static bool CanCreateFolders(UserInfo myUserInfo, FolderInfo fi) { - return myUserInfo != null && fi != null && myUserInfo.IsAdministrator() || myUserInfo.IsSetAdministrator(fi); + return myUserInfo != null && fi != null && myUserInfo.IsAdministrator() || myUserInfo.IsSetAdministrator(fi.MyParent); //B2020-111 allow if set amin controls parent } public bool IsAdministrator() { @@ -1108,9 +1108,12 @@ namespace VEPROMS.CSLA.Library } return false; } - public bool IsSetAdministrator(FolderInfo fi) + //B2020-111, B2020-114, C2020-035 this was setting the passed in parameter, such that the first time this + // was called, the passed in parameter was set to the top node (VEPROMS). The check of other folders + // would then be skipped (from where is called) + public bool IsSetAdministrator(FolderInfo fldinf) { - if (this.UserMembershipCount == 0) + if (this.UserMembershipCount == 0 || fldinf == null) return false; foreach (MembershipInfo mi in this.UserMemberships) { @@ -1118,6 +1121,7 @@ namespace VEPROMS.CSLA.Library { Dictionary folders = new Dictionary(); //FolderInfo fi = FolderInfo.Get(dv.MyFolder.FolderID); + FolderInfo fi = fldinf; while (fi.FolderID > 1) { folders.Add(fi.FolderID, fi.FolderID);