One login for all. CakePHP has features you can use change its appearance and available pages and functions based on the status of whoever's logged in.
Access Control Lists, or ACL, see http://book.cakephp.org/2.0/en/core-libraries/components/access-control-lists.html ACL is more difficult to set up than other solutions, but if you have a complex list of features that users may or may not have permission to on an individual basis, this is what ACL is for. A lot of the time this feature is overkill.
Have a field on users that corresponds to user level. God, admin, member, etc. Then switch layouts according to who is logged on in. Example, say you have a field called role that can be "god", "admin" or "user", and layouts that correspond to them "god.ctp", "admin.ctp", "user.ctp" Then you can just add in the beforefilter of AppController:
public function beforeFilter()
{
if($this->Auth->user())
$this->layout = $this->Auth->user('role');
}
Then, simply use the Auth's components isAuthorized feature to deny or allow users of various roles access. For example, in AppController:
public function isAuthorized($user)
{
// Admin and god can access every action, including those with the admin prefix
if (isset($user['role']) && in_array($user['role'], array('admin', 'god')))
{
return true;
}
//allow all logged in users access to items without a prefix
if( !isset($this->params['prefix'])) return true;
// Default deny -- regular users can't access pages with the admin prefix
return false;
}
I recommend you read up on the Auth component - http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html