admin ajax is not working for non logged in users

There are some “magic” request parameters that are better avoided, mostly anything that can be used as a parameter name at a request url but also some more like “email” (don’t think it is well documented and a quick google failed to bring a good reference).

Try to change the names of your parameters especially the “author” and “cat”, maybe just add some prefix to them.