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
|
||||
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);
|
||||
|
||||
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);
|
||||
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
|
||||
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
|
||||
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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user