diff --git a/frontend/app/features/PermissionsPage.tsx b/frontend/app/features/PermissionsPage.tsx index 14f8c46..a7b8252 100644 --- a/frontend/app/features/PermissionsPage.tsx +++ b/frontend/app/features/PermissionsPage.tsx @@ -94,11 +94,14 @@ export function PermissionsPage({ notify }: { notify: (message: string) => void finally { setBusy(false); } } - async function revoke(permissionId: number) { + async function revoke(permission: PermissionGrant) { if (!resourceId) return; + const resourceLabel = resources.find((item) => String(item.id) === resourceId)?.label ?? resourceId; + const message = `${resourceType === "documents" ? "문서" : "컬렉션"} “${resourceLabel}”에서 ${targetLabel(permission)}의 ${permission.permissionType} 권한을 회수할까요?`; + if (!window.confirm(message)) return; setBusy(true); try { - await apiRequest(`/permissions/${resourceType}/${resourceId}/${permissionId}`, { method: "DELETE" }); + await apiRequest(`/permissions/${resourceType}/${resourceId}/${permission.permissionId}`, { method: "DELETE" }); notify("권한을 회수했습니다."); await loadDirectPermissions(); } catch (reason) { setError(errorMessage(reason)); } @@ -132,7 +135,7 @@ export function PermissionsPage({ notify }: { notify: (message: string) => void {permissionsLoading ? : null} {!permissionsLoading && permissionsError ? 직접 권한 목록을 조회할 수 없습니다. {permissionsError} : null} {!permissionsLoading && !permissionsError && !directPermissions.length ? 이 리소스에 직접 부여된 권한이 없습니다. : null} - {!permissionsLoading && directPermissions.length ?
대상권한만료
{directPermissions.map((permission) =>
{targetLabel(permission)}#{permission.permissionId} · user #{permission.grantedBy} · {formatDate(permission.grantedAt)}{permission.expiresAt ? formatDate(permission.expiresAt) : "제한 없음"}
)}
: null} + {!permissionsLoading && directPermissions.length ?
대상권한만료
{directPermissions.map((permission) =>
{targetLabel(permission)}#{permission.permissionId} · user #{permission.grantedBy} · {formatDate(permission.grantedAt)}{permission.expiresAt ? formatDate(permission.expiresAt) : "제한 없음"}
)}
: null} : null} ;