Non-CP routes in plugins
There are a couple of issues here:


Any action methods in the controller class needs the "action" prefix to their name, i.e. actionIndex() for your "index" action, or actionLogin() for another action route calling "myPlugin/access/login".


In other words, rename your index() method in the controller to actionIndex(), and it should work.


For action routes, plugin handles should be written in camelcase – i.e. "myPlugin/access/index", not "myplugin/access/index".
You have a minor typo in the controller:

$templatesPath = craft()->path->pluginsPath().'myplugin/templates/site/';


should read

$templatesPath = craft()-&gt;path-&gt;getPluginsPath().'myplugin/templates/site/';


Addendum: this might just be a typo in the question text, but your controller class is actually named "Portal_AccessController", so it will obviously not respond to the route "myPlugin/access/index" – the latter should read "portal/access/index" (or the controller should be renamed "MyPlugin_AccessController)