- project_members 표 신설(016 마이그레이션, 기존 프로젝트는 생성자 자동 채움) - 프로젝트 수정 모달에 참여자 선택 추가, 참여자로 지정된 일반사용자는 해당 프로젝트 수정 가능 (백엔드 _can_edit_project 동반 수정) - B02 프로젝트 생성 시 생성자를 참여자로 자동 등록, 참여자도 같은 회사 구성원인지 검증 - 가입 요청 목록을 대기 상태만 표시 (처리 완료 건이 사용자 관리 목록과 중복 노출되던 문제) - 팀원 등록 시 남아 있던 가입 신청 자동 정리 - 서명·로고 선택 문구를 뜻이 드러나게 수정 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
30 lines
1.5 KiB
TypeScript
30 lines
1.5 KiB
TypeScript
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;
|
|
}
|