feat(all): ! Критические изменения логики работы всех сервисорв, База Данных имееет неокончательную версию. Template, Scheduler переведены на работу с Unit+Job+JobGroup вместо Host+ApplicationsInWork

This commit is contained in:
Mikhail Kuznetsov
2025-06-25 14:17:34 +10:00
parent 1b867585d8
commit 03c7852378
54 changed files with 5176 additions and 989 deletions

View File

@@ -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();
}