feat(all): ! Критические изменения логики работы всех сервисорв, База Данных имееет неокончательную версию. Template, Scheduler переведены на работу с Unit+Job+JobGroup вместо Host+ApplicationsInWork
This commit is contained in:
@@ -15,6 +15,7 @@ using PARR.Constants;
|
||||
using PARR.DAL.DomainModels;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
using PARR.DAL.Services.Interfaces.Unit;
|
||||
|
||||
namespace PARR.API.Controllers.V1
|
||||
{
|
||||
@@ -29,6 +30,7 @@ namespace PARR.API.Controllers.V1
|
||||
private readonly IMapper mapper;
|
||||
private readonly ITemplateService templateService;
|
||||
private readonly IClientService clientService;
|
||||
private readonly IUnitService unitService;
|
||||
private readonly ILogger<AgentHistoryController> logger;
|
||||
|
||||
public AgentHistoryController(
|
||||
@@ -38,6 +40,7 @@ namespace PARR.API.Controllers.V1
|
||||
IMapper mapper,
|
||||
ITemplateService templateService,
|
||||
IClientService clientService,
|
||||
IUnitService unitService,
|
||||
ILogger<AgentHistoryController> logger
|
||||
)
|
||||
{
|
||||
@@ -47,6 +50,7 @@ namespace PARR.API.Controllers.V1
|
||||
this.mapper = mapper;
|
||||
this.templateService = templateService;
|
||||
this.clientService = clientService;
|
||||
this.unitService = unitService;
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
@@ -121,16 +125,22 @@ namespace PARR.API.Controllers.V1
|
||||
|
||||
|
||||
var clientIp = clientService.GetClientIp()?.ToString();
|
||||
var template = await templateService.Get().Include(t => t.Host).FirstOrDefaultAsync(t => t.Id == request.TemplateId);
|
||||
var template = await templateService.Get()
|
||||
.Include(t => t.Unit)
|
||||
.ThenInclude(t => t!.UnitValues)
|
||||
|
||||
.FirstOrDefaultAsync(t => t.Id == request.TemplateId);
|
||||
|
||||
if (template == null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { FieldName = nameof(request.TemplateId), Message = $"Не найден шаблон с Id: {request.TemplateId}" } }));
|
||||
|
||||
//проверять что этот этот шаблон привязан к этому серверу по ip
|
||||
if (template.Host?.IP != clientIp)
|
||||
var unit = await unitService.GetWithIncludes().AsNoTracking().FirstOrDefaultAsync(t => t.Id == template.UnitId);
|
||||
var unitIp = unit?.UnitValues.FirstOrDefault(t => t.Field!.AihitName == "IP_АДРЕС")!.Value!.Value;
|
||||
if (unitIp != clientIp)
|
||||
{
|
||||
logger.LogWarning($"Клиент с ip: {clientIp} пытается записать историю агента для templateId: {request.TemplateId}, " +
|
||||
$"но у шаблона ip: {template.Host?.IP}, доступ запрещен так как их ip не равны.");
|
||||
$"но у шаблона ip: {unitIp}, доступ запрещен так как их ip не равны.");
|
||||
return Forbid();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user