public override Task <CommandResult <TResult> > Handle(TQuery query) { var perm = query as IRequirePermission; if (perm == null) { throw new Exception($"Command must implement {typeof(IRequirePermission)}"); } if (access.CanDo(perm.TenantId, appSettings.ApplicationName, perm.Permission.ToString())) { return(queryHandler.Handle(query)); } else { return(CommandResult <TResult> .Fail(CommandError.Forbidden($"Permission denied for {perm.Permission}")).AsTaskTyped()); } }