Enhancement #378: Update "Get Bucket List" API to Enforce Feature
This commit is contained in:
parent
a0cc285d6f
commit
b5707ba133
@ -226,8 +226,19 @@ namespace Marco.Pms.Services.Controllers
|
|||||||
public async Task<IActionResult> GetBucketList()
|
public async Task<IActionResult> GetBucketList()
|
||||||
{
|
{
|
||||||
var response = await _directoryHelper.GetBucketList();
|
var response = await _directoryHelper.GetBucketList();
|
||||||
|
if (response.StatusCode == 200)
|
||||||
|
{
|
||||||
return Ok(response);
|
return Ok(response);
|
||||||
}
|
}
|
||||||
|
else if (response.StatusCode == 401)
|
||||||
|
{
|
||||||
|
return Unauthorized(response);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return BadRequest(response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[HttpPost("bucket")]
|
[HttpPost("bucket")]
|
||||||
public async Task<IActionResult> CreateBucket(CreateBucketDto bucketDto)
|
public async Task<IActionResult> CreateBucket(CreateBucketDto bucketDto)
|
||||||
|
@ -1022,20 +1022,38 @@ namespace Marco.Pms.Services.Helpers
|
|||||||
{
|
{
|
||||||
Guid tenantId = _userHelper.GetTenantId();
|
Guid tenantId = _userHelper.GetTenantId();
|
||||||
var LoggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
var LoggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
||||||
|
var assignedRoleIds = await _context.EmployeeRoleMappings.Where(r => r.EmployeeId == LoggedInEmployee.Id).Select(r => r.RoleId).ToListAsync();
|
||||||
|
var permissionIds = await _context.RolePermissionMappings.Where(rp => assignedRoleIds.Contains(rp.ApplicationRoleId)).Select(rp => rp.FeaturePermissionId).Distinct().ToListAsync();
|
||||||
|
|
||||||
List<EmployeeBucketMapping> employeeBuckets = await _context.EmployeeBucketMappings.Where(b => b.EmployeeId == LoggedInEmployee.Id).ToListAsync();
|
List<EmployeeBucketMapping> employeeBuckets = await _context.EmployeeBucketMappings.Where(b => b.EmployeeId == LoggedInEmployee.Id).ToListAsync();
|
||||||
var bucketIds = employeeBuckets.Select(b => b.BucketId).ToList();
|
var bucketIds = employeeBuckets.Select(b => b.BucketId).ToList();
|
||||||
|
|
||||||
List<Bucket> bucketList = await _context.Buckets.Where(b => bucketIds.Contains(b.Id)).ToListAsync();
|
List<Bucket> bucketList = new List<Bucket>();
|
||||||
|
if (permissionIds.Contains(directoryAdmin))
|
||||||
|
{
|
||||||
|
bucketList = await _context.Buckets.Where(b => b.TenantId == tenantId).ToListAsync();
|
||||||
|
}
|
||||||
|
else if (permissionIds.Contains(directoryManager) || permissionIds.Contains(directoryUser))
|
||||||
|
{
|
||||||
|
bucketList = await _context.Buckets.Where(b => bucketIds.Contains(b.Id) || b.CreatedByID == LoggedInEmployee.Id).ToListAsync();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_logger.LogError("Employee {EmployeeId} attemped to access a buckets list, but do not have permission", LoggedInEmployee.Id);
|
||||||
|
return ApiResponse<object>.ErrorResponse("You don't have permission", "You don't have permission", 401);
|
||||||
|
}
|
||||||
|
|
||||||
List<BucketVM> bucketVMs = new List<BucketVM>();
|
List<BucketVM> bucketVMs = new List<BucketVM>();
|
||||||
|
if (bucketList.Any())
|
||||||
|
{
|
||||||
foreach (var bucket in bucketList)
|
foreach (var bucket in bucketList)
|
||||||
{
|
{
|
||||||
BucketVM bucketVM = bucket.ToBucketVMFromBucket();
|
BucketVM bucketVM = bucket.ToBucketVMFromBucket();
|
||||||
bucketVMs.Add(bucketVM);
|
bucketVMs.Add(bucketVM);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
_logger.LogInfo("{count} Buckets are fetched by Employee with ID {LoggedInEmployeeId}", bucketVMs.Count, LoggedInEmployee.Id);
|
_logger.LogInfo("{count} Buckets are fetched by Employee with ID {LoggedInEmployeeId}", bucketVMs.Count, LoggedInEmployee.Id);
|
||||||
return ApiResponse<object>.SuccessResponse(bucketVMs, System.String.Format("{0} buckets fetched successfully", bucketVMs.Count), 200);
|
return ApiResponse<object>.SuccessResponse(bucketVMs, $"{bucketVMs.Count} buckets fetched successfully", 200);
|
||||||
}
|
}
|
||||||
public async Task<ApiResponse<object>> CreateBucket(CreateBucketDto bucketDto)
|
public async Task<ApiResponse<object>> CreateBucket(CreateBucketDto bucketDto)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user