Chnaged the logic check if tenant and organization have any relation
This commit is contained in:
parent
a1f6552347
commit
264c9466c9
@ -1360,10 +1360,28 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Find TenantOrgMapping for given tenantId and organizationId to validate access
|
// Find TenantOrgMapping for given tenantId and organizationId to validate access
|
||||||
var tenantOrganization = await _context.TenantOrgMappings
|
var tenantOrganizationTask = Task.Run(async () =>
|
||||||
|
{
|
||||||
|
await using var context = await _dbContextFactory.CreateDbContextAsync();
|
||||||
|
return await context.TenantOrgMappings
|
||||||
.FirstOrDefaultAsync(to => to.TenantId == tenantId && to.OrganizationId == organizationId);
|
.FirstOrDefaultAsync(to => to.TenantId == tenantId && to.OrganizationId == organizationId);
|
||||||
|
|
||||||
if (tenantOrganization == null)
|
});
|
||||||
|
|
||||||
|
var primaryOrganizationTask = Task.Run(async () =>
|
||||||
|
{
|
||||||
|
await using var context = await _dbContextFactory.CreateDbContextAsync();
|
||||||
|
return await context.Tenants
|
||||||
|
.Where(t => t.Id == tenantId && t.OrganizationId == organizationId).ToListAsync();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
await Task.WhenAll(tenantOrganizationTask, primaryOrganizationTask);
|
||||||
|
|
||||||
|
var tenantOrganization = tenantOrganizationTask.Result;
|
||||||
|
var primaryOrganization = primaryOrganizationTask.Result;
|
||||||
|
|
||||||
|
if (tenantOrganization == null && !primaryOrganization.Any())
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Tenant Organization Mapping not found for TenantId: {TenantId} and OrganizationId: {OrganizationId}", tenantId, organizationId);
|
_logger.LogWarning("Tenant Organization Mapping not found for TenantId: {TenantId} and OrganizationId: {OrganizationId}", tenantId, organizationId);
|
||||||
return NotFound(ApiResponse<object>.ErrorResponse("Tenant Organization Mapping not found", "Tenant Organization Mapping not found in database", 404));
|
return NotFound(ApiResponse<object>.ErrorResponse("Tenant Organization Mapping not found", "Tenant Organization Mapping not found in database", 404));
|
||||||
@ -1378,10 +1396,10 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Generate JWT token scoped to selected tenant and logged-in employee
|
// Generate JWT token scoped to selected tenant and logged-in employee
|
||||||
var token = _refreshTokenService.GenerateJwtToken(loggedInEmployee.Email, tenantOrganization.TenantId, loggedInEmployee.OrganizationId, _jwtSettings);
|
var token = _refreshTokenService.GenerateJwtToken(loggedInEmployee.Email, tenantId, loggedInEmployee.OrganizationId, _jwtSettings);
|
||||||
|
|
||||||
// Generate and store refresh token
|
// Generate and store refresh token
|
||||||
var refreshToken = await _refreshTokenService.CreateRefreshToken(loggedInEmployee.ApplicationUserId, tenantOrganization.TenantId.ToString(), loggedInEmployee.OrganizationId, _jwtSettings);
|
var refreshToken = await _refreshTokenService.CreateRefreshToken(loggedInEmployee.ApplicationUserId, tenantId.ToString(), loggedInEmployee.OrganizationId, _jwtSettings);
|
||||||
|
|
||||||
_logger.LogInfo("Tenant selected and tokens generated for TenantId: {TenantId} and Employee: {EmployeeEmail}", tenantId, loggedInEmployee.Email ?? string.Empty);
|
_logger.LogInfo("Tenant selected and tokens generated for TenantId: {TenantId} and Employee: {EmployeeEmail}", tenantId, loggedInEmployee.Email ?? string.Empty);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user