protected override async Task HandleRequirementAsync(AuthorizationHandlerContext context, MustOwnAnimalRequirement requirement) { var filterContext = context.Resource as AuthorizationFilterContext; if (filterContext == null) { context.Fail(); return; } var animalIdString = filterContext.RouteData.Values["id"] .ToString(); if (!Guid.TryParse(animalIdString, out var animalId)) { context.Fail(); return; } var userEmail = context.User.FindFirstValue(ClaimTypes.Name); var animal = await animalAppService.Get(animalId); var user = await userAppService.Get(userEmail); var adminEmail = configuration.GetValue <string>("AdminEmail"); if (animal == null || user == null || animal.OwnerId != user.Id || user.Email != adminEmail) { context.Fail(); return; } context.Succeed(requirement); }
public async Task <IEnumerable <AnimalDto> > GetFiltered(AnimalSpecDto animalSpecDto) { return(await animalAppService.Get(animalSpecDto)); }