public function indexAction() { $this->assets->addJs('js/vendor/profilesInit.js'); $this->assets->addCss('css/jquery.dataTables.css'); $profiles = Profiles::find(array('conditions' => 'deleted=0 AND hidden =0')); $resources = Resources::find(array('conditions' => 'deleted=0 AND hidden=0')); $permissions = Permissions::find(array('conditions' => 'deleted=0 AND hidden=0')); $permissionArray = array(); foreach ($permissions as $permission) { $permissionArray[$permission->profileid][$permission->resourceid][$permission->resourceaction] = 1; } $this->view->setVar('permissions', $permissionArray); $this->view->setVar('profiles', $profiles); $this->view->setVar('resources', $resources); }
public function initialize($entity = null, $options = null) { // In edition the id is hidden if (isset($options['edit']) && $options['edit']) { $uid = new Hidden('uid'); } else { $uid = new Text('uid'); } $this->add($uid); $username = new Text('username', array()); $username->addValidators(array(new PresenceOf(array('message' => 'The name is required')))); $this->add($username); $password = new Password('password', array()); $password->addValidators(array(new PresenceOf(array('message' => 'Password is required')))); $this->add($password); $last_name = new Text('last_name', array()); $last_name->addValidators(array(new PresenceOf(array('message' => 'The lastname is required')))); $this->add($last_name); $first_name = new Text('first_name', array()); $first_name->addValidators(array(new PresenceOf(array('message' => 'The firstname is required')))); $this->add($first_name); $title = new Text('title', array()); $title->addValidators(array(new PresenceOf(array('message' => 'The title is required')))); $this->add($title); $email = new Text('email', array()); $email->addValidators(array(new PresenceOf(array('message' => 'The email is required')), new Email(array('message' => 'The email is not valid')))); $this->add($email); $phone = new Text('phone', array()); $this->add($phone); $address = new Text('address', array()); $this->add($address); $city = new Text('city', array()); $this->add($city); $zip = new Text('zip', array()); $this->add($zip); $company = new Text('company', array()); $this->add($company); $this->add(new Select("profileuid", Profiles::find(array('conditions' => 'deleted=0 AND hidden=0')), array('using' => array('uid', 'title')))); $this->add(new Select("usergroup", Usergroups::find(array('conditions' => 'deleted=0 AND hidden=0')), array('using' => array('uid', 'title')))); $this->add(new Select("userlanguage", Languages::find(array('conditions' => 'deleted=0 AND hidden=0')), array('using' => array('uid', 'title')))); $this->add(new Select('superuser', array('0' => ControllerBase::translate('no'), '1' => ControllerBase::translate('yes')))); }
public function createAction() { if ($this->request->isPost()) { $time = time(); $feuser = new Feusers(); $feuser->assign(array("pid" => 0, 'tstamp' => $time, 'crdate' => $time, 'cruser_id' => $this->session->get('auth')['uid'], 'deleted' => 0, 'hidden' => 0, 'username' => $this->request->getPost('username'), 'password' => $this->auth->encryptPassword($this->request->getPost('password')), 'first_name' => $this->request->getPost('first_name'), 'last_name' => $this->request->getPost('last_name'), 'title' => $this->request->getPost('title'), 'email' => $this->request->getPost('email'), 'phone' => $this->request->getPost('phone'), 'address' => $this->request->getPost('address'), 'city' => $this->request->getPost('city'), 'zip' => $this->request->getPost('zip'), 'company' => $this->request->getPost('company'), 'profileid' => $this->request->getPost('profileuid'), 'usergroup' => $this->request->getPost('usergroup'), 'superuser' => $this->request->getPost('superuser'), 'userlanguage' => $this->request->getPost('userlanguage'))); if (!$feuser->save()) { $this->flash->error($feuser->getMessages()); } else { $this->flash->success("Feuser was created successfully"); } /*Forces to rewrite ACL list on next request*/ unlink('../app/cache/acl/data.txt'); } $profiles = Profiles::find(array('conditions' => 'deleted=0 AND hidden=0')); $languages = Languages::find(array('conditions' => 'deleted=0 AND hidden=0')); $usergroups = Usergroups::find(array('conditions' => 'deleted=0 AND hidden=0')); $this->view->setVar('profiles', $profiles); $this->view->setVar('languages', $languages); $this->view->setVar('usergroups', $usergroups); }
/** * Rebuilds the access list into a file * * @return \Phalcon\Acl\Adapter\Memory */ public function rebuild() { $acl = new AclMemory(); $acl->setDefaultAction(\Phalcon\Acl::DENY); // Register roles $profiles = Profiles::find('deleted = 0 AND hidden=0'); foreach ($profiles as $profile) { $acl->addRole(new AclRole($profile->title)); } foreach ($this->privateResources as $resource => $actions) { $acl->addResource(new AclResource($resource), $actions); } foreach ($this->publicResources as $resource => $actions) { $acl->addResource(new AclResource($resource), $actions); } // Grant acess to private area to role Users foreach ($profiles as $profile) { foreach ($profile->getPermissions() as $permission) { $resource = $permission->getResource(); $acl->addResource(new AclResource($resource->title), $permission->resourceaction); $acl->allow($profile->title, $resource->title, $permission->resourceaction); foreach ($this->privateResources as $privateResources => $actions) { $acl->allow($profile->title, $privateResources, $actions); } foreach ($this->publicResources as $publicresource => $actions) { $acl->allow($profile->title, $publicresource, '*'); } } // Always grant these permissions } $roles = array('guests' => new AclRole('Guests')); foreach ($roles as $role) { $acl->addRole($role); } foreach ($roles as $role) { foreach ($this->publicResources as $resource => $actions) { $acl->allow($role->getName(), $resource, '*'); } } if (touch($this->config->application->appsDir . $this->filePath) && is_writable($this->config->application->appsDir . $this->filePath)) { file_put_contents($this->config->application->appsDir . $this->filePath, serialize($acl)); // Store the ACL in APC if (function_exists('apc_store')) { apc_store('nltool-acl', $acl); } } else { $this->flash->error('The user does not have write permissions to create the ACL list at ' . $this->config->application->appsDir . $this->filePath); } return $acl; }