Esempio n. 1
0
 public function saveUsuarioPermisoList($con = null)
 {
     if (!$this->isValid()) {
         throw $this->getErrorSchema();
     }
     if (!isset($this->widgetSchema['usuario_permiso_list'])) {
         // somebody has unset this widget
         return;
     }
     if (is_null($con)) {
         $con = $this->getConnection();
     }
     $c = new Criteria();
     $c->add(UsuarioPermisoPeer::FK_PERMISO_ID, $this->object->getPrimaryKey());
     UsuarioPermisoPeer::doDelete($c, $con);
     $values = $this->getValue('usuario_permiso_list');
     if (is_array($values)) {
         foreach ($values as $value) {
             $obj = new UsuarioPermiso();
             $obj->setFkPermisoId($this->object->getPrimaryKey());
             $obj->setFkUsuarioId($value);
             $obj->save();
         }
     }
 }
Esempio n. 2
0
 public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME)
 {
     $keys = UsuarioPermisoPeer::getFieldNames($keyType);
     if (array_key_exists($keys[0], $arr)) {
         $this->setFkUsuarioId($arr[$keys[0]]);
     }
     if (array_key_exists($keys[1], $arr)) {
         $this->setFkPermisoId($arr[$keys[1]]);
     }
 }
Esempio n. 3
0
 /**
  * Carga las credenciales del usuario
  * en la session del usuario
  *
  * @param integer $usuario_id identificador del usuario a cargar
  * en la session
  */
 public function cargarCredenciales($usuario_id)
 {
     //limpio las credenciales actuales si las hay
     $this->clearCredentials();
     /* asigno las credenciales x rol */
     $crol = new Criteria();
     $crol->add(UsuarioRolPeer::FK_USUARIO_ID, $usuario_id);
     $roles = UsuarioRolPeer::doSelect($crol);
     $user_roles = array();
     //por cada rol los cargo y tambien busco los permisos y los asigno
     foreach ($roles as $rol) {
         $user_rol['id'] = $rol->getRol()->getId();
         $user_rol['nombre'] = $rol->getRol();
         array_push($user_roles, $user_rol);
         $this->log('obteniendo rol: ' . $rol->getRol()->getNombre());
         $permisos = $rol->getRol()->getRolPermisos();
         foreach ($permisos as $permiso) {
             $this->log(sprintf('permiso desde rol: %s', $permiso->getPermiso()));
             $this->addCredential($permiso->getPermiso()->getNombre());
         }
     }
     $this->setAttribute('roles', $user_roles);
     /* asign credenciales por usuario */
     $this->log('obteniendo permisos x usuario:');
     $cuser = new Criteria();
     $cuser->add(UsuarioPermisoPeer::FK_USUARIO_ID, $usuario_id);
     $permisos = UsuarioPermisoPeer::doSelect($cuser);
     foreach ($permisos as $permiso) {
         $this->log('permiso desde usuario: ' . $permiso->getPermiso());
         $this->addCredential($permiso->getPermiso()->getNombre());
     }
     // quitando credenciales para la demo
     if (sfConfig::get('sf_environment') == 'demo') {
         $this->log('{DEMO} quitando credenciales');
         $this->removeCredential('usuario');
         $this->removeCredential('rol');
     }
 }
Esempio n. 4
0
 /**
  * Guarda los permisos del usuario
  */
 function executeSavePermiso($request)
 {
     // borrar todo los permisos para un usuarios determinado
     $usuarioId = $this->getRequestParameter('id');
     $aPermiso = $this->getRequest()->getParameterHolder()->get('usuarioPermisos');
     $c = new Criteria();
     $c->add(UsuarioPermisoPeer::FK_USUARIO_ID, $usuarioId);
     UsuarioPermisoPeer::doDelete($c);
     if (count($aPermiso) > 0) {
         // grabar todos los que vienen seleccionados
         // aqui se debe poder grabar haciendo un solo insert
         $c = new Criteria();
         foreach ($aPermiso as $permisoId) {
             $p = new UsuarioPermiso();
             $p->setFkUsuarioId($usuarioId);
             $p->setFkPermisoId($permisoId);
             $p->save();
             unset($p);
         }
     }
     //si los permisos que se estan guardando son del
     //usuario actual refresco las credenciales para evitar el logout/login
     $this->logMessage("Comprobar si el usuario es el actual: " . $this->getUser()->getAttribute('id'), 'debug');
     if ($this->getUser()->getAttribute('id') == $usuarioId) {
         $this->logMessage("Modificando permisos del usuario actual", 'debug');
         $this->getUser()->cargarCredenciales($usuarioId);
     }
     return $this->redirect('usuario/editPermiso?id=' . $usuarioId);
 }
