示例#1
0
        public SharepointManager(IOptions <SharepointSettings> sharepointSettings)
        {
            var settingsVal = sharepointSettings.Value;

            _sharepointClientId     = settingsVal.ClientId;
            _sharepointClientSecret = settingsVal.ClientSecret;
            _sharepointUrl          = settingsVal.SharepointUrl;
            _authenticationManager  = new PnP.Framework.AuthenticationManager();
        }
示例#2
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string siteUrlKey = "siteUrl";
            string siteUrl    = null;

            if (req.Query.ContainsKey(siteUrlKey))
            {
                siteUrl = req.Query[siteUrlKey].First();
            }

            if (siteUrl == null)
            {
                return(new BadRequestObjectResult(
                           "Please pass a site URL on the query string"));
            }

            var clientId     = "c582d811-690b-4443-85bf-4a9c16f68006";
            var tenantName   = "robwindsor2";
            var certName     = "AzureFunctionAppTest.pfx";
            var certPassword = "******";

            var home     = Environment.GetEnvironmentVariable("HOME");
            var certPath = home != null?
                           Path.Combine(home, @"site\wwwroot", certName) :
                               Path.Combine(@"E:\Certs\" + certName);

            siteUrl = $"https://{tenantName}.sharepoint.com" + siteUrl;
            var listNames = new List <string>();

            var authManager = new PnP.Framework.AuthenticationManager(clientId, certPath, certPassword, $"{tenantName}.onmicrosoft.com");

            using (var context = authManager.GetContext(siteUrl))
            {
                var query = context.Web.Lists.Where(l => l.Hidden == false)
                            .OrderBy(l => l.Title);

                var lists = context.LoadQuery(query);
                context.ExecuteQuery();

                foreach (var list in lists)
                {
                    listNames.Add(list.Title);
                }
            }

            var responseContent = JsonConvert.SerializeObject(
                listNames, Formatting.Indented);

            return(new OkObjectResult(responseContent));
        }
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string siteUrlKey = "siteUrl";
            string siteUrl    = null;

            if (req.Query.ContainsKey(siteUrlKey))
            {
                siteUrl = req.Query[siteUrlKey].First();
            }

            if (siteUrl == null)
            {
                return(new BadRequestObjectResult(
                           "Please pass a site URL on the query string " +
                           "or in the request body"));
            }

            var clientId      = "1d582c6c-9936-4393-9220-36823a23500b";
            var clientSecret  = "X3cMt-00Ju-WnX9n0e8wY.d7uLd4E~y9xy";
            var tenantName    = "robwindsor2";
            var token         = req.Headers["Authorization"].ToString().Remove(0, "Bearer ".Length);
            var userAssertion = new UserAssertion(token);

            siteUrl = $"https://{tenantName}.sharepoint.com" + siteUrl;
            var listNames = new List <string>();

            var authManager = new PnP.Framework.AuthenticationManager(clientId, clientSecret, userAssertion);

            using (var context = authManager.GetContext(siteUrl))
            {
                var query = context.Web.Lists.Where(l => l.Hidden == false)
                            .OrderBy(l => l.Title);

                var lists = context.LoadQuery(query);
                context.ExecuteQuery();

                foreach (var list in lists)
                {
                    listNames.Add(list.Title);
                }
            }

            var responseContent = JsonConvert.SerializeObject(
                listNames, Formatting.Indented);

            return(new OkObjectResult(responseContent));
        }
示例#4
0
        public SharepointManager(IOptions <SharepointSettings> sharepointSettings)
        {
            var settingsVal = sharepointSettings.Value;

            _azureAppId    = settingsVal.AzureAppId;
            _sharepointUrl = settingsVal.SharepointUrl;
            SecureString securePassword = new SecureString();

            foreach (char c in settingsVal.Password)
            {
                securePassword.AppendChar(c);
            }
            _authenticationManager = new PnP.Framework.AuthenticationManager(_azureAppId, settingsVal.Username, securePassword);
        }
示例#5
0
        /// <summary>
        /// Delete sharepoint list after each test if it was created.
        /// </summary>
        public void Dispose()
        {
            var spSettings = SharepointSettingsFromEnv();

            using (var _authenticationManager = new PnP.Framework.AuthenticationManager())
            {
                using (var context = _authenticationManager.GetACSAppOnlyContext(spSettings.SharepointUrl, spSettings.ClientId, spSettings.ClientSecret))
                {
                    var orcaSite = context.Web;
                    if (orcaSite.ListExists(_listNameForTest))
                    {
                        var list = orcaSite.Lists.GetByTitle(_listNameForTest);
                        list.DeleteObject();
                        orcaSite.DeleteNavigationNode(_listNameForTest, string.Empty, PnP.Framework.Enums.NavigationType.QuickLaunch);
                        context.ExecuteQuery();
                    }
                }
            }
        }
示例#6
0
        public void CreateListAndCheckRoleAssignmentsTest()
        {
            var    sharepointManager = new SharepointManager(Options.Create(SharepointSettingsFromEnv()));
            var    listToCreate      = _listNameForTest;
            var    description       = "Sharepoint integration test 2 simple list.";
            string FIELD_XML_SCHEMA  = $"<Field DisplayName='Default' Type='Text' Required='TRUE' />";

            sharepointManager.CreateList(listToCreate, description, new List <string> {
                FIELD_XML_SCHEMA
            });

            var spSettings = SharepointSettingsFromEnv();

            using (var _authenticationManager = new PnP.Framework.AuthenticationManager())
            {
                using (var context = _authenticationManager.GetACSAppOnlyContext(spSettings.SharepointUrl, spSettings.ClientId, spSettings.ClientSecret))
                {
                    var orcaSite = context.Web;

                    Microsoft.SharePoint.Client.List createdList = orcaSite.Lists.GetByTitle(listToCreate);

                    context.Load(createdList, x => x.HasUniqueRoleAssignments, y => y.RoleAssignments.Include(r => r.Member));
                    context.ExecuteQuery();
                    context.Load(orcaSite.AssociatedOwnerGroup, g => g.Id);
                    context.ExecuteQuery();

                    bool isUniqueRoleAssignments = createdList.HasUniqueRoleAssignments;
                    Assert.True(isUniqueRoleAssignments);

                    int roleAssignmentsCount = createdList.RoleAssignments.Count;
                    Assert.Equal(1, roleAssignmentsCount);

                    var siteOwnerGroupId = orcaSite.AssociatedOwnerGroup.Id;
                    foreach (var assignment in createdList.RoleAssignments)
                    {
                        var id = assignment.Member.Id;
                        Assert.Equal(siteOwnerGroupId, id);
                    }
                }
            }
        }