iPeer Security
Overview
The stats for the logged in user are kept inside the rdAuth object. This object is stored into the session on login with rdAuth->setFromData(), and loaded on by the parent class AppController with $this->rdAuth->loadFromSession() in checkAccess().
app_controller->checkAccess()
The method will check the requested controller name against the database (specifically, the contents of sysContainer->getActionList())), and if any entry with this controller is found, it keep processing the page. Otherwise, it redirects the client to loginlout/login. Specifically which method will the client requests to be invoked, is, apparently, no concidered.
//check permission
if (!$this->rdAuth->check($this->params['controller'], $this->sysContainer->getActionList())) {
$this->Session->write('URL', $URL);
$this->Session->write('AccessErr', 'NO_PERMISSION');
$redirect = 'loginout/login';
$this->redirect($redirect);
exit;
}
Users_controller, evaluations_controller, and some others
Each potentially sensitive method in users_controller checks the user role against 'S' (or Student). If a Student should not be able to access this function, they are re-directed away from the page. If any other user type is logged on, the requested action will proceed.
if ($this->rdAuth->role == 'S') {
$this->redirect('home/index');
exit();
}
