Files
Sharepoint-Toolbox/wiki.html
Dev fec5ae26e1 chore: clean repo for v2.0 publish
- Remove .planning/ (251 GSD planning files)
- Remove old PowerShell-era files (TODO.md, lang/, examples/)
- Remove accidentally tracked zip
- Rewrite README for .NET WPF app
- Update .gitignore

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 11:16:09 +02:00

214 lines
11 KiB
HTML

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>SharePoint Toolbox — Wiki</title>
<style>
:root{--bg:#0f172a;--panel:#1e293b;--text:#e2e8f0;--muted:#94a3b8;--accent:#38bdf8;--border:#334155;--code:#0b1220}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.6}
.layout{display:grid;grid-template-columns:260px 1fr;min-height:100vh}
nav{background:var(--panel);border-right:1px solid var(--border);padding:24px 16px;position:sticky;top:0;height:100vh;overflow-y:auto}
nav h2{font-size:14px;text-transform:uppercase;color:var(--muted);letter-spacing:1px;margin:16px 0 8px}
nav a{display:block;color:var(--text);text-decoration:none;padding:6px 10px;border-radius:6px;font-size:14px}
nav a:hover{background:var(--bg);color:var(--accent)}
main{padding:40px 56px;max-width:960px}
h1{font-size:32px;border-bottom:2px solid var(--accent);padding-bottom:12px;margin-top:0}
h2{color:var(--accent);margin-top:40px;border-bottom:1px solid var(--border);padding-bottom:6px}
h3{color:#7dd3fc;margin-top:24px}
code{background:var(--code);padding:2px 6px;border-radius:4px;font-size:.9em;color:#fbbf24}
pre{background:var(--code);padding:16px;border-radius:8px;overflow-x:auto;border:1px solid var(--border)}
table{border-collapse:collapse;width:100%;margin:16px 0}
th,td{border:1px solid var(--border);padding:8px 12px;text-align:left}
th{background:var(--panel);color:var(--accent)}
tr:nth-child(even) td{background:rgba(30,41,59,.5)}
.badge{display:inline-block;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:2px 10px;font-size:12px;color:var(--accent);margin:2px}
.hero{background:linear-gradient(135deg,#1e293b,#0f172a);border:1px solid var(--border);border-radius:12px;padding:24px;margin-bottom:24px}
.hero p{color:var(--muted);margin:8px 0 0}
section{scroll-margin-top:20px}
ul li{margin:4px 0}
@media(max-width:800px){.layout{grid-template-columns:1fr}nav{position:static;height:auto}main{padding:24px}}
</style>
</head>
<body>
<div class="layout">
<nav>
<h2>SP Toolbox</h2>
<a href="#apercu">Apercu</a>
<a href="#install">Installation</a>
<a href="#prerequis">Prerequis</a>
<a href="#connexion">Connexion &amp; profils</a>
<a href="#permissions">Rapport de permissions</a>
<a href="#stockage">Metriques de stockage</a>
<a href="#utilisateurs">Annuaire utilisateurs</a>
<a href="#recherche">Recherche de fichiers</a>
<a href="#doublons">Doublons</a>
<a href="#architecture">Architecture</a>
<a href="#dependances">Dependances</a>
<a href="#azure">Configuration Azure AD</a>
<a href="#depannage">Depannage</a>
</nav>
<main>
<div class="hero">
<h1 style="border:none;margin:0">SharePoint Toolbox — Wiki</h1>
<p>Application WPF (.NET 10) pour administrer, auditer et exporter des donnees depuis un tenant SharePoint Online.</p>
<div>
<span class="badge">.NET 10</span>
<span class="badge">WPF</span>
<span class="badge">MVVM</span>
<span class="badge">MSAL</span>
<span class="badge">Graph</span>
<span class="badge">PnP.Framework</span>
<span class="badge">EN / FR</span>
</div>
</div>
<section id="apercu">
<h2>Apercu</h2>
<p>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.</p>
</section>
<section id="install">
<h2>Installation</h2>
<ol>
<li>Telecharger le dernier zip depuis la page Releases.</li>
<li>Extraire l'archive dans un dossier de votre choix.</li>
<li>Lancer <code>SharepointToolbox.exe</code>.</li>
</ol>
</section>
<section id="prerequis">
<h2>Prerequis</h2>
<ul>
<li>Windows 10 ou superieur</li>
<li>Runtime .NET 10 Desktop</li>
<li>Une Azure AD App Registration (Client ID) avec les permissions deleguees</li>
<li>Des identifiants ayant acces au tenant SharePoint cible</li>
</ul>
</section>
<section id="connexion">
<h2>Connexion &amp; profils</h2>
<ul>
<li>Saisir le <strong>Tenant URL</strong> et le <strong>Client ID</strong>.</li>
<li>Enregistrer des profils reutilisables (creation, renommage, suppression, rechargement).</li>
<li>Parcourir le tenant et cocher plusieurs sites depuis le selecteur.</li>
<li><strong>Enregistrement Azure AD</strong> automatique ou guide depuis le profil.</li>
<li>Branding multi-tenant avec logos client dans les exports.</li>
</ul>
</section>
<section id="permissions">
<h2>Rapport de permissions</h2>
<p>Audit complet des permissions sur un ou plusieurs sites.</p>
<ul>
<li>Scan des <strong>bibliotheques, listes et dossiers</strong> avec profondeur configurable.</li>
<li>Inclusion optionnelle des permissions heritees et des sous-sites.</li>
<li><strong>Mode consolidation</strong> : fusion des permissions identiques avec liste des sites/bibliotheques concernes.</li>
<li>Export en <strong>CSV</strong> ou en <strong>HTML</strong> (rapport interactif avec filtrage, tri et regroupement par utilisateur/site).</li>
</ul>
</section>
<section id="stockage">
<h2>Metriques de stockage</h2>
<p>Analyse de l'occupation du stockage SharePoint.</p>
<ul>
<li>Repartition par bibliotheque avec profondeur de dossiers configurable.</li>
<li>Metriques : taille totale, taille des versions, nombre d'elements, derniere modification.</li>
<li><strong>Visualisation 3D</strong> interactive du stockage.</li>
<li>Export en <strong>CSV</strong> ou en <strong>HTML</strong> (rapport avec graphiques de repartition).</li>
</ul>
</section>
<section id="utilisateurs">
<h2>Annuaire utilisateurs</h2>
<ul>
<li>Liste complete des utilisateurs du tenant via Microsoft Graph.</li>
<li>Filtrage et recherche textuelle.</li>
<li>Export en <strong>HTML</strong>.</li>
</ul>
</section>
<section id="recherche">
<h2>Recherche de fichiers</h2>
<p>Recherche avancee de fichiers a travers les bibliotheques d'un site, utilisant la <strong>Search API SharePoint (KQL)</strong> avec pagination automatique.</p>
<table>
<tr><th>Filtre</th><th>Description</th></tr>
<tr><td>Extension(s)</td><td>ex. <code>docx pdf xlsx</code></td></tr>
<tr><td>Nom / Regex</td><td>Expression reguliere sur le chemin du fichier</td></tr>
<tr><td>Cree apres / avant</td><td>Plage de dates de creation</td></tr>
<tr><td>Modifie apres / avant</td><td>Plage de dates de modification</td></tr>
<tr><td>Cree par</td><td>Nom ou email de l'auteur</td></tr>
<tr><td>Modifie par</td><td>Nom ou email du dernier editeur</td></tr>
<tr><td>Bibliotheque</td><td>Limite la recherche a un chemin relatif</td></tr>
</table>
</section>
<section id="doublons">
<h2>Doublons</h2>
<p>Detection de fichiers ou dossiers en double au sein d'un ou plusieurs sites.</p>
<ul>
<li><strong>Type de scan :</strong> Fichiers (Search API) ou Dossiers (enumeration CAML).</li>
<li><strong>Criteres de comparaison (combinables) :</strong> Nom, Taille, Date de creation, Date de modification, Nombre de sous-dossiers, Nombre de fichiers.</li>
<li>Export en <strong>CSV</strong> ou en <strong>HTML</strong> (cartes depliables avec mise en evidence des valeurs identiques/differentes).</li>
</ul>
</section>
<section id="architecture">
<h2>Architecture</h2>
<ul>
<li>Interface <strong>WPF</strong> avec pattern <strong>MVVM</strong> (generateurs CommunityToolkit.Mvvm).</li>
<li>Injection de dependances via <code>Microsoft.Extensions.Hosting</code>.</li>
<li>Authentification <strong>MSAL</strong> avec cache persistant et support broker WAM.</li>
<li><strong>Microsoft Graph SDK</strong> pour les operations tenant/utilisateurs.</li>
<li><strong>PnP.Framework</strong> (CSOM) pour les operations SharePoint.</li>
<li>Localisation complete <strong>EN/FR</strong> via fichiers <code>.resx</code>.</li>
<li>Branding configurable (logos MSP et client) dans les exports HTML.</li>
<li>Journalisation structuree via <strong>Serilog</strong> (sink fichier).</li>
</ul>
</section>
<section id="dependances">
<h2>Dependances</h2>
<table>
<tr><th>Paquet</th><th>Version</th><th>Role</th></tr>
<tr><td>CommunityToolkit.Mvvm</td><td>8.4.2</td><td>Generateurs MVVM</td></tr>
<tr><td>CsvHelper</td><td>33.1.0</td><td>Lecture/ecriture CSV</td></tr>
<tr><td>LiveChartsCore.SkiaSharpView.WPF</td><td>2.0.0-rc5.4</td><td>Graphiques / visualisation 3D</td></tr>
<tr><td>Microsoft.Extensions.Hosting</td><td>10.0.0</td><td>Host generique &amp; DI</td></tr>
<tr><td>Microsoft.Graph</td><td>5.74.0</td><td>SDK Graph (tenant/utilisateurs)</td></tr>
<tr><td>Microsoft.Identity.Client</td><td>4.83.3</td><td>Authentification MSAL</td></tr>
<tr><td>Microsoft.Identity.Client.Broker</td><td>4.82.1</td><td>Support broker WAM</td></tr>
<tr><td>Microsoft.Identity.Client.Extensions.Msal</td><td>4.83.3</td><td>Cache de tokens persistant</td></tr>
<tr><td>PnP.Framework</td><td>1.18.0</td><td>Operations SharePoint CSOM</td></tr>
<tr><td>Serilog</td><td>4.3.1</td><td>Journalisation structuree</td></tr>
<tr><td>Serilog.Extensions.Hosting</td><td>10.0.0</td><td>Integration host</td></tr>
<tr><td>Serilog.Sinks.File</td><td>7.0.0</td><td>Sink fichier</td></tr>
</table>
</section>
<section id="azure">
<h2>Configuration Azure AD</h2>
<p>L'application peut enregistrer l'app Azure AD automatiquement, ou vous pouvez la creer manuellement avec les permissions deleguees suivantes :</p>
<ul>
<li><code>Sites.FullControl.All</code> (SharePoint)</li>
<li><code>User.Read.All</code> (Microsoft Graph)</li>
<li><code>Directory.Read.All</code> (Microsoft Graph)</li>
</ul>
<p>L'URI de redirection doit etre definie sur la valeur par defaut MSAL public client (<code>http://localhost</code>) pour la connexion interactive.</p>
</section>
<section id="depannage">
<h2>Depannage</h2>
<ul>
<li><strong>Boucle de connexion / erreurs AADSTS :</strong> verifier le Client ID, le tenant URL et le consentement administrateur.</li>
<li><strong>Recherche vide :</strong> l'indexation SharePoint Search peut prendre du temps ; reessayer plus tard.</li>
<li><strong>Timeouts de scan de permissions :</strong> reduire la profondeur de dossiers ou scanner moins de sites a la fois.</li>
<li><strong>Logs :</strong> ecrits par Serilog dans le dossier local de l'application — les joindre en cas de probleme.</li>
</ul>
</section>
</main>
</div>
</body>
</html>