refactor(webui): consume core access explanations

This commit is contained in:
2026-07-21 13:18:36 +02:00
parent d0ef0531c0
commit 21f77ffc50
4 changed files with 18 additions and 25 deletions

View File

@@ -18,7 +18,7 @@
"LICENSE" "LICENSE"
], ],
"peerDependencies": { "peerDependencies": {
"@govoplan/core-webui": "^0.1.8", "@govoplan/core-webui": "^0.1.9",
"lucide-react": "^1.23.0", "lucide-react": "^1.23.0",
"react": "^19.0.0", "react": "^19.0.0",
"react-dom": "^19.0.0", "react-dom": "^19.0.0",

View File

@@ -13,7 +13,7 @@
} }
}, },
"peerDependencies": { "peerDependencies": {
"@govoplan/core-webui": "^0.1.8", "@govoplan/core-webui": "^0.1.9",
"lucide-react": "^1.23.0", "lucide-react": "^1.23.0",
"react": "^19.0.0", "react": "^19.0.0",
"react-dom": "^19.0.0", "react-dom": "^19.0.0",

View File

@@ -1,5 +1,13 @@
import type { ApiSettings, DeltaDeletedItem, PrivacyRetentionPolicy, TenantAdminItem } from "@govoplan/core-webui"; import type {
import { apiFetch, apiGetList, apiPath, apiQuery } from "@govoplan/core-webui"; AccessDecisionProvenanceItem as CoreAccessDecisionProvenanceItem,
ApiSettings,
DeltaDeletedItem,
PrivacyRetentionPolicy,
ResourceAccessExplanationOptions,
ResourceAccessExplanationResponse as CoreResourceAccessExplanationResponse,
TenantAdminItem
} from "@govoplan/core-webui";
import { apiFetch, apiGetList, apiPath, apiQuery, fetchResourceAccessExplanation as fetchCoreResourceAccessExplanation } from "@govoplan/core-webui";
export { fetchAdminOverview, fetchPermissionCatalog, fetchTenants } from "@govoplan/core-webui"; export { fetchAdminOverview, fetchPermissionCatalog, fetchTenants } from "@govoplan/core-webui";
export type { export type {
AdminOverview, AdminOverview,
@@ -101,12 +109,7 @@ export type AccessScopeExplanationItem = {
sources: AccessRoleSourceItem[]; sources: AccessRoleSourceItem[];
}; };
export type AccessDecisionProvenanceItem = { export type AccessDecisionProvenanceItem = Omit<CoreAccessDecisionProvenanceItem, "details"> & {
kind: string;
id?: string | null;
label?: string | null;
tenant_id?: string | null;
source?: string | null;
details: Record<string, unknown>; details: Record<string, unknown>;
}; };
@@ -136,13 +139,7 @@ export type UserAccessExplanationResponse = {
function_facts: FunctionFactExplanationItem[]; function_facts: FunctionFactExplanationItem[];
}; };
export type ResourceAccessExplanationResponse = { export type ResourceAccessExplanationResponse = CoreResourceAccessExplanationResponse<UserAdminItem, AccessDecisionProvenanceItem>;
user: UserAdminItem;
resource_type: string;
resource_id: string;
action: string;
provenance: AccessDecisionProvenanceItem[];
};
export type SystemAccountItem = { export type SystemAccountItem = {
account_id: string; account_id: string;
@@ -356,15 +353,9 @@ export function fetchUserAccessExplanation(settings: ApiSettings, userId: string
export function fetchResourceAccessExplanation( export function fetchResourceAccessExplanation(
settings: ApiSettings, settings: ApiSettings,
options: { userId: string; resourceType: string; resourceId: string; action: string; tenantId?: string | null } options: ResourceAccessExplanationOptions
): Promise<ResourceAccessExplanationResponse> { ): Promise<ResourceAccessExplanationResponse> {
return apiFetch(settings, apiPath("/api/v1/admin/access/resource-explanation", { return fetchCoreResourceAccessExplanation<UserAdminItem, AccessDecisionProvenanceItem>(settings, options);
user_id: options.userId,
resource_type: options.resourceType,
resource_id: options.resourceId,
action: options.action,
tenant_id: options.tenantId
}));
} }
export async function fetchGroups(settings: ApiSettings): Promise<GroupSummary[]> { export async function fetchGroups(settings: ApiSettings): Promise<GroupSummary[]> {

View File

@@ -2,4 +2,6 @@ export { default } from "./module";
export * from "./module"; export * from "./module";
export * from "./api/admin"; export * from "./api/admin";
export { default as AdminPage } from "./features/admin/AdminPage"; export { default as AdminPage } from "./features/admin/AdminPage";
export { ResourceAccessExplanation } from "@govoplan/core-webui";
export type { ResourceAccessExplanationOptions, ResourceAccessExplanationProps, ResourceAccessExplanationUser } from "@govoplan/core-webui";
export type { PlatformWebModule, PlatformNavItem, PlatformRouteContribution, PlatformRouteContext } from "@govoplan/core-webui"; export type { PlatformWebModule, PlatformNavItem, PlatformRouteContribution, PlatformRouteContext } from "@govoplan/core-webui";