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(); } }