12dd1de9f2
- 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>
38 lines
1.6 KiB
C#
38 lines
1.6 KiB
C#
using SharepointToolbox.Core.Models;
|
|
|
|
namespace SharepointToolbox.Services;
|
|
|
|
/// <summary>
|
|
/// Manages Azure AD app registration and removal for a target tenant.
|
|
/// </summary>
|
|
public interface IAppRegistrationService
|
|
{
|
|
/// <summary>
|
|
/// Returns true if the currently-authenticated user has the Global Administrator
|
|
/// directory role in the target tenant (checked via transitiveMemberOf for
|
|
/// nested-group coverage). Throws on Graph/network failure so the UI can
|
|
/// distinguish a confirmed non-admin from a call that could not complete.
|
|
/// </summary>
|
|
Task<bool> IsGlobalAdminAsync(string clientId, string tenantUrl, CancellationToken ct);
|
|
|
|
/// <summary>
|
|
/// Creates an Azure AD Application + ServicePrincipal + OAuth2PermissionGrants
|
|
/// atomically in the tenant identified by <paramref name="tenantUrl"/>.
|
|
/// On any intermediate failure the Application is deleted before returning
|
|
/// a Failure result (best-effort rollback).
|
|
/// </summary>
|
|
Task<AppRegistrationResult> RegisterAsync(string clientId, string tenantUrl, string tenantDisplayName, CancellationToken ct);
|
|
|
|
/// <summary>
|
|
/// Deletes the registered application by its appId in the given tenant.
|
|
/// Logs a warning on failure but does not throw.
|
|
/// </summary>
|
|
Task RemoveAsync(string clientId, string tenantUrl, string appId, CancellationToken ct);
|
|
|
|
/// <summary>
|
|
/// Clears the live SessionManager context, evicts all in-memory MSAL accounts,
|
|
/// and unregisters the persistent token cache for the given clientId.
|
|
/// </summary>
|
|
Task ClearMsalSessionAsync(string clientId, string tenantUrl);
|
|
}
|