Fullsys.NextFIS.Permissions.MyPermissionsEndpoint 1.0.1
Fullsys.NextFIS.Permissions.MyPermissionsEndpoint
Sdílený endpoint GET /my, který vrací oprávnění přihlášeného uživatele seskupená podle rolí –
přímo z dat synchronizovaných v konzumující službě, bez volání centrální služby Users.
Klient si z rolí skládá efektivní oprávnění sám (deny-wins, chybějící = deny).
Předpoklad
Hostující služba už má zaregistrovaný IRolesPermissionsProvider – tj. volá
AddNextFisAuthorizationEFCore<TDbContext>() (nebo variantu ...WithCache) z
Fullsys.NextFIS.Security.Authorization.EFCore. Role se čtou z JWT claimu Roles.
Zdroj pravdy a revokovaná oprávnění: endpoint vrací přesně to, co je v lokální tabulce
RolePermissions(přesIRolesPermissionsProvider) – tedy stejná data, podle kterých služba i reálně autorizuje (IPermissionEvaluator). Endpoint sám nefiltruje revokovaná oprávnění (flat entitaRolePermissionsloupecIsRevokednemá), a to záměrně – aby/myzůstalo konzistentní s tím, co služba skutečně vynucuje. Odpovědnost za to, aby v tabulce nebyla revokovaná oprávnění, je proto na synchronizaci z Users.
Použití
MVC (hotový controller)
services.AddControllers().AddMyPermissionsEndpoint();
Vystaví endpoint GET api/role-permissions/my?registeredApplicationCode={code}
(parametr je volitelný; prázdný = všechny aplikace služby).
FastEndpoints / vlastní endpoint (jen služba)
services.AddMyPermissions();
A ve svém endpointu si vyžádej IMyPermissionsService:
Task<IReadOnlyList<MyRolePermissions>> GetAsync(
string? registeredApplicationCode, ClaimsPrincipal user, CancellationToken ct);
Tvar odpovědi
[
{
"roleName": "Admin",
"permissions": [
{ "code": "warehouse-web.storages", "effect": "Allowed" },
{ "code": "warehouse-web.devices", "effect": "Denied" }
]
}
]
No packages depend on Fullsys.NextFIS.Permissions.MyPermissionsEndpoint.
.NET 10.0
- Fullsys.NextFIS.Security (>= 10.0.0)