This commit is contained in:
2026-06-02 17:39:58 +02:00
36 changed files with 2520 additions and 463 deletions
+26 -25
View File
@@ -1,28 +1,29 @@
@page "/"
@attribute [Authorize]
@inject IUserSessionService Session
@inject TranslationSource T
@rendermode InteractiveServer
<h1 class="page-title">SharePoint Toolbox</h1>
<h1 class="page-title">@T["app.title"]</h1>
@if (!Session.HasProfile)
{
<div class="card">
<div class="card-title">Welcome</div>
<p>Select a tenant profile to start using SharePoint Toolbox.</p>
<a href="/profiles" class="btn btn-primary">Manage Profiles</a>
<div class="card-title">@T["home.welcome"]</div>
<p>@T["home.welcome.body"]</p>
<a href="/profiles" class="btn btn-primary">@T["profmgmt.title"]</a>
</div>
}
else
{
<div class="card">
<div class="card-title">Connected: @Session.CurrentProfile!.Name</div>
<p>Tenant: <strong>@Session.CurrentProfile.TenantUrl</strong></p>
<div class="card-title">@(string.Format(T["home.connected"], Session.CurrentProfile!.Name))</div>
<p>@T["home.tenant"] <strong>@Session.CurrentProfile.TenantUrl</strong></p>
<div class="flex-row mt-16">
<a href="/permissions" class="btn btn-secondary">Permissions Audit</a>
<a href="/storage" class="btn btn-secondary">Storage Metrics</a>
<a href="/search" class="btn btn-secondary">File Search</a>
<a href="/user-audit" class="btn btn-secondary">User Access Audit</a>
<a href="/permissions" class="btn btn-secondary">@T["home.link.permissions"]</a>
<a href="/storage" class="btn btn-secondary">@T["home.link.storage"]</a>
<a href="/search" class="btn btn-secondary">@T["tab.search"]</a>
<a href="/user-audit" class="btn btn-secondary">@T["tab.userAccessAudit"]</a>
</div>
</div>
@@ -32,8 +33,8 @@ else
<a href="@feature.Href" style="text-decoration:none;color:inherit">
<div class="card feature-card">
<div style="font-size:28px;margin-bottom:8px">@feature.Icon</div>
<div style="font-weight:600;margin-bottom:4px">@feature.Title</div>
<div class="text-muted">@feature.Description</div>
<div style="font-weight:600;margin-bottom:4px">@T[feature.TitleKey]</div>
<div class="text-muted">@T[feature.DescriptionKey]</div>
</div>
</a>
}
@@ -41,19 +42,19 @@ else
}
@code {
private readonly (string Href, string Icon, string Title, string Description)[] _features = new[]
private readonly (string Href, string Icon, string TitleKey, string DescriptionKey)[] _features = new[]
{
("/permissions", "🔐", "Permissions Audit", "Scan site permission assignments"),
("/storage", "💾", "Storage Metrics", "Analyze library storage usage"),
("/search", "🔍", "File Search", "KQL-based file search"),
("/duplicates", "📋", "Duplicates", "Find duplicate files/folders"),
("/versions", "🗂️", "Version Cleanup", "Delete old file versions"),
("/transfer", "📦", "File Transfer", "Copy/move files between libraries"),
("/bulk-members", "👥", "Bulk Members", "Add users to groups via CSV"),
("/bulk-sites", "🌐", "Bulk Sites", "Create sites from CSV"),
("/folder-structure", "📁", "Folder Structure", "Create folders from CSV template"),
("/user-audit", "👤", "User Access Audit", "Audit user permissions cross-site"),
("/user-directory", "📖", "User Directory", "Browse tenant users via Graph"),
("/templates", "📐", "Templates", "Capture and apply site templates"),
("/permissions", "🔐", "home.link.permissions", "home.feat.permissions.desc"),
("/storage", "💾", "home.link.storage", "home.feat.storage.desc"),
("/search", "🔍", "tab.search", "home.feat.search.desc"),
("/duplicates", "📋", "tab.duplicates", "home.feat.duplicates.desc"),
("/versions", "🗂️", "home.feat.versions.title", "home.feat.versions.desc"),
("/transfer", "📦", "home.feat.transfer.title", "home.feat.transfer.desc"),
("/bulk-members", "👥", "tab.bulkMembers", "home.feat.bulkmembers.desc"),
("/bulk-sites", "🌐", "tab.bulkSites", "home.feat.bulksites.desc"),
("/folder-structure", "📁", "tab.folderStructure", "home.feat.folderstruct.desc"),
("/user-audit", "👤", "tab.userAccessAudit", "home.feat.useraudit.desc"),
("/user-directory", "📖", "directory.grp.browse", "home.feat.userdir.desc"),
("/templates", "📐", "tab.templates", "home.feat.templates.desc"),
};
}