Checking the manage infra permission when getting the infra
This commit is contained in:
parent
368fd37115
commit
4884bf5de0
@ -999,15 +999,20 @@ namespace Marco.Pms.Services.Service
|
||||
// --- Step 1: Run independent permission checks in PARALLEL ---
|
||||
var projectPermissionTask = _permission.HasProjectPermission(loggedInEmployee, projectId);
|
||||
var viewInfraPermissionTask = _permission.HasPermission(PermissionsMaster.ViewProjectInfra, loggedInEmployee.Id, projectId);
|
||||
var manageInfraPermissionTask = _permission.HasPermission(PermissionsMaster.ManageProjectInfra, loggedInEmployee.Id, projectId);
|
||||
|
||||
await Task.WhenAll(projectPermissionTask, viewInfraPermissionTask);
|
||||
await Task.WhenAll(projectPermissionTask, viewInfraPermissionTask, manageInfraPermissionTask);
|
||||
|
||||
if (!await projectPermissionTask)
|
||||
var hasProjectPermission = projectPermissionTask.Result;
|
||||
var hasViewInfraPermission = viewInfraPermissionTask.Result;
|
||||
var hasManageInfraPermission = manageInfraPermissionTask.Result;
|
||||
|
||||
if (!hasProjectPermission)
|
||||
{
|
||||
_logger.LogWarning("Project access denied for EmployeeId: {EmployeeId} on ProjectId: {ProjectId}", loggedInEmployee.Id, projectId);
|
||||
return ApiResponse<object>.ErrorResponse("Access denied", "You don't have access to this project", 403);
|
||||
}
|
||||
if (!await viewInfraPermissionTask)
|
||||
if (!hasViewInfraPermission && !hasManageInfraPermission)
|
||||
{
|
||||
_logger.LogWarning("ViewInfra permission denied for EmployeeId: {EmployeeId}", loggedInEmployee.Id);
|
||||
return ApiResponse<object>.ErrorResponse("Access denied", "You don't have access to view this project's infrastructure", 403);
|
||||
|
Loading…
x
Reference in New Issue
Block a user