Sorry if this has been answered. I am new to Magento and am looking for a solution to allow only users that I invite with an authentication code to access my site. I email them the code, they enter the site and read some documentation, then create an account. I do not want them to have a customer account until after they review my documentation. Is there any way to do this?
I would recommend you to use "Private Sale" functionality which is very useful feature in your's case. This comes out of box with Magento Enterprise Edition and allows admin to create Invitations. These can be sent out in an emails and can be further configured to allow only those who receive an invitation to create an account. All settings are available in the back-end.
If you're using community edition then probably you can look at the Magento Marketplace for the ready to use solutions. Below is the user guide for Private Sale.