protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, BasicCommunityRequirement requirement, Trade resource) { string email = Helpers.Claims.GetEmail(context.User.Claims); if (email == null) { return(null); } Need4Service service = new Need4Service(); UserService.UserServiceClient userClient = service.GetUserClient(); Need4Protocol.User user = userClient.GetUser(new Need4Protocol.User { Email = email }); TradeUserInfo tradeUserInfo = user != null ? new TradeUserInfo { AuthenticatedUserId = user.Id, TradeId = resource.Id } : new TradeUserInfo { UnauthenticatedUser = new Empty(), TradeId = resource.Id }; TradeService.TradeServiceClient tradeClient = service.GetTradeClient(); PermissionSet permissions = tradeClient.GetPermissions(tradeUserInfo); bool hasJoinTradePermission = (from p in permissions.Permissions where p.PermissionType.Name == _Permissions.BASIC select p).Any(); if (hasJoinTradePermission) { context.Succeed(requirement); } return(Task.CompletedTask); }