import type { DashboardUser, ProjectItem, Member } from "./B01_Dashboard_Api_Fetch"; export function canEditProject(user: DashboardUser, project: ProjectItem): boolean { if (user.role === "SYSTEM_ADMIN") return true; if (user.role === "ADMIN") return user.company_id !== null; // 참여자로 지정된 일반 사용자는 수정할 수 있다 (2026-09-06 사용자 확정). return (project.member_user_ids ?? []).includes(user.id); } export function canDeleteProject(user: DashboardUser): boolean { // 회사 관리자도 자기 회사 프로젝트를 지운다 (2026-09-06 사용자 확정). 범위는 백엔드가 다시 본다. return user.role === "SYSTEM_ADMIN" || (user.role === "ADMIN" && user.company_id !== null); } export function canAddUser(user: DashboardUser): boolean { return user.role === "SYSTEM_ADMIN" || user.role === "ADMIN"; } export function canChangeRole(user: DashboardUser, _targetUser: Member | DashboardUser): boolean { // 회사 관리자도 자기 회사 안에서 역할을 바꾼다 (2026-09-06 사용자 확정). // 마지막 관리자 이탈·시스템 관리자 변경은 백엔드가 막는다. return user.role === "SYSTEM_ADMIN" || (user.role === "ADMIN" && user.company_id !== null); } export function canDeleteUser(user: DashboardUser, _targetUser: Member | DashboardUser): boolean { if (user.role === "SYSTEM_ADMIN") return true; // ADMIN은 본인 회사의 멤버만 삭제 가능 return user.role === "ADMIN" && user.company_id !== null; }