// using System; // using System.Collections.Generic; // using System.Linq; // using System.Threading.Tasks; // using Microsoft.AspNetCore.Authorization; // using Core.Services; // using System.Security.Claims; // using Microsoft.AspNetCore.Identity; // using System.Threading.Tasks; // namespace ECommerce_API.Config.AuthorizeHandlers // { // public class OrderOwnerOrAdminHandler : AuthorizationHandler // { // // private readonly IServiceProvider _serviceProvider; // // public OrderOwnerOrAdminHandler(IServiceProvider serviceProvider) // // { // // _serviceProvider = serviceProvider; // // } // private readonly IServiceProvider _serviceProvider; // public OrderOwnerOrAdminHandler(IServiceProvider serviceProvider) // { // _serviceProvider = serviceProvider; // } // // protected override async Task HandleRequirementAsync(AuthorizationHandlerContext context, // // OrderOwnerOrAdminRequirement requirement, Guid orderId) // // { // // using var scope = _serviceProvider.CreateScope(); // // var orderService = scope.ServiceProvider.GetRequiredService(); // // var user = context.User; // // var userId = user.FindFirst(ClaimTypes.NameIdentifier)?.Value; // // var isAdmin = user.IsInRole("Admin"); // // if (isAdmin) // // { // // context.Succeed(requirement); // // return; // // } // // // // var order = await orderService.GetOrderById(orderId.ToString()); // // // if (order != null && order.CustomerId == userId) // // // { // // // context.Succeed(requirement); // // // } // // } // } // public class OrderOwnerOrAdminRequirement : IAuthorizationRequirement { } // }