Example #1
0
 /**	Sincroniza las tablas de acciones
  */
 public static function synchronizeActions($arrayModules = false)
 {
     global $ari;
     $clause = "";
     if ($arrayModules) {
         if (!is_array($arrayModules)) {
             //es un solo modulo
             $moduleName = $ari->db->qMagic($arrayModules);
             $clause = " AND p_origen.modulename = {$moduleName} ";
         } else {
             //es un array con los nombres de los modulos de los permisos a sincronizar
             $first = true;
             $lista = false;
             foreach ($arrayModules as $moduleName) {
                 $moduleName = $ari->db->qMagic($moduleName);
                 if ($first) {
                     $lista = $moduleName;
                     $first = false;
                 } else {
                     $lista = $lista . "," . $moduleName;
                 }
             }
             if ($lista) {
                 $clause = " AND p_origen.modulename IN ({$lista}) ";
             }
         }
     }
     //security_permission:  ID, ModuleName, Name, NiceName
     //security_action: 		ID, PermissionID, Name, NiceName, inMenu
     $sql = "SELECT a_origen.Name AS aName, a_origen.NiceName AS aNiceName, a_origen.inMenu AS aInMenu,\n\t\t\t\t\t   p_origen.Name AS pName, p_origen.ModuleName AS pModuleName \n\t\t\t\tFROM security_permission_other p_origen, security_action_other a_origen\n\t\t\t\tWHERE p_origen.ID = a_origen.PermissionID\n\t\t\t\t{$clause}\n\t\t\t\tAND NOT EXISTS\n\t\t\t\t\t\t\t\t(\tSELECT 1\n\t\t\t\t\t\t\t\t\tFROM security_permission p_destino, security_action a_destino\n\t\t\t\t\t\t\t\t\tWHERE p_destino.ID = a_destino.PermissionID\n\t\t\t\t\t\t\t\t\tAND p_destino.name = p_origen.name \n\t\t\t\t\t\t\t\t\tAND p_destino.modulename = p_origen.modulename\n\t\t\t\t\t\t\t\t\tAND a_destino.name = a_origen.name\n\t\t\t\t\t\t\t\t)\n\t\t\t\t";
     //echo $sql;
     //exit;
     $savem = $ari->db->SetFetchMode(ADODB_FETCH_ASSOC);
     $rs = $ari->db->Execute($sql);
     $ari->db->SetFetchMode($savem);
     if ($rs && !$rs->EOF) {
         while (!$rs->EOF) {
             $permission = self::nameConstructor($rs->fields["pName"], $rs->fields["pModuleName"]);
             //var_dump();exit;
             $action = new seguridad_action(ID_UNDEFINED);
             $action->set('name', $rs->fields["aName"]);
             $action->set('nicename', $rs->fields["aNiceName"]);
             $action->set('inmenu', $rs->fields["aInMenu"]);
             $action->set('permission', $permission);
             $action->store();
             $rs->MoveNext();
         }
         //end while
         $rs->Close();
     }
 }
Example #2
0
 /** Devuelve la accion ($accion), 
  * perteneciente al permiso ($permission) 
  * del modulo ($module) */
 public static function nameConstructor($action, $permission, $module)
 {
     global $ari;
     $action = $ari->db->qMagic($action);
     $permission = $ari->db->qMagic($permission);
     $module = $ari->db->qMagic($module);
     $savem = $ari->db->SetFetchMode(ADODB_FETCH_ASSOC);
     //		$ari->db->SetFetchMode($savem);
     $sql = "SELECT A.ID, A.PermissionID, A.Name, A.NiceName, A.InMenu \n \t\t       FROM Security_Action A, Security_Permission P \n        \t   WHERE A.PermissionID = P.ID \n\t\t\t   AND A.Name = {$action}         \t  \n               AND P.Name = {$permission} \n\t\t\t   AND P.ModuleName = {$module}";
     //		$rs = $ari->db->Execute( $sql);
     $rs = $ari->db->CacheExecute(SQL_CACHE, $sql);
     $ari->db->SetFetchMode($savem);
     if (!$rs->EOF) {
         $action = new seguridad_action(ID_UNDEFINED);
         $action->set('action', $rs->fields["ID"]);
         $action->set('name', $rs->fields["Name"]);
         $action->set('nicename', $rs->fields["NiceName"]);
         $action->set('inmenu', $rs->fields["InMenu"]);
         $permiso = new seguridad_permission($rs->fields['PermissionID']);
         $action->set('permission', $permiso);
     } else {
         var_export($action, true);
         var_export($permission, true);
         var_export($module, true);
         throw new OOB_exception("Invalid action: A: " . var_export($action, true) . ',P: ' . var_export($permission, true) . ',M: ' . var_export($module, true), "403", "Invalid Action", true);
     }
     return $action;
 }
Example #3
0
    $array_values['modules'] = $modules;
    refrescar($array_values);
} else {
    $storeOk = true;
    //verificar datos enviados duplicados
    if (!$sp->Validar()) {
        $ari->error->addError('seguridad_action', 'SENT_DUPLICATE_DATA');
    }
    if (!isset($_POST['modulo'])) {
        $storeOk = false;
        $ari->error->addError("seguridad_action", "NO_ACTION");
    } else {
        for ($i = 0; $i < count($_POST['modulo']); $i++) {
            $accion = new seguridad_action();
            if (isset($_POST['accion'][$i])) {
                $accion->set('name', $_POST['accion'][$i]);
            }
            if (isset($_POST['nicename'][$i])) {
                $accion->set('nicename', $_POST['nicename'][$i]);
            }
            if (isset($_POST['permiso'][$i])) {
                $permiso = new seguridad_permission($_POST['permiso'][$i]);
                $accion->set('permission', $permiso);
            }
            if (isset($_POST['inmenu'][$i])) {
                $accion->set('inmenu', $_POST['inmenu'][$i]);
            }
            if (!$accion->store()) {
                $storeOk = false;
            }
        }