diff --git a/PARR.API/Controllers/V1/AgentHistoryController.cs b/PARR.API/Controllers/V1/AgentHistoryController.cs index 24765f5c..518381f7 100644 --- a/PARR.API/Controllers/V1/AgentHistoryController.cs +++ b/PARR.API/Controllers/V1/AgentHistoryController.cs @@ -1,5 +1,6 @@ using AutoMapper; using FluentValidation; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using PARR.API.Contracts.V1; @@ -10,6 +11,7 @@ using PARR.API.Contracts.V1.Responses.Base; using PARR.API.Controllers.V1.Base; using PARR.API.Extensions; using PARR.API.Services.Interfaces; +using PARR.Constants; using PARR.DAL.DomainModels; using PARR.DAL.Models; using PARR.DAL.Services.Interfaces; @@ -25,18 +27,27 @@ namespace PARR.API.Controllers.V1 private readonly IAgentHistoryService agentHistoryService; private readonly IUriService uriService; private readonly IMapper mapper; + private readonly ITemplateService templateService; + private readonly IClientService clientService; + private readonly ILogger logger; public AgentHistoryController( IValidator validator, IAgentHistoryService agentHistoryService, IUriService uriService, - IMapper mapper + IMapper mapper, + ITemplateService templateService, + IClientService clientService, + ILogger logger ) { this.validator = validator; this.agentHistoryService = agentHistoryService; this.uriService = uriService; this.mapper = mapper; + this.templateService = templateService; + this.clientService = clientService; + this.logger = logger; } @@ -44,6 +55,7 @@ namespace PARR.API.Controllers.V1 /// Получить историю работы агента постранично /// /// + [Authorize(Roles = ParrRoles.Administrator.Role)] [HttpGet(ApiRoutes.AgentHistory.GetAll)] public async Task GetAll([FromQuery] PaginationQuery paginationQuery, [FromQuery] AgentHistoryQuery request) { @@ -72,6 +84,7 @@ namespace PARR.API.Controllers.V1 /// /// /// + [Authorize(Roles = ParrRoles.Administrator.Role)] [HttpGet(ApiRoutes.AgentHistory.Get)] public async Task GetById([FromRoute] Guid id) { @@ -90,6 +103,7 @@ namespace PARR.API.Controllers.V1 /// Добавить запись в историю работы агента /// /// + [Authorize(Roles = ParrRoles.Agent.RoleOrAdmin)] [HttpPost(ApiRoutes.AgentHistory.Create)] public async Task Create([FromBody] AgentHistoryRequest request) { @@ -97,7 +111,20 @@ namespace PARR.API.Controllers.V1 if (!resultValidate.IsValid) return BadRequest(new Response(resultValidate.Errors)); - //todo: проверять что этот этот шаблон привязан к этому серверу по ip??? + + var clientIp = clientService.GetClientIp()?.ToString(); + var template = await templateService.Get().Include(t => t.Host).FirstOrDefaultAsync(t => t.Id == request.TemplateId); + + if (template == null) + return BadRequest(new Response(false, new List { new ErrorModel { FieldName = nameof(request.TemplateId), Message = $"Не найден шаблон с Id: {request.TemplateId}" } })); + + //проверять что этот этот шаблон привязан к этому серверу по ip + if (template.Host?.IP != clientIp) + { + logger.LogWarning($"Клиент с ip: {clientIp} пытается записать историю агента для templateId: {request.TemplateId}, " + + $"но у шаблона ip: {template.Host?.IP}, доступ запрещен так как их ip не равны."); + return Forbid(); + } var agentJournal = new AgentHistory { diff --git a/PARR.API/Controllers/V1/AgentTaskController.cs b/PARR.API/Controllers/V1/AgentTaskController.cs index 885a69e4..4f45b054 100644 --- a/PARR.API/Controllers/V1/AgentTaskController.cs +++ b/PARR.API/Controllers/V1/AgentTaskController.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using PARR.API.Contracts.V1; using PARR.API.Contracts.V1.Requests.Queries; @@ -6,6 +7,7 @@ using PARR.API.Contracts.V1.Responses; using PARR.API.Contracts.V1.Responses.Base; using PARR.API.Controllers.V1.Base; using PARR.API.Services.Interfaces; +using PARR.Constants; using PARR.DAL.Contracts; using PARR.DAL.Services.Interfaces; using PARR.DAL.TransformServices; @@ -15,6 +17,7 @@ namespace PARR.API.Controllers.V1 /// /// Выдает задания Агенту сервера /// + [Authorize(Roles = ParrRoles.Agent.RoleOrAdmin)] public class AgentTaskController : BaseApiController { private readonly IClientService clientService; diff --git a/PARR.API/Controllers/V1/GeneratorTemplateController.cs b/PARR.API/Controllers/V1/GeneratorTemplateController.cs index eb5e5e21..663bed66 100644 --- a/PARR.API/Controllers/V1/GeneratorTemplateController.cs +++ b/PARR.API/Controllers/V1/GeneratorTemplateController.cs @@ -1,4 +1,5 @@ using FluentValidation; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using PARR.API.Contracts.V1; using PARR.API.Contracts.V1.Requests; @@ -8,10 +9,12 @@ using PARR.API.Services.Interfaces; using PARR.API.Settings; using PARR.BLL.Domain.Mq; using PARR.BLL.Services.Interfaces; +using PARR.Constants; using System.Text.Json; namespace PARR.API.Controllers.V1 { + [Authorize(Roles = ParrRoles.Administrator.Role)] public class GeneratorTemplateController : BaseApiController { private readonly IValidator validator; diff --git a/PARR.API/Controllers/V1/HostController.cs b/PARR.API/Controllers/V1/HostController.cs index dd0e6387..56ed8674 100644 --- a/PARR.API/Controllers/V1/HostController.cs +++ b/PARR.API/Controllers/V1/HostController.cs @@ -1,4 +1,5 @@ using AutoMapper; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using PARR.API.Contracts.V1; @@ -8,11 +9,13 @@ using PARR.API.Contracts.V1.Responses.Base; using PARR.API.Controllers.V1.Base; using PARR.API.Extensions; using PARR.BLL.Helpers; +using PARR.Constants; using PARR.DAL.DomainModels; using PARR.DAL.Services.Interfaces; namespace PARR.API.Controllers.V1 { + [Authorize(Roles = ParrRoles.Administrator.Role)] public class HostController : BaseApiController { private readonly IMapper mapper; diff --git a/PARR.API/Controllers/V1/RobotHistoryController.cs b/PARR.API/Controllers/V1/RobotHistoryController.cs index cd6ca33a..724992f2 100644 --- a/PARR.API/Controllers/V1/RobotHistoryController.cs +++ b/PARR.API/Controllers/V1/RobotHistoryController.cs @@ -1,5 +1,6 @@ using AutoMapper; using FluentValidation; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using PARR.API.Contracts.V1; @@ -10,12 +11,14 @@ using PARR.API.Contracts.V1.Responses.Base; using PARR.API.Controllers.V1.Base; using PARR.API.Extensions; using PARR.API.Services.Interfaces; +using PARR.Constants; using PARR.DAL.DomainModels; using PARR.DAL.Models; using PARR.DAL.Services.Interfaces; namespace PARR.API.Controllers.V1 { + [Authorize(Roles = ParrRoles.EsppRobot.RoleOrAdmin)] public class RobotHistoryController : BaseApiController { private readonly IValidator validator; @@ -54,7 +57,7 @@ namespace PARR.API.Controllers.V1 IQueryable query = robotHistoryService.Get() .Include(t => t.RobotConfiguration) - .ThenInclude(t=>t!.Template) + .ThenInclude(t => t!.Template) .Include(t => t.RobotHistoryLevel) .Include(t => t.StatusTask) .OrderByDescending(t => t.DateCreated); diff --git a/PARR.API/Controllers/V1/RobotHistoryLevelController.cs b/PARR.API/Controllers/V1/RobotHistoryLevelController.cs index 2dc3cdb9..10734603 100644 --- a/PARR.API/Controllers/V1/RobotHistoryLevelController.cs +++ b/PARR.API/Controllers/V1/RobotHistoryLevelController.cs @@ -1,14 +1,17 @@ using AutoMapper; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using PARR.API.Contracts.V1; using PARR.API.Contracts.V1.Responses; using PARR.API.Contracts.V1.Responses.Base; using PARR.API.Controllers.V1.Base; +using PARR.Constants; using PARR.DAL.Services.Interfaces; namespace PARR.API.Controllers.V1 { + [Authorize(Roles = ParrRoles.EsppRobot.RoleOrAdmin)] public class RobotHistoryLevelController : BaseApiController { private readonly IMapper mapper; diff --git a/PARR.API/Controllers/V1/RobotTaskController.cs b/PARR.API/Controllers/V1/RobotTaskController.cs index cf460ed2..5beb84a4 100644 --- a/PARR.API/Controllers/V1/RobotTaskController.cs +++ b/PARR.API/Controllers/V1/RobotTaskController.cs @@ -1,4 +1,5 @@ using AutoMapper; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using PARR.API.Contracts.V1; @@ -13,6 +14,7 @@ using PARR.DAL.TransformServices; namespace PARR.API.Controllers.V1 { + [Authorize(Roles = ParrRoles.EsppRobot.RoleOrAdmin)] public class RobotTaskController : BaseApiController { private readonly IMapper mapper; diff --git a/PARR.API/Controllers/V1/RobotTaskRobotStatusController.cs b/PARR.API/Controllers/V1/RobotTaskRobotStatusController.cs index e3347418..23ae4944 100644 --- a/PARR.API/Controllers/V1/RobotTaskRobotStatusController.cs +++ b/PARR.API/Controllers/V1/RobotTaskRobotStatusController.cs @@ -1,4 +1,5 @@ using AutoMapper; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using PARR.API.Contracts.V1; @@ -6,12 +7,14 @@ using PARR.API.Contracts.V1.Requests; using PARR.API.Contracts.V1.Responses; using PARR.API.Contracts.V1.Responses.Base; using PARR.API.Controllers.V1.Base; +using PARR.Constants; using PARR.DAL.Contracts; using PARR.DAL.Models; using PARR.DAL.Services.Interfaces; namespace PARR.API.Controllers.V1 { + [Authorize(Roles = ParrRoles.EsppRobot.RoleOrAdmin)] public class RobotTaskRobotStatusController : BaseApiController { private readonly IRobotConfigurationService robotConfigurationService; diff --git a/PARR.API/Controllers/V1/TaskStatusController.cs b/PARR.API/Controllers/V1/TaskStatusController.cs index 64a44d01..40f20fb5 100644 --- a/PARR.API/Controllers/V1/TaskStatusController.cs +++ b/PARR.API/Controllers/V1/TaskStatusController.cs @@ -1,14 +1,17 @@ using AutoMapper; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using PARR.API.Contracts.V1; using PARR.API.Contracts.V1.Responses; using PARR.API.Contracts.V1.Responses.Base; using PARR.API.Controllers.V1.Base; +using PARR.Constants; using PARR.DAL.Services.Interfaces; namespace PARR.API.Controllers.V1 { + [Authorize(Roles = ParrRoles.EsppRobot.RoleOrAdmin)] public class TaskStatusController : BaseApiController { private readonly IMapper mapper; diff --git a/PARR.API/Controllers/V1/TemplateController.cs b/PARR.API/Controllers/V1/TemplateController.cs index 7e4cbc0b..5c3a57b0 100644 --- a/PARR.API/Controllers/V1/TemplateController.cs +++ b/PARR.API/Controllers/V1/TemplateController.cs @@ -1,4 +1,5 @@ using AutoMapper; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using PARR.API.Contracts.V1; @@ -17,6 +18,7 @@ using PARR.DAL.Services.Interfaces; namespace PARR.API.Controllers.V1 { + [Authorize(Roles = ParrRoles.Administrator.Role)] public class TemplateController : BaseApiController { private readonly IMapper mapper; diff --git a/PARR.API/Controllers/V1/TemplateScheduleEspp.cs b/PARR.API/Controllers/V1/TemplateScheduleEspp.cs index 081f6be8..434cd9d8 100644 --- a/PARR.API/Controllers/V1/TemplateScheduleEspp.cs +++ b/PARR.API/Controllers/V1/TemplateScheduleEspp.cs @@ -1,5 +1,6 @@ using AutoMapper; using FluentValidation; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using PARR.API.Contracts.V1; using PARR.API.Contracts.V1.Requests; @@ -7,6 +8,7 @@ using PARR.API.Contracts.V1.Responses; using PARR.API.Contracts.V1.Responses.Base; using PARR.API.Controllers.V1.Base; using PARR.API.Services.Interfaces; +using PARR.Constants; using PARR.DAL.Services.Interfaces; namespace PARR.API.Controllers.V1 @@ -14,6 +16,7 @@ namespace PARR.API.Controllers.V1 /// /// Контроллер по управлению ScheduleEsppId у шаблона /// + [Authorize(Roles = ParrRoles.EsppRobot.RoleOrAdmin)] public class TemplateScheduleEspp : BaseApiController { private readonly ITemplateService templateService; diff --git a/PARR.API/Controllers/V1/TestController.cs b/PARR.API/Controllers/V1/TestController.cs index 0db12bc7..e23bea64 100644 --- a/PARR.API/Controllers/V1/TestController.cs +++ b/PARR.API/Controllers/V1/TestController.cs @@ -4,12 +4,12 @@ using PARR.API.Contracts.V1; using PARR.API.Contracts.V1.Responses.Base; using PARR.API.Controllers.V1.Base; using PARR.API.Services.Interfaces; -using PARR.Constants; using PARR.DAL.CacheServices; using PARR.DAL.TransformServices; namespace PARR.API.Controllers.V1 { + [Authorize] public class TestController : BaseApiController { private readonly IClientService clientService; @@ -28,8 +28,6 @@ namespace PARR.API.Controllers.V1 /// Получить мой ip /// /// - [Authorize(Roles = ParrRoles.Administrator.Role)] - //[Authorize] [HttpGet(ApiRoutes.Test.GetMyIp)] public IActionResult GetMyIp() {