public async Task <IActionResult> GetPhotoMeta(Guid id) { var photoEntity = await photosRepository.GetPhotoMetaAsync(id); if (photoEntity == null) { return(NotFound()); } var photo = mapper.Map <PhotoDto>(photoEntity); return(Ok(photo)); }
public async Task <IActionResult> GetPhoto(Guid id) { var photoEntity = await photosRepository.GetPhotoMetaAsync(id); if (photoEntity == null) { return(NotFound()); } var photo = mapper.Map <Photo>(photoEntity); var model = new GetPhotoModel(photo); return(View(model)); }
protected override async Task HandleRequirementAsync( AuthorizationHandlerContext context, MustOwnPhotoRequirement requirement) { var userId = context.User.FindFirstValue(ClaimTypes.NameIdentifier); // NOTE: IHttpContextAccessor позволяет получать HttpContext там, где это не получается сделать более явно. var httpContext = httpContextAccessor.HttpContext; // NOTE: RouteData содержит информацию о пути и параметрах запроса. // Ее сформировал UseRouting и к моменту авторизации уже отработал. var routeData = httpContext?.GetRouteData(); var photoIdString = routeData?.Values["id"].ToString(); if (!Guid.TryParse(photoIdString, out var photoId)) { context.Fail(); return; } var photo = await photosRepository.GetPhotoMetaAsync(photoId); if (photo != null && photo.OwnerId == userId) { context.Succeed(requirement); return; } context.Fail(); }