示例#1
0
 /** Retorna true si el usuario pasado como parametro tiene permiso para la accion
  *  pasada como parametro en la perspectiva pasada como parametro
  * */
 public static function isAllowed($action, $perspective = NO_OBJECT, $user = NO_OBJECT)
 {
     global $ari;
     if (!is_a($action, 'seguridad_action')) {
         $action = new seguridad_action($action);
     }
     if (!is_a($perspective, 'OOB_perspective')) {
         $perspective = $ari->get('perspective');
     }
     //obtengo el modulo de la accion
     if ($module = $action->myModule()) {
         /* verfico que la perspectiva tenga el módulo o estemos en el administrador */
         if ($perspective->isMember($module) || $ari->get("mode") == "admin") {
             // la perspectiva contiene el modulo
             /* verifico que el usuario tenga permiso para esa accion */
             if (!is_a($user, "oob_user")) {
                 $user = $ari->get("user");
             }
             //@verificar cuando my roles devuelve false
             if (seguridad_action::exists($action, seguridad_role::myRoles($user))) {
                 //tiene permiso
                 $return = true;
             } else {
                 //no tiene permiso
                 $return = false;
             }
         } else {
             // error el modulo no pertence a la perspectiva
             $return = false;
         }
     } else {
         // error la accion no pertenece a ningun modulo
         $return = false;
     }
     return $return;
 }
示例#2
0
 /**	*/
 public function addAction($action)
 {
     global $ari;
     if (is_a($action, 'seguridad_action')) {
         if (seguridad_action::exists($action, $this)) {
             return true;
         } else {
             //falta validar si existe el módulo
             $ari->db->StartTrans();
             $action_id = $ari->db->qMagic($action->get('action'));
             $role_id = $ari->db->qMagic($this->role);
             $sql = "INSERT INTO security_actionsrole \n\t\t\t\t\t  (ActionID, RoleID)\n\t\t\t\t\t   VALUES ({$action_id}, {$role_id} )";
             $ari->db->Execute($sql);
             if (!$ari->db->CompleteTrans()) {
                 throw new OOB_exception("Error en DB: {$ari->db->ErrorMsg()}", "010", "Error en la Base de Datos", false);
                 //return false;
             } else {
                 return true;
             }
         }
     } else {
         $ari->error->addError("seguridad_role", "INVALID_ACTION");
         return false;
     }
 }
示例#3
0
            foreach ($permisos as $p) {
                $permiso = array();
                $permiso['leaf'] = false;
                $permiso['expanded'] = true;
                $permiso['id'] = "p_" . $p->get("permission");
                $permiso['text'] = $p->get("nicename");
                $permiso['children'] = array();
                $permiso['iconCls'] = 'Clspermiso';
                if ($acciones = seguridad_action::listActionsFor($p, ALL_MENU)) {
                    foreach ($acciones as $a) {
                        $accion = array();
                        $accion['leaf'] = true;
                        $accion['id'] = "a_" . $a->get("action");
                        $accion['text'] = $a->get("nicename");
                        $accion['iconCls'] = 'Clsaccion';
                        if (seguridad_action::exists($a, $role)) {
                            $accion['checked'] = true;
                        } else {
                            $accion['checked'] = false;
                        }
                        $permiso['children'][] = $accion;
                    }
                }
                $padre['children'][] = $permiso;
            }
        }
        $modulos[] = $padre;
    }
}
//RESULTADO
$obj_comunication = new OOB_ext_comunication();