Skip to content

Commit 6d86b34

Browse files
authored
Merge pull request #263 from DocGrid/fix/262
[Fix] 권한 회수 시 확인 절차 없음
2 parents d19a702 + edad1ee commit 6d86b34

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

frontend/app/features/PermissionsPage.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,14 @@ export function PermissionsPage({ notify }: { notify: (message: string) => void
9494
finally { setBusy(false); }
9595
}
9696

97-
async function revoke(permissionId: number) {
97+
async function revoke(permission: PermissionGrant) {
9898
if (!resourceId) return;
99+
const resourceLabel = resources.find((item) => String(item.id) === resourceId)?.label ?? resourceId;
100+
const message = `${resourceType === "documents" ? "문서" : "컬렉션"}${resourceLabel}”에서 ${targetLabel(permission)}${permission.permissionType} 권한을 회수할까요?`;
101+
if (!window.confirm(message)) return;
99102
setBusy(true);
100103
try {
101-
await apiRequest(`/permissions/${resourceType}/${resourceId}/${permissionId}`, { method: "DELETE" });
104+
await apiRequest(`/permissions/${resourceType}/${resourceId}/${permission.permissionId}`, { method: "DELETE" });
102105
notify("권한을 회수했습니다.");
103106
await loadDirectPermissions();
104107
} catch (reason) { setError(errorMessage(reason)); }
@@ -132,7 +135,7 @@ export function PermissionsPage({ notify }: { notify: (message: string) => void
132135
{permissionsLoading ? <LoadingState label="직접 권한을 불러오는 중입니다." /> : null}
133136
{!permissionsLoading && permissionsError ? <Notice>직접 권한 목록을 조회할 수 없습니다. {permissionsError}</Notice> : null}
134137
{!permissionsLoading && !permissionsError && !directPermissions.length ? <Notice>이 리소스에 직접 부여된 권한이 없습니다.</Notice> : null}
135-
{!permissionsLoading && directPermissions.length ? <div className="mini-table permission-table"><div className="table-labels"><span>대상</span><span>권한</span><span>만료</span><span /></div>{directPermissions.map((permission) => <div key={permission.permissionId}><span><strong>{targetLabel(permission)}</strong><small>#{permission.permissionId} · user #{permission.grantedBy} · {formatDate(permission.grantedAt)}</small></span><StatusPill value={permission.permissionType} /><span>{permission.expiresAt ? formatDate(permission.expiresAt) : "제한 없음"}</span><button className="danger-text" disabled={busy} onClick={() => void revoke(permission.permissionId)}>회수</button></div>)}</div> : null}
138+
{!permissionsLoading && directPermissions.length ? <div className="mini-table permission-table"><div className="table-labels"><span>대상</span><span>권한</span><span>만료</span><span /></div>{directPermissions.map((permission) => <div key={permission.permissionId}><span><strong>{targetLabel(permission)}</strong><small>#{permission.permissionId} · user #{permission.grantedBy} · {formatDate(permission.grantedAt)}</small></span><StatusPill value={permission.permissionType} /><span>{permission.expiresAt ? formatDate(permission.expiresAt) : "제한 없음"}</span><button className="danger-text" disabled={busy} onClick={() => void revoke(permission)}>회수</button></div>)}</div> : null}
136139
</div>
137140
</> : null}
138141
</section>;

0 commit comments

Comments
 (0)