public void AddPolicyForMyReports(string userName, IEnumerable <string> roles) { var currentItem = new ReportItemDTO(); try { currentItem.Path = "/Users Folders"; var usersFolders = RsFacade.ListChildren("/Users Folders", false); foreach (var item in usersFolders) { currentItem = item; if (item.Type == ReportItemTypes.Folder) { var itemPath = item.Path + "/My reports"; bool inheritsDummy; var existingPolicies = RsFacade.GetItemSecurity(itemPath, out inheritsDummy); RemoveExistingUser(existingPolicies, userName); existingPolicies.Add(userName, roles.ToArray()); RsFacade.SetItemSecurity(itemPath, existingPolicies); } } } catch (Exception ex) { MessageBox.Show(string.Format("Current Item:{0}\r\n{1}", currentItem.Path, ex)); } }
public void ShouldSetSecurity() { var datasource = new Datasource { ConnectionString = @"Initial Catalog=ReportServer$SQL2012;Data Source=DHGWK281\SQL2012", CredentialRetrievalType = CredentialRetrievalTypes.Integrated, Enabled = true, Name = "Test Datasource", Extension = String.Empty }; var item = CreateDatasource(datasource); var security = new Dictionary <string, string[]> { { @"DHGWK281\Administrator", new[] { "Content Manager" } } }; facade.SetItemSecurity(item.Path, security); bool inherited; var actualSecurity = facade.GetItemSecurity(item.Path, out inherited); Assert.IsTrue(actualSecurity.Count == 1); Assert.IsTrue(actualSecurity.First().Key == @"DHGWK281\Administrator"); Assert.IsTrue(actualSecurity.First().Value.Count() == 1); Assert.IsTrue(actualSecurity.First().Value[0] == "Content Manager"); Assert.IsFalse(inherited); facade.SetItemSecurity(item.Path, null); }