private void checkAccessTest(TreeNode tn, Boolean turboMode, Hashtable resultCache, Hashtable attributesCache) { string sItemType = String.Empty; switch (tn.ImageIndex) { case 3: sItemType = Globalization.MultilanguageResource.GetString("Domain_Role"); break; case 4: sItemType = Globalization.MultilanguageResource.GetString("Domain_Task"); break; case 5: sItemType = Globalization.MultilanguageResource.GetString("Domain_Operation"); break; } AuthorizationType auth = AuthorizationType.Neutral; string sAuth = String.Empty; Stopwatch elapsed = new Stopwatch(); List<KeyValuePair<string, string>> attributes = null; //Cache Build if (this.chkCache.Checked && this.cache == null) { this.WriteDetailMessage("Building UserPermissionCache ..."); if (this.wid != null) { this.cache = new NetSqlAzMan.Cache.UserPermissionCache(this.application.Store.Storage, this.application.Store.Name, this.application.Name, this.wid, true, true); } else if (this.dbuser != null) { this.cache = new NetSqlAzMan.Cache.UserPermissionCache(this.application.Store.Storage, this.application.Store.Name, this.application.Name, this.dbuser, true, true); } elapsed.Stop(); this.WriteLineDetailMessage(String.Format("[{0} mls.]\r\n", elapsed.ElapsedMilliseconds)); } else if (this.chkStorageCache.Checked && this.storageCache == null) { this.WriteDetailMessage("Building StorageCache ..."); this.storageCache = new NetSqlAzMan.Cache.StorageCache(this.application.Store.Storage.ConnectionString); this.storageCache.BuildStorageCache(this.application.Store.Name, application.Name); elapsed.Stop(); this.WriteLineDetailMessage(String.Format("[{0} mls.]\r\n", elapsed.ElapsedMilliseconds)); } elapsed.Restart(); this.WriteDetailMessage(String.Format("{0} {1} '{2}' ... ", Globalization.MultilanguageResource.GetString("frmCheckAccessTest_Msg70"), sItemType, tn.Text)); try { String itemName = tn.Text; if (!resultCache.ContainsKey(itemName)) { if (this.wid != null) { if (this.chkCache.Checked) { auth = this.cache.CheckAccess(tn.Text, this.dtValidFor.Checked ? this.dtValidFor.Value : DateTime.Now, out attributes); } else if (this.chkStorageCache.Checked) { IAzManItem item = (IAzManItem)tn.Tag; auth = this.storageCache.CheckAccess(item.Application.Store.Name, item.Application.Name, item.Name, this.wid.GetUserBinarySSid(), this.wid.GetGroupsBinarySSid(), this.dtValidFor.Checked ? this.dtValidFor.Value : DateTime.Now, false, out attributes); } else { auth = this.application.Store.Storage.CheckAccess(this.application.Store.Name, this.application.Name, tn.Text, this.wid, this.dtValidFor.Checked ? this.dtValidFor.Value : DateTime.Now, false, out attributes); } } else if (this.dbuser != null) { if (this.chkCache.Checked) { auth = this.cache.CheckAccess(tn.Text, this.dtValidFor.Checked ? this.dtValidFor.Value : DateTime.Now, out attributes); } else if (this.chkStorageCache.Checked) { IAzManItem item = (IAzManItem)tn.Tag; auth = this.storageCache.CheckAccess(item.Application.Store.Name, item.Application.Name, item.Name, this.dbuser.CustomSid.StringValue, this.dtValidFor.Checked ? this.dtValidFor.Value : DateTime.Now, false); } else { auth = this.application.Store.Storage.CheckAccess(this.application.Store.Name, this.application.Name, tn.Text, this.dbuser, this.dtValidFor.Checked ? this.dtValidFor.Value : DateTime.Now, false, out attributes); } } resultCache.Add(itemName, auth); attributesCache.Add(itemName, attributes); } else { auth = (AuthorizationType)resultCache[itemName]; attributes = (List<KeyValuePair<String, String>>)attributesCache[itemName]; } elapsed.Stop(); sAuth = Globalization.MultilanguageResource.GetString("Domain_Neutral"); switch (auth) { case AuthorizationType.AllowWithDelegation: sAuth = Globalization.MultilanguageResource.GetString("Domain_AllowWithDelegation"); tn.BackColor = Color.SkyBlue; break; case AuthorizationType.Allow: sAuth = Globalization.MultilanguageResource.GetString("Domain_Allow"); tn.BackColor = Color.LightGreen; break; case AuthorizationType.Deny: sAuth = Globalization.MultilanguageResource.GetString("Domain_Deny"); tn.BackColor = Color.LightSalmon; break; case AuthorizationType.Neutral: sAuth = Globalization.MultilanguageResource.GetString("Domain_Neutral"); tn.BackColor = Color.Gainsboro; break; } this.WriteLineDetailMessage(String.Format("{0} [{1} mls.]", sAuth, elapsed.ElapsedMilliseconds)); if (attributes != null && attributes.Count > 0) { this.WriteLineDetailMessage(String.Format(" {0} attribute(s) found:", attributes.Count)); int attributeIndex = 0; foreach (KeyValuePair<string, string> attr in attributes) { this.WriteLineDetailMessage(String.Format(" {0}) Key: {1} Value: {2}", ++attributeIndex, attr.Key, attr.Value)); } } } catch (Exception ex) { sAuth = Globalization.MultilanguageResource.GetString("frmCheckAccessTest_Msg10"); this.WriteLineDetailMessage(String.Format("{0} [{1} mls.]", ex.Message, elapsed.ElapsedMilliseconds)); } tn.Text = String.Format("{0} - ({1})", tn.Text, sAuth.ToUpper()); if (!turboMode) { tn.EnsureVisible(); Application.DoEvents(); } foreach (TreeNode tnChild in tn.Nodes) { this.checkAccessTest(tnChild, turboMode, resultCache, attributesCache); } }
private void checkAccessTest(TreeNode tn, Boolean turboMode, Hashtable resultCache, Hashtable attributesCache) { string sItemType = String.Empty; switch (tn.ImageIndex) { case 3: sItemType = Globalization.MultilanguageResource.GetString("Domain_Role"); break; case 4: sItemType = Globalization.MultilanguageResource.GetString("Domain_Task"); break; case 5: sItemType = Globalization.MultilanguageResource.GetString("Domain_Operation"); break; } AuthorizationType auth = AuthorizationType.Neutral; string sAuth = String.Empty; Stopwatch elapsed = new Stopwatch(); List <KeyValuePair <string, string> > attributes = null; //Cache Build if (this.chkCache.Checked && this.cache == null) { this.WriteDetailMessage("Building UserPermissionCache ..."); if (this.wid != null) { this.cache = new NetSqlAzMan.Cache.UserPermissionCache(this.application.Store.Storage, this.application.Store.Name, this.application.Name, this.wid, true, true); } else if (this.dbuser != null) { this.cache = new NetSqlAzMan.Cache.UserPermissionCache(this.application.Store.Storage, this.application.Store.Name, this.application.Name, this.dbuser, true, true); } elapsed.Stop(); this.WriteLineDetailMessage(String.Format("[{0} mls.]\r\n", elapsed.ElapsedMilliseconds)); } else if (this.chkStorageCache.Checked && this.storageCache == null) { this.WriteDetailMessage("Building StorageCache ..."); this.storageCache = new NetSqlAzMan.Cache.StorageCache(this.application.Store.Storage.ConnectionString); this.storageCache.BuildStorageCache(this.application.Store.Name, application.Name); elapsed.Stop(); this.WriteLineDetailMessage(String.Format("[{0} mls.]\r\n", elapsed.ElapsedMilliseconds)); } elapsed.Restart(); this.WriteDetailMessage(String.Format("{0} {1} '{2}' ... ", Globalization.MultilanguageResource.GetString("frmCheckAccessTest_Msg70"), sItemType, tn.Text)); try { String itemName = tn.Text; if (!resultCache.ContainsKey(itemName)) { if (this.wid != null) { if (this.chkCache.Checked) { auth = this.cache.CheckAccess(tn.Text, this.dtValidFor.Checked ? this.dtValidFor.Value : DateTime.Now, out attributes); } else if (this.chkStorageCache.Checked) { IAzManItem item = (IAzManItem)tn.Tag; auth = this.storageCache.CheckAccess(item.Application.Store.Name, item.Application.Name, item.Name, this.wid.GetUserBinarySSid(), this.wid.GetGroupsBinarySSid(), this.dtValidFor.Checked ? this.dtValidFor.Value : DateTime.Now, false, out attributes); } else { auth = this.application.Store.Storage.CheckAccess(this.application.Store.Name, this.application.Name, tn.Text, this.wid, this.dtValidFor.Checked ? this.dtValidFor.Value : DateTime.Now, false, out attributes); } } else if (this.dbuser != null) { if (this.chkCache.Checked) { auth = this.cache.CheckAccess(tn.Text, this.dtValidFor.Checked ? this.dtValidFor.Value : DateTime.Now, out attributes); } else if (this.chkStorageCache.Checked) { IAzManItem item = (IAzManItem)tn.Tag; auth = this.storageCache.CheckAccess(item.Application.Store.Name, item.Application.Name, item.Name, this.dbuser.CustomSid.StringValue, this.dtValidFor.Checked ? this.dtValidFor.Value : DateTime.Now, false); } else { auth = this.application.Store.Storage.CheckAccess(this.application.Store.Name, this.application.Name, tn.Text, this.dbuser, this.dtValidFor.Checked ? this.dtValidFor.Value : DateTime.Now, false, out attributes); } } resultCache.Add(itemName, auth); attributesCache.Add(itemName, attributes); } else { auth = (AuthorizationType)resultCache[itemName]; attributes = (List <KeyValuePair <String, String> >)attributesCache[itemName]; } elapsed.Stop(); sAuth = Globalization.MultilanguageResource.GetString("Domain_Neutral"); switch (auth) { case AuthorizationType.AllowWithDelegation: sAuth = Globalization.MultilanguageResource.GetString("Domain_AllowWithDelegation"); tn.BackColor = Color.SkyBlue; break; case AuthorizationType.Allow: sAuth = Globalization.MultilanguageResource.GetString("Domain_Allow"); tn.BackColor = Color.LightGreen; break; case AuthorizationType.Deny: sAuth = Globalization.MultilanguageResource.GetString("Domain_Deny"); tn.BackColor = Color.LightSalmon; break; case AuthorizationType.Neutral: sAuth = Globalization.MultilanguageResource.GetString("Domain_Neutral"); tn.BackColor = Color.Gainsboro; break; } this.WriteLineDetailMessage(String.Format("{0} [{1} mls.]", sAuth, elapsed.ElapsedMilliseconds)); if (attributes != null && attributes.Count > 0) { this.WriteLineDetailMessage(String.Format(" {0} attribute(s) found:", attributes.Count)); int attributeIndex = 0; foreach (KeyValuePair <string, string> attr in attributes) { this.WriteLineDetailMessage(String.Format(" {0}) Key: {1} Value: {2}", ++attributeIndex, attr.Key, attr.Value)); } } } catch (Exception ex) { sAuth = Globalization.MultilanguageResource.GetString("frmCheckAccessTest_Msg10"); this.WriteLineDetailMessage(String.Format("{0} [{1} mls.]", ex.Message, elapsed.ElapsedMilliseconds)); } tn.Text = String.Format("{0} - ({1})", tn.Text, sAuth.ToUpper()); if (!turboMode) { tn.EnsureVisible(); Application.DoEvents(); } foreach (TreeNode tnChild in tn.Nodes) { this.checkAccessTest(tnChild, turboMode, resultCache, attributesCache); } }