public async Task <IActionResult> Permissions([FromRoute] int id, [FromServices] ResearchPermissionsService permissions) { var research = await _db.GetResearchAsync(id); var personId = Int32.Parse(User?.Claims.FirstOrDefault(x => x.Type == ClaimTypes.PrimarySid)?.Value); return(Ok(permissions.Get(research, personId))); }
public async Task <IActionResult> Edit([FromRoute] int id, [FromServices] ResearchPermissionsService permissionsService) { var item = await _db.GetResearchAsync(id); if (item == null) { return(NotFound(new ApiError("404", "Not Found", $"Исследование #{id} не найдено"))); } var personId = Int32.Parse(User?.Claims.FirstOrDefault(x => x.Type == ClaimTypes.PrimarySid)?.Value); var permissions = permissionsService.Get(item, personId); if (!permissions.CanRead) { return(Forbid()); } var model = new ResearchForm { Id = item.Id, Research = item, Init = new ResearchInitForm { Name = item.Name, Description = item.Description, AlgorithmId = item.AlgorithmId, DataSetId = item.DataSetId, CreatorId = item.CreatorId, ExecutorId = item.ExecutorId, }, Calculated = item.AccuracyRates != null && item.EfficiencyRates != null ? new ResearchCalculatedForm { AccuracyRates = item.AccuracyRates, EfficiencyRates = item.EfficiencyRates } : null, Algorithms = await _db.GetAlgorithmsListItemsAsync(), DataSets = await _db.GetDataSetsListItemsAsync(), Executors = await _db.GetPersonsListItemsByRoleAsync("User"), Permissions = permissions }; return(Ok(model)); }