protected virtual async Task CheckGrantsAsync(IAuthorizeInfo authorizeInfo, CancellationToken cancellationToken)
        {
            if (await permissionChecker.IsGrantedAsync(authorizeInfo.RequireAll, authorizeInfo.Permissions, cancellationToken))
            {
                return;
            }

            throw new AuthorizationException("Permissões necessárias não estão concedidas.");
        }
        private static async Task <bool> IsGrantedAllAsync(this IGrantChecker permissionChecker, string[] permissionNames, CancellationToken cancellationToken)
        {
            if (permissionNames.IsNullOrEmpty())
            {
                return(true);
            }

            foreach (var item in permissionNames)
            {
                if (!await permissionChecker.IsGrantedAsync(item, cancellationToken))
                {
                    return(false);
                }
            }

            return(true);
        }