/** * @param integer $nUserId * @param integer $nRoleId * @return void */ public function addRole($nUserId, $nRoleId) { $objUser = User_UserRole::Table()->createRow(); $objUser->ucur_user_id = $nUserId; $objUser->ucur_role_id = $nRoleId; $objUser->save(false); }
public function editAction() { //add role if it is provided parent::editAction(); if ($this->_hasParam('roles_list')) { $objUser = $this->view->object; // when the list of roles is submitted directly with user form $arrExistingRoles = array(); foreach ($objUser->getRoles() as $objRole) { $arrExistingRoles[$objRole->getId()] = $objRole->getId(); } $arrNewIds = array(); $arrIds = explode(",", $this->_getParam('roles_list')); foreach ($arrIds as $nRoleId) { $nRoleId = trim($nRoleId); if ($nRoleId == '') { continue; } $arrNewIds[$nRoleId] = $nRoleId; if (!isset($arrExistingRoles[$nRoleId])) { // need to add a role $objUserRole = User_UserRole::Table()->createRow(); $objUserRole->ucur_user_id = $objUser->getId(); $objUserRole->ucur_role_id = $nRoleId; $objUserRole->save(false); } } // walking through existing roles, delete IDs foreach ($arrExistingRoles as $nRoleId) { if (!isset($arrNewIds[$nRoleId])) { // this role has to be deleted $objUserRole = User_UserRole::Table()->findRole($objUser->getId(), $nRoleId); if (is_object($objUserRole)) { $objUserRole->delete(); } } } $objUser->cleanCache(); $this->view->object = $objUser; } else { if ($this->_hasParam('role') && $this->_getParam('role') != '') { $strRole = $this->_getParam('role'); $objRole = User_Role::Table()->findByName($strRole); if (!is_object($objRole)) { throw new App_Exception('Invalid User Role'); } $objUser = $this->view->object; if (!$objUser->hasRole($strRole)) { $objUserRole = User_UserRole::Table()->createRow(); $objUserRole->ucur_user_id = $objUser->getId(); $objUserRole->ucur_role_id = $objRole->getId(); $objUserRole->save(false); $objUser->cleanCache(); } } } }
public function setAction() { $nUser = $this->_getParam('ucac_id', 0); $nRole = $this->_getParam('ucr_id', 0); $nEnable = $this->_getBoolParam('enable', 1); $this->_model = User_UserRole::Table(); $selectResult = $this->_model->select()->where('ucur_user_id = ?', $nUser)->where('ucur_role_id = ?', $nRole); $this->_object = $this->_model->fetchRow($selectResult); if (!is_object($this->_object)) { if ($nEnable) { $this->_object = $this->_model->createRow(); $this->_object->ucur_user_id = $nUser; $this->_object->ucur_role_id = $nRole; $this->_object->save(); } } else { if (!$nEnable) { $this->_object->delete(); $this->_object = null; } } $this->view->object = $this->_object; }
/** * @return void */ public function _delete() { if (!$this->isPredefined()) { //delete all user-roles with this role $selectRoles = User_UserRole::Table()->select()->where('ucur_role_id = ?', $this->getId()); foreach (User_UserRole::Table()->fetchAll($selectRoles) as $objUserRole) { $objUserRole->delete(); } //delete all access list for this resource $selectList = User_AccessList::Table()->select()->where('ucal_role_id = ? ', $this->getId()); foreach (User_AccessList::Table()->fetchAll($selectList) as $objAccessList) { $objAccessList->delete(); } } }
/** * @return void */ protected function _addDefaultAccounts() { $cfgDefaultAccounts = App_Application::getInstance()->getConfig()->user->list; if (is_object($cfgDefaultAccounts)) { $cfgDefaultAccount = null; $tblRole = User_Role::Table(); $tblUserRole = User_UserRole::Table(); /** @var $cfgDefaultAccount User_Account */ foreach ($cfgDefaultAccounts as $cfgDefaultAccount) { $objAccount = $this->_addDefaultAccount($cfgDefaultAccount->toArray()); if (is_object($cfgDefaultAccount->roles)) { // add roles for a user... $arrRoles = $cfgDefaultAccount->roles; foreach ($arrRoles as $strRoleName) { $objRole = $tblRole->findByName($strRoleName); if (is_object($objRole) && !is_object($tblUserRole->findRole($objAccount->getId(), $objRole->getId()))) { $objUserRole = $tblUserRole->createRow(); $objUserRole->ucur_user_id = $objAccount->getId(); $objUserRole->ucur_role_id = $objRole->getId(); $objUserRole->save(); } } } } } }
/** * @param string $strRole * @return void */ public function removeRole($strRole) { $objRole = User_Role::Table()->findByName($strRole); if (!is_object($objRole)) { throw new App_Exception('Invalid user role ' . $strRole); } $nRoleId = $objRole->getId(); $objUserRole = User_UserRole::Table()->findRole($this->getId(), $nRoleId); if (is_object($objUserRole)) { $objUserRole->delete(); $this->cleanCache(); } }
/** * * @param string $permissionName * @return array */ public function getPermission($permissionName) { if ($this->isAdmin()) { return true; } return parent::getPermission($permissionName); }