# SharePoint Toolbox — Wiki

Application WPF (.NET 10) pour administrer, auditer et exporter des donnees depuis un tenant SharePoint Online.

.NET 10 WPF MVVM MSAL Graph PnP.Framework EN / FR

## Apercu

SharePoint Toolbox centralise les taches recurrentes d'un administrateur SharePoint Online : audit des permissions, mesure du stockage, annuaire des utilisateurs, recherche de fichiers et detection de doublons. Tous les rapports peuvent etre exportes en CSV ou en HTML interactif avec un branding configurable.

## Installation

1. Telecharger le dernier zip depuis la page Releases.
2. Extraire l'archive dans un dossier de votre choix.
3. Lancer `SharepointToolbox.exe`.

## Prerequis

- Windows 10 ou superieur
- Runtime .NET 10 Desktop
- Une Azure AD App Registration (Client ID) avec les permissions deleguees
- Des identifiants ayant acces au tenant SharePoint cible

## Connexion & profils

- Saisir le Tenant URL et le Client ID.
- Enregistrer des profils reutilisables (creation, renommage, suppression, rechargement).
- Parcourir le tenant et cocher plusieurs sites depuis le selecteur.
- Enregistrement Azure AD automatique ou guide depuis le profil.
- Branding multi-tenant avec logos client dans les exports.

## Rapport de permissions

Audit complet des permissions sur un ou plusieurs sites.

- Scan des bibliotheques, listes et dossiers avec profondeur configurable.
- Inclusion optionnelle des permissions heritees et des sous-sites.
- Mode consolidation : fusion des permissions identiques avec liste des sites/bibliotheques concernes.
- Export en CSV ou en HTML (rapport interactif avec filtrage, tri et regroupement par utilisateur/site).

## Metriques de stockage

Analyse de l'occupation du stockage SharePoint.

- Repartition par bibliotheque avec profondeur de dossiers configurable.
- Metriques : taille totale, taille des versions, nombre d'elements, derniere modification.
- Visualisation 3D interactive du stockage.
- Export en CSV ou en HTML (rapport avec graphiques de repartition).

## Annuaire utilisateurs

- Liste complete des utilisateurs du tenant via Microsoft Graph.
- Filtrage et recherche textuelle.
- Export en HTML.

## Recherche de fichiers

Recherche avancee de fichiers a travers les bibliotheques d'un site, utilisant la Search API SharePoint (KQL) avec pagination automatique.

Filtre | Description
--- | ---
Extension(s) | ex. `docx pdf xlsx`
Nom / Regex | Expression reguliere sur le chemin du fichier
Cree apres / avant | Plage de dates de creation
Modifie apres / avant | Plage de dates de modification
Cree par | Nom ou email de l'auteur
Modifie par | Nom ou email du dernier editeur
Bibliotheque | Limite la recherche a un chemin relatif

## Doublons

Detection de fichiers ou dossiers en double au sein d'un ou plusieurs sites.

- Type de scan : Fichiers (Search API) ou Dossiers (enumeration CAML).
- Criteres de comparaison (combinables) : Nom, Taille, Date de creation, Date de modification, Nombre de sous-dossiers, Nombre de fichiers.
- Export en CSV ou en HTML (cartes depliables avec mise en evidence des valeurs identiques/differentes).

## Architecture

- Interface WPF avec pattern MVVM (generateurs CommunityToolkit.Mvvm).
- Injection de dependances via `Microsoft.Extensions.Hosting`.
- Authentification MSAL avec cache persistant et support broker WAM.
- Microsoft Graph SDK pour les operations tenant/utilisateurs.
- PnP.Framework (CSOM) pour les operations SharePoint.
- Localisation complete EN/FR via fichiers `.resx`.
- Branding configurable (logos MSP et client) dans les exports HTML.
- Journalisation structuree via Serilog (sink fichier).

## Dependances

Paquet | Version | Role
--- | --- | ---
CommunityToolkit.Mvvm | 8.4.2 | Generateurs MVVM
CsvHelper | 33.1.0 | Lecture/ecriture CSV
LiveChartsCore.SkiaSharpView.WPF | 2.0.0-rc5.4 | Graphiques / visualisation 3D
Microsoft.Extensions.Hosting | 10.0.0 | Host generique & DI
Microsoft.Graph | 5.74.0 | SDK Graph (tenant/utilisateurs)
Microsoft.Identity.Client | 4.83.3 | Authentification MSAL
Microsoft.Identity.Client.Broker | 4.82.1 | Support broker WAM
Microsoft.Identity.Client.Extensions.Msal | 4.83.3 | Cache de tokens persistant
PnP.Framework | 1.18.0 | Operations SharePoint CSOM
Serilog | 4.3.1 | Journalisation structuree
Serilog.Extensions.Hosting | 10.0.0 | Integration host
Serilog.Sinks.File | 7.0.0 | Sink fichier

## Configuration Azure AD

L'application peut enregistrer l'app Azure AD automatiquement, ou vous pouvez la creer manuellement avec les permissions deleguees suivantes :

- `Sites.FullControl.All` (SharePoint)
- `User.Read.All` (Microsoft Graph)
- `Directory.Read.All` (Microsoft Graph)

L'URI de redirection doit etre definie sur la valeur par defaut MSAL public client (`http://localhost`) pour la connexion interactive.

## Depannage

- Boucle de connexion / erreurs AADSTS : verifier le Client ID, le tenant URL et le consentement administrateur.
- Recherche vide : l'indexation SharePoint Search peut prendre du temps ; reessayer plus tard.
- Timeouts de scan de permissions : reduire la profondeur de dossiers ou scanner moins de sites a la fois.
- Logs : ecrits par Serilog dans le dossier local de l'application — les joindre en cas de probleme.