// 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 Commerce.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 { }