![]() |
VOOZH | about |
dotnet add package Tharga.Team.Blazor --version 3.0.4
NuGet\Install-Package Tharga.Team.Blazor -Version 3.0.4
<PackageReference Include="Tharga.Team.Blazor" Version="3.0.4" />
<PackageVersion Include="Tharga.Team.Blazor" Version="3.0.4" />Directory.Packages.props
<PackageReference Include="Tharga.Team.Blazor" />Project file
paket add Tharga.Team.Blazor --version 3.0.4
#r "nuget: Tharga.Team.Blazor, 3.0.4"
#:package Tharga.Team.Blazor@3.0.4
#addin nuget:?package=Tharga.Team.Blazor&version=3.0.4Install as a Cake Addin
#tool nuget:?package=Tharga.Team.Blazor&version=3.0.4Install as a Cake Tool
Team management Blazor components for multi-tenant applications. Works with both Blazor Server and Blazor WebAssembly.
TeamSelector, TeamComponent, TeamDialog, InviteUserDialog, TeamInviteView.ApiKeyView for team-scoped API keys. Row actions are in a single overflow (⋮) context menu (copy, show/hide, audit, edit roles & scopes, lock, refresh, delete). On create or regenerate the key is shown once in a reveal dialog with a copy button and a "shown only once / not stored" warning — required because with AutoLockKeys the key is locked immediately. Shows Created and Last used columns per key (SystemApiKeyView shows the same for system keys); the Last used tooltip lists Created / Expiry / Created by (falling back to "System" for keys with no recorded creator, e.g. auto-generated). Also shows a Tags column (system-set key-value tags, displayed read-only via an (i) tooltip). Per-component parameters: ShowScopeTooltip (effective-scope (i), default on), ShowScopeOverrides (scope-override editor), ShowRoles (tenant-role editor), ShowLastUsed (Last used column; 60-day expiry warning), ShowExpiryDatePicker, ShowTags (bool? — null = auto-show when any key has tags), ChipTagKeys, ShowAuditLogButton, AllowGridSorting (sort by Name / Last used, default on, Name ascending), AllowGridFiltering (case-insensitive Name text filter, default off), ShowPrivateKeys (None/Mine/All — include owner-scoped "private" keys; default None) and AllowPrivilegedAccess (let Administrator/Owner see private keys when All; view-only). TeamComponent shares ShowScopeTooltip/ShowScopeOverrides/ShowRoles; SystemApiKeyView uses global system scopes (o.ConfigureSystemScopes). Access is gated on the apikey:manage scope; cross-team access comes from mapping a role to system scopes (o.ConfigureSystemRoles), not per-component role parameters. "Last used" writes are throttled by ApiKeyOptions.LastUsedThrottle (default 1 min).ScopeView shows which scopes a member would have: pick an access level (single-select bar; Owner/Administrator are merged since they grant the same scopes) and roles (multi-select bar), and scopes not granted by the selection are greyed out. Defaults to the signed-in member's own access level, roles, and scope overrides (overrides are highlighted with a ⭐ and an Override badge). Built dynamically from IScopeRegistry / ITenantRoleRegistry, so it always reflects the live configuration (no hard-coded list). Parameters: ShowDescription (default on), ShowAccessLevelSelector (default on), ShowRoles (default on; the roles bar auto-hides when no tenant roles are configured), AllowGridSorting (sort by scope name, default on), AllowGridFiltering (case-insensitive name filter, default off). Shows a friendly notice when no scopes are configured.UserProfileView, UsersView.LoginDisplay with login/logout and team navigation.TeamClaimsAuthenticationStateProvider adds TeamKey, AccessLevel, role, and scope claims. Compatible with all hosting models.AddThargaTeamBlazor registers a circuit-aware ITeamPrincipalAccessor, so [RequireScope] / [RequireAccessLevel] on services (registered with AddScopedWithScopes / AddScopedWithAccessLevel) enforce when called from interactive Blazor Server components, not just from controllers/API.AuditLogView for viewing audit logs with charts and filtering.Use AddThargaPlatform to register all Platform services in one call:
builder.AddThargaPlatform(o =>
{
o.Blazor.Title = "My App";
o.Blazor.RegisterTeamService<MyTeamService, MyUserService>();
});
var app = builder.Build();
app.UseThargaPlatform();
This registers auth (Azure AD + OIDC), API key authentication, Blazor components, and controllers with sensible defaults. See the main for the full setup including MongoDB.
For partial or custom setups, use the individual methods:
builder.AddThargaAuth(); // registers auth services
app.UseThargaAuth(); // maps /login and /logout endpoints
Requires an AzureAd section in appsettings.json:
{
"AzureAd": {
"Authority": "https://<tenant>.ciamlogin.com/<domain>",
"ClientId": "<client-id>",
"TenantId": "<tenant-id>",
"CallbackPath": "/signin-oidc"
}
}
builder.Services.AddThargaTeamBlazor(o =>
{
o.Title = "My App";
o.RegisterTeamService<MyTeamService, MyUserService>();
});
UI components:
<LoginDisplay /> — profile menu with Gravatar when authenticated, login button when not.<UserProfileView /> — displays the user's profile info and authentication claims.| Package | Description |
|---|---|
| Tharga.Team.MongoDB | MongoDB persistence for teams and users |
| Tharga.Team.Service | Server-side API key auth, Swagger, audit logging |
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.0.4 | 74 | 6/14/2026 |
| 3.0.3 | 101 | 6/11/2026 |
| 3.0.2 | 107 | 6/4/2026 |
| 3.0.1 | 99 | 6/2/2026 |
| 3.0.0 | 102 | 6/2/2026 |
| 2.1.3 | 99 | 5/30/2026 |
| 2.1.2 | 93 | 5/29/2026 |
| 2.1.1 | 99 | 5/26/2026 |
| 2.1.0 | 98 | 5/18/2026 |
| 2.0.18 | 171 | 5/11/2026 |
| 2.0.17 | 112 | 5/10/2026 |
| 2.0.16 | 100 | 5/7/2026 |
| 2.0.15 | 138 | 4/29/2026 |
| 2.0.14 | 103 | 4/29/2026 |
| 2.0.13 | 113 | 4/21/2026 |
| 2.0.12 | 106 | 4/20/2026 |
| 2.0.11 | 132 | 4/18/2026 |
| 2.0.10 | 114 | 4/17/2026 |
| 2.0.9 | 103 | 4/17/2026 |
| 2.0.8 | 127 | 4/8/2026 |