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));
            }
        }
Beispiel #2
0
        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);
        }