Esempio n. 5
0
 public function getUsuarioPermisosJoinPermiso($criteria = null, $con = null, $join_behavior = Criteria::LEFT_JOIN)
 {
     if ($criteria === null) {
         $criteria = new Criteria(UsuarioPeer::DATABASE_NAME);
     } elseif ($criteria instanceof Criteria) {
         $criteria = clone $criteria;
     }
     if ($this->collUsuarioPermisos === null) {
         if ($this->isNew()) {
             $this->collUsuarioPermisos = array();
         } else {
             $criteria->add(UsuarioPermisoPeer::FK_USUARIO_ID, $this->id);
             $this->collUsuarioPermisos = UsuarioPermisoPeer::doSelectJoinPermiso($criteria, $con, $join_behavior);
         }
     } else {
         $criteria->add(UsuarioPermisoPeer::FK_USUARIO_ID, $this->id);
         if (!isset($this->lastUsuarioPermisoCriteria) || !$this->lastUsuarioPermisoCriteria->equals($criteria)) {
             $this->collUsuarioPermisos = UsuarioPermisoPeer::doSelectJoinPermiso($criteria, $con, $join_behavior);
         }
     }
     $this->lastUsuarioPermisoCriteria = $criteria;
     return $this->collUsuarioPermisos;
 }
Esempio n. 6
0
 public static function retrieveByPK($fk_usuario_id, $fk_permiso_id, PropelPDO $con = null)
 {
     $key = serialize(array((string) $fk_usuario_id, (string) $fk_permiso_id));
     if (null !== ($obj = UsuarioPermisoPeer::getInstanceFromPool($key))) {
         return $obj;
     }
     if ($con === null) {
         $con = Propel::getConnection(UsuarioPermisoPeer::DATABASE_NAME, Propel::CONNECTION_READ);
     }
     $criteria = new Criteria(UsuarioPermisoPeer::DATABASE_NAME);
     $criteria->add(UsuarioPermisoPeer::FK_USUARIO_ID, $fk_usuario_id);
     $criteria->add(UsuarioPermisoPeer::FK_PERMISO_ID, $fk_permiso_id);
     $v = UsuarioPermisoPeer::doSelect($criteria, $con);
     return !empty($v) ? $v[0] : null;
 }
Esempio n. 7
0
 public static function doDelete($values, PropelPDO $con = null)
 {
     if ($con === null) {
         $con = Propel::getConnection(PermisoPeer::DATABASE_NAME, Propel::CONNECTION_WRITE);
     }
     if ($values instanceof Criteria) {
         PermisoPeer::clearInstancePool();
         $criteria = clone $values;
     } elseif ($values instanceof Permiso) {
         PermisoPeer::removeInstanceFromPool($values);
         $criteria = $values->buildPkeyCriteria();
     } else {
         $criteria = new Criteria(self::DATABASE_NAME);
         $criteria->add(PermisoPeer::ID, (array) $values, Criteria::IN);
         foreach ((array) $values as $singleval) {
             PermisoPeer::removeInstanceFromPool($singleval);
         }
     }
     $criteria->setDbName(self::DATABASE_NAME);
     $affectedRows = 0;
     try {
         $con->beginTransaction();
         $affectedRows += BasePeer::doDelete($criteria, $con);
         UsuarioPermisoPeer::clearInstancePool();
         $con->commit();
         return $affectedRows;
     } catch (PropelException $e) {
         $con->rollBack();
         throw $e;
     }
 }