refactor: nambahin role mentor di admin account dan ngeremove max_member di project
This commit is contained in:
@@ -14,9 +14,9 @@ class ProjectService {
|
||||
return error(new BadRequestError("Admin ID is required"));
|
||||
}
|
||||
|
||||
if (actor.role !== "admin") {
|
||||
if (actor.role !== "admin" && actor.role !== "mentor") {
|
||||
return error(
|
||||
new ForbiddenError("Access denied: only admin can create project"),
|
||||
new ForbiddenError("Access denied: only admin or mentor can create project"),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -65,7 +65,6 @@ class ProjectService {
|
||||
description: projectData.description || "",
|
||||
start_date: projectData.start_date,
|
||||
end_date: projectData.end_date,
|
||||
max_members: 8,
|
||||
status: "active",
|
||||
};
|
||||
|
||||
@@ -95,7 +94,6 @@ class ProjectService {
|
||||
description: project.description,
|
||||
start_date: project.start_date,
|
||||
end_date: project.end_date,
|
||||
max_members: project.max_members,
|
||||
status: project.status,
|
||||
admin: this.mapAdmin(project.admin),
|
||||
total_members: project.members?.length || 0,
|
||||
@@ -135,9 +133,9 @@ class ProjectService {
|
||||
return error(new BadRequestError("Admin ID is required"));
|
||||
}
|
||||
|
||||
if (actor.role !== "admin") {
|
||||
if (actor.role !== "admin" && actor.role !== "mentor") {
|
||||
return error(
|
||||
new ForbiddenError("Access denied: only admin can update project"),
|
||||
new ForbiddenError("Access denied: only admin or mentor can update project"),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -188,9 +186,9 @@ class ProjectService {
|
||||
return error(new BadRequestError("Admin ID is required"));
|
||||
}
|
||||
|
||||
if (actor.role !== "admin") {
|
||||
if (actor.role !== "admin" && actor.role !== "mentor") {
|
||||
return error(
|
||||
new ForbiddenError("Access denied: only admin can archive project"),
|
||||
new ForbiddenError("Access denied: only admin or mentor can archive project"),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -223,6 +221,16 @@ class ProjectService {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (actor.role === "mentor") {
|
||||
const project = await projectRepository.findById(idProject);
|
||||
if (!project || project.id_admin !== parseInt(actor.id)) {
|
||||
return new ForbiddenError(
|
||||
"Access denied: you are not the mentor of this project",
|
||||
);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
if (actor.role === "intern") {
|
||||
const membership = await projectRepository.checkActiveMember(
|
||||
idProject,
|
||||
@@ -259,7 +267,6 @@ class ProjectService {
|
||||
description: project.description,
|
||||
start_date: project.start_date,
|
||||
end_date: project.end_date,
|
||||
max_members: project.max_members,
|
||||
status: project.status,
|
||||
admin: this.mapAdmin(project.admin),
|
||||
members:
|
||||
@@ -328,7 +335,6 @@ class ProjectService {
|
||||
description: project.description,
|
||||
start_date: project.start_date,
|
||||
end_date: project.end_date,
|
||||
max_members: project.max_members,
|
||||
status: project.status,
|
||||
admin: this.mapAdmin(project.admin),
|
||||
total_members: project.members?.length || 0,
|
||||
@@ -393,7 +399,7 @@ class ProjectService {
|
||||
return error(new BadRequestError("Admin ID is required"));
|
||||
}
|
||||
|
||||
if (actor.role !== "admin") {
|
||||
if (actor.role !== "admin" && actor.role !== "mentor") {
|
||||
return error(
|
||||
new ForbiddenError("Access denied: only mentors/admins can view their created projects"),
|
||||
);
|
||||
@@ -408,7 +414,6 @@ class ProjectService {
|
||||
description: project.description,
|
||||
start_date: project.start_date,
|
||||
end_date: project.end_date,
|
||||
max_members: project.max_members,
|
||||
status: project.status,
|
||||
admin: this.mapAdmin(project.admin),
|
||||
total_members: project.members?.length || 0,
|
||||
@@ -429,7 +434,7 @@ class ProjectService {
|
||||
return error(new BadRequestError("Admin ID is required"));
|
||||
}
|
||||
|
||||
if (actor.role !== "admin") {
|
||||
if (actor.role !== "admin" && actor.role !== "mentor") {
|
||||
return error(
|
||||
new ForbiddenError("Access denied: only admin/mentor can access interns list"),
|
||||
);
|
||||
@@ -465,7 +470,7 @@ class ProjectService {
|
||||
return error(new BadRequestError("Admin ID is required"));
|
||||
}
|
||||
|
||||
if (actor.role !== "admin") {
|
||||
if (actor.role !== "admin" && actor.role !== "mentor") {
|
||||
return error(
|
||||
new ForbiddenError("Access denied: only mentors/admins can assign members"),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user