f4cc81bb71
- Add theme system (Dark/Light palettes, ModernTheme, ThemeManager) - Add InputDialog, Spinner common view - Add DuplicatesCsvExportService - Refresh views, dialogs, and view models across tabs - Update localization strings (en/fr) - Tweak services (transfer, permissions, search, user access, ownership elevation, bulk operations) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
26 lines
1.0 KiB
C#
26 lines
1.0 KiB
C#
using Microsoft.Online.SharePoint.TenantAdministration;
|
|
using Microsoft.SharePoint.Client;
|
|
|
|
namespace SharepointToolbox.Services;
|
|
|
|
public class OwnershipElevationService : IOwnershipElevationService
|
|
{
|
|
public async Task ElevateAsync(ClientContext tenantAdminCtx, string siteUrl, string loginName, CancellationToken ct)
|
|
{
|
|
// Tenant.SetSiteAdmin requires a real claims/UPN login; an empty string
|
|
// makes the server raise "Cannot convert Org ID to Claims" and abort.
|
|
// When the caller doesn't specify a user, fall back to the signed-in
|
|
// admin (the owner of tenantAdminCtx).
|
|
if (string.IsNullOrWhiteSpace(loginName))
|
|
{
|
|
tenantAdminCtx.Load(tenantAdminCtx.Web.CurrentUser, u => u.LoginName);
|
|
await tenantAdminCtx.ExecuteQueryAsync();
|
|
loginName = tenantAdminCtx.Web.CurrentUser.LoginName;
|
|
}
|
|
|
|
var tenant = new Tenant(tenantAdminCtx);
|
|
tenant.SetSiteAdmin(siteUrl, loginName, isSiteAdmin: true);
|
|
await tenantAdminCtx.ExecuteQueryAsync();
|
|
}
|
|
}
|