Exemple #1
0
        public bool HasAccessGrantedToExternalUser(string _inputSiteCollectionUrl, string _strUserID)
        {
            bool   isAccessGranted   = false;
            string siteCollectionUrl = _inputSiteCollectionUrl;
            string message           = string.Empty;

            ClientContext clientContext;

            try
            {
                using (clientContext = GetClientContext(siteCollectionUrl, clientID, clientSecret))
                {
                    var users = new List <UserRoleAssignment>();
                    users.Add(new UserRoleAssignment()
                    {
                        UserId = _strUserID,
                        Role   = Role.Edit
                    });

                    WebSharingManager.UpdateWebSharingInformation(clientContext, clientContext.Web, users, true, "Access given by SOHA", true, true);
                    clientContext.ExecuteQuery();
                    isAccessGranted = true;

                    //string link = clientContext.Web.CreateAnonymousLinkForDocument("https://tenantname.sharepoint.com/Documents/sample.docx", ExternalSharingDocumentOption.View);
                    //SharingResult result = clientContext.Web.ShareDocument("https://tenantname.sharepoint.com/Documents/sample.docx", "*****@*****.**", ExternalSharingDocumentOption.View, true, "Doc shared programmatically");
                }
            }
            catch (Exception ex)
            {
                isAccessGranted = false;
            }

            return(isAccessGranted);
        }
        public static void InviteExtUser()
        {
            List <CSVOutputExternalUser> externalUserColl = ReadCSV();
            Dictionary <string, Role>    roleDictionary   = new Dictionary <string, Role>()
            {
                { "None", Role.None },
                { "View", Role.View },
                { "Edit", Role.Edit },
                { "Owner", Role.Owner },
                { "LimitedView", Role.LimitedView },
                { "LimitedEdit", Role.LimitedEdit },
                { "Review", Role.Review },
                { "RestrictedView", Role.RestrictedView }
            };

            string username   = ConfigurationManager.AppSettings["username"];
            string password   = ConfigurationManager.AppSettings["password"];
            var    siteDomain = ConfigurationManager.AppSettings["siteDomain"];
            string emailMessage;

            using (var securePassword = new SecureString())
            {
                foreach (var c in password.ToCharArray())
                {
                    securePassword.AppendChar(c);
                }
                var count = 0;
                foreach (var extUser in externalUserColl.Skip(1))
                {
                    emailMessage = "Dear " + extUser.Name + Environment.NewLine +
                                   ", Welcome to SharePoint site, please follow the below link to request access.";

                    using (var ctx = new ClientContext(siteDomain + extUser.Site))
                    {
                        try
                        {
                            count++;
                            ctx.Credentials = new SharePointOnlineCredentials(username, securePassword);
                            var web = ctx.Web;
                            ctx.Load(web, x => x.SiteGroups);
                            ctx.ExecuteQuery();

                            var users = new List <UserRoleAssignment>();
                            //Role role = roleDictionary[extUser.PermissionGroup];
                            users.Add(new UserRoleAssignment()
                            {
                                UserId = extUser.Email,
                                Role   = Role.LimitedView
                            });
                            WebSharingManager.UpdateWebSharingInformation(ctx, web, users, true, emailMessage, true, true);
                            ctx.ExecuteQuery();
                            Console.WriteLine("Completed " + count);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message + count);
                        }
                    }
                }
                Console.ReadLine();
            }
        }