/// <summary> /// Used to set External Sharing /// </summary> /// <param name="siteInfo"></param> public override void SetExternalSharing(SiteInformation siteInfo) { UsingContext(ctx => { try { Stopwatch _timespan = Stopwatch.StartNew(); Tenant _tenant = new Tenant(ctx); //_tenant.SetSiteProperties(siteInfo.Url, null, null, SharingCapabilities.ExternalUserSharingOnly, null, null, null, null); SiteProperties _siteProps = _tenant.GetSitePropertiesByUrl(siteInfo.Url, false); ctx.Load(_tenant); ctx.Load(_siteProps); ctx.ExecuteQuery(); var _tenantSharingCapability = _tenant.SharingCapability; var _siteSharingCapability = _siteProps.SharingCapability; var _targetSharingCapability = SharingCapabilities.Disabled; if (!siteInfo.EnableExternalSharing && _tenantSharingCapability != SharingCapabilities.Disabled) { _targetSharingCapability = SharingCapabilities.Disabled; _siteProps.SharingCapability = _targetSharingCapability; _siteProps.Update(); ctx.ExecuteQuery(); Log.Info("Provisioning.Common.Office365SiteProvisioningService.SetExternalSharing", PCResources.ExternalSharing_Successful, siteInfo.Url); } if (siteInfo.EnableExternalSharing && _tenantSharingCapability != SharingCapabilities.Disabled) { _targetSharingCapability = SharingCapabilities.ExternalUserSharingOnly; _siteProps.SharingCapability = _targetSharingCapability; _siteProps.Update(); ctx.ExecuteQuery(); Log.Info("Provisioning.Common.Office365SiteProvisioningService.SetExternalSharing", PCResources.ExternalSharing_Successful, siteInfo.Url); } _timespan.Stop(); Log.TraceApi("SharePoint", "Office365SiteProvisioningService.SetExternalSharing", _timespan.Elapsed, "SiteUrl={0}", siteInfo.Url); } catch (ServerException _ex) { Log.Info("Provisioning.Common.Office365SiteProvisioningService.SetExternalSharing", PCResources.ExternalSharing_Exception, siteInfo.Url, _ex); } catch (Exception _ex) { Log.Info("Provisioning.Common.Office365SiteProvisioningService.SetExternalSharing", PCResources.ExternalSharing_Exception, siteInfo.Url, _ex); } }); }
protected void btnUpdateSiteCollectionStatus_Click(object sender, EventArgs e) { string siteUrl = sitecollections.SelectedValue; using (var ctx = GetAdminContext()) { // get site collections. Tenant tenant = new Tenant(ctx); SiteProperties siteProp = tenant.GetSitePropertiesByUrl(siteUrl, true); ctx.Load(siteProp); ctx.ExecuteQuery(); switch (rblSharingOptions.SelectedValue) { case "Disabled": siteProp.SharingCapability = SharingCapabilities.Disabled; lblStatus.Text = "External sharing is for authenticated and guest users."; break; case "ExternalUserAndGuestSharing": siteProp.SharingCapability = SharingCapabilities.ExternalUserAndGuestSharing; lblStatus.Text = "External sharing is for authenticated and guest users."; break; case "ExternalUserSharingOnly": siteProp.SharingCapability = SharingCapabilities.ExternalUserSharingOnly; lblStatus.Text = "External sharing is for authenticated and guest users."; break; } // Update based on applied setting siteProp.Update(); ctx.ExecuteQuery(); lblStatus.Text = string.Format("Sharing status updated for site collection at URL: {0}", siteUrl); } }
/// <summary> /// Sets the Site Collection External Sharing Setting using the SharePoint Tenant API /// </summary> /// <param name="adminCC"></param> /// <param name="siteCollectionURl"></param> /// <param name="shareSettings"></param> public static void SetSiteSharing(ClientContext adminCC, string siteCollectionURl, SharingCapabilities shareSettings) { var _tenantAdmin = new Tenant(adminCC); SiteProperties _siteprops = _tenantAdmin.GetSitePropertiesByUrl(siteCollectionURl, true); adminCC.Load(_tenantAdmin); adminCC.Load(_siteprops); adminCC.ExecuteQuery(); SharingCapabilities _tenantSharing = _tenantAdmin.SharingCapability; var _currentShareSettings = _siteprops.SharingCapability; bool _isUpdatable = false; if (_tenantSharing == SharingCapabilities.Disabled) { Console.WriteLine("Sharing is currently disabled in your tenant! I am unable to work on it."); } else { if (shareSettings == SharingCapabilities.Disabled) { _isUpdatable = true; } else if (shareSettings == SharingCapabilities.ExternalUserSharingOnly) { _isUpdatable = true; } else if (shareSettings == SharingCapabilities.ExternalUserAndGuestSharing) { if (_tenantSharing == SharingCapabilities.ExternalUserAndGuestSharing) { _isUpdatable = true; } else { Console.WriteLine("ExternalUserAndGuestSharing is currently disabled in your tenant! I am unable to work on it."); } } } if (_currentShareSettings != shareSettings && _isUpdatable) { _siteprops.SharingCapability = shareSettings; _siteprops.Update(); adminCC.ExecuteQuery(); Console.WriteLine("Set Sharing on site {0} to {1}.", siteCollectionURl, shareSettings); } }
public bool IsSiteCollectionStorageQuotaUpdated(string _strURL, int _intNewQuota) { bool isStorageUpdated = false; string siteCollectionUrl = SPOAdminURL; try { ClientContext clientContext; using (clientContext = GetClientContext(siteCollectionUrl, clientID, clientSecret)) { clientContext.ExecuteQuery(); Tenant currentO365Tenant = new Tenant(clientContext); clientContext.ExecuteQuery(); SiteProperties propertyColl = currentO365Tenant.GetSitePropertiesByUrl(_strURL, true); if (propertyColl != null) { clientContext.Load(propertyColl); clientContext.ExecuteQuery(); //propertyColl.Title += "_storage Updated By Bot"; propertyColl.StorageMaximumLevel += (_intNewQuota * 1024); propertyColl.Update(); clientContext.Load(propertyColl); clientContext.ExecuteQuery(); isStorageUpdated = true; } } } catch (Exception ex) { isStorageUpdated = false; } return(isStorageUpdated); }
/// <summary> /// /// </summary> /// <param name="siteInfo"></param> public override void SetExternalSharing(SiteInformation siteInfo) { UsingContext(ctx => { try { Tenant _tenant = new Tenant(ctx); SiteProperties _siteProps = _tenant.GetSitePropertiesByUrl(siteInfo.Url, false); ctx.Load(_tenant); ctx.Load(_siteProps); ctx.ExecuteQuery(); bool _shouldBeUpdated = false; var _tenantSharingCapability = _tenant.SharingCapability; var _siteSharingCapability = _siteProps.SharingCapability; var _targetSharingCapability = SharingCapabilities.Disabled; if (siteInfo.EnableExternalSharing && _tenantSharingCapability != SharingCapabilities.Disabled) { _targetSharingCapability = SharingCapabilities.ExternalUserSharingOnly; _shouldBeUpdated = true; } if (_siteSharingCapability != _targetSharingCapability && _shouldBeUpdated) { _siteProps.SharingCapability = _targetSharingCapability; _siteProps.Update(); ctx.ExecuteQuery(); Log.Info("Provisioning.Common.Office365SiteProvisioningService.SetExternalSharing", PCResources.ExternalSharing_Successful, siteInfo.Url); } } catch (Exception _ex) { Log.Info("Provisioning.Common.Office365SiteProvisioningService.SetExternalSharing", PCResources.ExternalSharing_Exception, siteInfo.Url, _ex); } }); }
protected void btnSave_Click(object sender, EventArgs e) { siteURL = Page.Request["SPHostUrl"]; var spContext = SharePointContextProvider.Current.GetSharePointContext(Context); using (var clientContext = spContext.CreateUserClientContextForSPHost()) { clientContext.Load(clientContext.Site); clientContext.ExecuteQuery(); if (clientContext.Site.ShareByEmailEnabled) { initialSharingSetting = _shared; } else { initialSharingSetting = _notshared; } } try { if (rdbList.SelectedValue == "allowed" && initialSharingSetting == _notshared) { Log.LogFileSystem(string.Format("Start enabling external sharing...")); Log.LogFileSystem(string.Format("\t" + "Start getting Context...")); var ctx = GetContext(TenantAdminUrl); using (ctx) { Tenant _tenant = new Tenant(ctx); Log.LogFileSystem(string.Format("\t" + "Loading site properties...")); SiteProperties _siteProps = _tenant.GetSitePropertiesByUrl(siteURL, false); ctx.Load(_tenant); ctx.Load(_siteProps); ctx.ExecuteQuery(); bool _shouldBeUpdated = false; var _tenantSharingCapability = _tenant.SharingCapability; var _siteSharingCapability = _siteProps.SharingCapability; var _targetSharingCapability = SharingCapabilities.Disabled; //if (siteInfo.EnableExternalSharing && _tenantSharingCapability != SharingCapabilities.Disabled) //{ _targetSharingCapability = SharingCapabilities.ExternalUserSharingOnly; _shouldBeUpdated = true; //} if (_siteSharingCapability != _targetSharingCapability && _shouldBeUpdated) { Log.LogFileSystem(string.Format("\t" + "Enabling sharing setting...")); _siteProps.SharingCapability = _targetSharingCapability; ctx.Load(_siteProps); SpoOperation op = _siteProps.Update(); ctx.Load(op, i => i.IsComplete); ctx.ExecuteQuery(); while (!op.IsComplete) { Log.LogFileSystem(string.Format("\t" + "Refreshing update...")); //wait 30seconds and try again System.Threading.Thread.Sleep(3000); op.RefreshLoad(); ctx.ExecuteQuery(); } Log.LogFileSystem(string.Format("\t" + "Update completed!")); } } try { Log.LogFileSystem(string.Format("\t" + "Start enabling the banner...")); //Enable Banner var clientContextSC = GetContext(siteURL); using (clientContextSC) { Site site = clientContextSC.Site; clientContextSC.Load(site); clientContextSC.ExecuteQuery(); var existingActions = site.UserCustomActions; clientContextSC.Load(existingActions); clientContextSC.ExecuteQuery(); UserCustomAction targetAction = existingActions.Add(); targetAction.Name = "External_Sharing_Banner"; targetAction.Description = "External_Sharing_Banner"; targetAction.Location = "ScriptLink"; targetAction.ScriptBlock = "var headID = document.getElementsByTagName('head')[0]; var externalSharingTag = document.createElement('script'); externalSharingTag.type = 'text/javascript'; externalSharingTag.src = '" + JavaScriptFile + "';headID.appendChild(externalSharingTag);"; targetAction.ScriptSrc = ""; targetAction.Update(); clientContextSC.ExecuteQuery(); Log.LogFileSystem(string.Format("\t" + "Banner successfully enabled!")); EventLog.WriteEntry(source, string.Format("Changing External Sharing Settings is completed successfully. The Site Collection is externally shared and the banner is enabled."), EventLogEntryType.Information, 6000); } } catch (Exception ex) { EventLog.WriteEntry(source, string.Format("Error occurred in changing External Sharing Settings. The error is {0}", ex.Message), EventLogEntryType.Error, 6001); } } else if (rdbList.SelectedValue == "notallowed" && initialSharingSetting == _shared) { Log.LogFileSystem(string.Format("Start disabling external sharing...")); Log.LogFileSystem(string.Format("\t" + "Start getting Context...")); var ctx = GetContext(TenantAdminUrl); using (ctx) { Tenant _tenant = new Tenant(ctx); Log.LogFileSystem(string.Format("\t" + "Loading site properties...")); SiteProperties _siteProps = _tenant.GetSitePropertiesByUrl(siteURL, false); ctx.Load(_tenant); ctx.Load(_siteProps); ctx.ExecuteQuery(); bool _shouldBeUpdated = false; var _tenantSharingCapability = _tenant.SharingCapability; var _siteSharingCapability = _siteProps.SharingCapability; var _targetSharingCapability = SharingCapabilities.Disabled; _targetSharingCapability = SharingCapabilities.Disabled; _shouldBeUpdated = true; if (_siteSharingCapability != _targetSharingCapability && _shouldBeUpdated) { Log.LogFileSystem(string.Format("\t" + "Disabling sharing setting...")); _siteProps.SharingCapability = _targetSharingCapability; ctx.Load(_siteProps); SpoOperation op = _siteProps.Update(); ctx.Load(op, i => i.IsComplete); ctx.ExecuteQuery(); while (!op.IsComplete) { Log.LogFileSystem(string.Format("\t" + "Refreshing update...")); //wait 30seconds and try again System.Threading.Thread.Sleep(3000); op.RefreshLoad(); ctx.ExecuteQuery(); } } } try { Log.LogFileSystem(string.Format("\t" + "Start disabling the banner...")); //Disable Banner var clientContextSC = GetContext(siteURL); using (clientContextSC) { Site site = clientContextSC.Site; clientContextSC.Load(site); clientContextSC.ExecuteQuery(); var existingActions = site.UserCustomActions; clientContextSC.Load(existingActions); clientContextSC.ExecuteQuery(); var actions = existingActions.ToArray(); foreach (var action in actions) { if (action.Name == "External_Sharing_Banner" && action.Location == "ScriptLink") { action.DeleteObject(); clientContextSC.ExecuteQuery(); Log.LogFileSystem(string.Format("\t" + "Banner successfully disabled!")); break; } } } EventLog.WriteEntry(source, string.Format("Changing External Sharing Settings is completed successfully. The Site Collection is not externally shared and the banner is disabled."), EventLogEntryType.Information, 6000); } catch (Exception ex) { EventLog.WriteEntry(source, string.Format("Error occurred in changing External Sharing Settings. The error is {0}", ex.Message), EventLogEntryType.Error, 6001); } } Log.LogFileSystem(string.Format(string.Format("External Sharing is now {0} ", rdbList.SelectedValue))); Log.LogFileSystem(string.Format("External Sharing setting is changed successfully for Site Collection - {0} ", Page.Request["SPHostUrl"])); Log.LogFileSystem(string.Empty); //Response.Redirect((string.IsNullOrEmpty(siteURL) ? Page.Request["SPHostUrl"] : siteURL) + "/_layouts/15/settings.aspx"); ScriptManager.RegisterStartupScript(this, this.GetType(), "successMessageBanner", "alert('External Sharing setting is changed successfully!!'); window.location='" + (string.IsNullOrEmpty(siteURL) ? Page.Request["SPHostUrl"] : siteURL) + "/_layouts/15/settings.aspx';", true); } catch (System.Threading.ThreadAbortException ex) { Response.Redirect((string.IsNullOrEmpty(siteURL) ? Page.Request["SPHostUrl"] : siteURL) + "/_layouts/15/settings.aspx", false); } catch (Exception ex) { Log.LogFileSystem(string.Format("Error occured in changing External Sharing Settings for Site Collection - {0}, error is {1} ", (string.IsNullOrEmpty(siteURL) ? Page.Request["SPHostUrl"] : siteURL), ex.Message)); Log.LogFileSystem(string.Empty); EventLog.WriteEntry(source, string.Format("Error occured in changing External Sharing Settings. The error is {0}", ex.Message), EventLogEntryType.Error, 6001); ScriptManager.RegisterStartupScript(this, GetType(), "ErrorMessageBanner", "document.getElementById('spanErrorMsg').style.display = 'block';", true); ScriptManager.RegisterStartupScript(this, GetType(), "ErrorCursor", " document.body.style.cursor = 'default';", true); } }