Qué es Gulcas?
La lista de correo
Normas de uso
Fotos
Wiki
Hackit
Autenticación mediawiki contra Drupal
Por ejemplo, aquí en el portal de Gulcas (CMS Drupal) cualquiera puede escribir una noticia o entrada de blog si ha sido autenticado previamente, también disponemos de un wiki donde se sigue la misma política, cualquiera puede editar si ha sido previamente autenticado.
Como esta no es la forma natural de operar del wiki (mediawiki) en el 2005 parchee mediawiki para que usara la autenticación de Drupal para autenticar contra mediawiki y evitar que el usuario tenga que loggear otra vez.
De este modo si intentamos acceder al wiki sin estar autenticados, aparece:

Entonces, loggeamos en Drupal y automáticamente al acceder al wiki somos autenticados en mediawiki usando los mismos credenciales que tenemos en el portal (Drupal):

De esta manera solo los usuarios autenticados pueden escribir y modificar datos.
Para ello, hay que parchear el index.php que trae mediawiki, en este caso yo use la versión 1.13.2 de la siguiente manera:
--- index.php 2008-11-10 14:19:44.000000000 +0100
+++ index.php.bak 2008-11-10 00:20:15.000000000 +0100
@@ -34,12 +34,6 @@
* http://www.gnu.org/copyleft/gpl.html
*/
-# Incluimos script con la autenticacion drupal -> mediawiki
-require "autenticaVSdrupal.php";
-
-if (!esta_autenticado_drupal()) {
- exit;
-}
# Initialise common code
$preIP = dirname( __FILE__ );
@@ -96,9 +90,6 @@
$mediaWiki->setVal( 'UseExternalEditor', $wgUseExternalEditor );
$mediaWiki->setVal( 'UsePathInfo', $wgUsePathInfo );
-# Comprobamos si ese usuario Drupal ya existe y lo creamos,
-# o simplemente cargamos sus datos:
-checkDrupalUser();
$mediaWiki->initialize( $wgTitle, $wgArticle, $wgOut, $wgUser, $wgRequest );
$mediaWiki->finalCleanup ( $wgDeferredUpdateList, $wgOut );
Y añadir este nuevo fichero (autenticaVSdrupal.php) en la raiz de mediawiki:
<?php
#
# Drupal-MediaWiki authentication link
#
# jack Oct, 2005.
# jack /at/ gulcas.org
#
# Changelog:
# Modified on 10.Nov.08: Changed cookie's name and
# adapted to new mediawiki version 1.13.
#
/**************************************************************************
* First of all we check if that user is already succesfully log into Drupal
* if it is not, we send that user to the log in webpage, else let's gooo
**************************************************************************/
function esta_autenticado_drupal() {
global $NombreUsuario, $uid;
if (!isset($_COOKIE)) {
// Forwards the unauthorized user to log in webpage.
header('Location: http://XXXXXXXXX');
return false;
}
else {
$cookie_key= array_values($_COOKIE);
$cookie_value= $cookie_key[0];
// Credentials to access into drupal database:
$link= mysql_connect("XXXXX", "XXXXXX", "XXXXX") or exit;
// Drupal database:
mysql_select_db("XXXXX");
$query_uid= "SELECT uid FROM sessions WHERE sid='".$cookie_value."'";
$result= mysql_query($query_uid);
$res= mysql_fetch_row($result);
$uid= $res[0];
//echo "UID: $uid";
//echo "Cookie: $cookie_value";
mysql_free_result($result);
if ($uid == 0) {
mysql_close($link);
// Forwards the unauthorized user to log in webpage.
header('Location: http://XXXXXXXXX');
return false;
}
$query_name= "SELECT name FROM users WHERE uid='".$uid."'";
$result= mysql_query($query_name);
$res= mysql_fetch_row($result);
$NombreUsuario= $res[0];
mysql_free_result($result);
mysql_close($link);
return true;
}
}
/***********************************************************************
* Now we check if that drupal authenticated user exists in mediawiki
* database (he/she has already log in before in mediawiki), when not the
* new mediawiki user is created and stored into the database, else
* his/her data is loaded into this session.
***********************************************************************/
function checkDrupalUser() {
global $uid,$NombreUsuario;
$wgUser= User::newFromName($NombreUsuario);
// Does this user exist?
$sql = "SELECT * FROM user WHERE user_name='".$wgUser->getName()."'";
$db = wfGetDB( DB_SLAVE );
$res = $db->query( $sql );
if ( $db->numRows( $res ) > 0 ) {
$row= $db->fetchObject( $res );
$id= $row->user_id;
$wgUser->setId( $id ); // Compulsory set the UID, else anon user
$wgUser->loadFromDatabase();
} else {
$wgUser->setId( $uid );
$wgUser->addToDatabase();
}
$wgUser->setCookies();
$wgUser->saveSettings();
$db->freeResult( $res );
}
?>
Enjoy ;-)
- blog de jack
- Inicie sesión o regístrese para enviar comentarios


He tenido problemas con mi
He tenido problemas con mi ordenador y me pass4sure 642-456 vi en la tarea de instalar de nuevo el sistema (Slackware) en otro ordenador, al menos temporalmente. Una vez instalado me di pass4sure CISA cuenta de que no estaba cómodo en mi consola, así que me puse manos a la obra.Yo siempre he usado aterm, pero esta vez me he decidido a usar rxvt, que es en esencia lo mismo, salvo transparencias y alguna cosa más que no uso.He tenido problemas con mi ordenador y me vi en la tarea de pass4sure 642-262 instalar de nuevo el sistema (Slackware) en otro ordenador, al menos temporalmente. Una vez instalado me di cuenta de que no estaba cómodo en mi consola, así que me puse manos a la obra.Yo siempre he usado aterm, pero esta vez me he decidido a usar rxvt, que es en esencia lo mismo, salvo pass4sure 642-357 transparencias y alguna cosa más que no uso.
he La Portada Natural
he La Portada Natural Monument covers an area of 31.27 hectares (77.27 acres), and its geomorphological features and remaining fossils stand out in the form of an arch.
The arch of La Portada is 43 m (140 ft) high, 23 m (75 ft) wide, and 70 m (230 ft) long. It has a base of black andesite stone, around which are arranged marine sedimentary rocks, a strata of yellowing sandstone, and layers of the remaining fossils of shells dating back 35 to 2 million years ago. All this was formed during Promotional Items a long process of marine erosion.
The arch is surrounded by coastal cliffs that were also formed by marine erosion. They reach a maximum height of 52 m above sea level.
On 5 October 1990, it was declared a natural monument under Supreme Decree #51 of the Ministry of Agriculture, published in the Diario Oficial.
Since March 2003, this natural monument remains closed due to a landslide of an important part of its cliffs, which blocked access to its beach. For this reason, a remodeling of the access route and its surroundings is planned.
Ya hacía tiempo que quería
Ya hacía tiempo que quería leer un poco MCITP 70-642 Tutorials
sobre este tema, para saber si los antiguos iBook 100% PowerPC, 100% Big Endian también llevaban preparado algun tipo de soporte para eso que llaman "Trusted Computing", 642-524 Labs Books
tranquilidad en el frente, parece que no.A continuación, resumo lo que he leido, si alguien ve algún dato erróneo o alguna novedad que responda a este post.Desde mediados del 2005 Cisco 642-982 Dumps, Apple vende los nuevos iMacs/MacBooks con procesador Intel, además llevan el chip de Infineon para "Trusted Computing", la gran duda es si este chip ya está activado o no.VCP-410 Braindumps
Solucionado error de actualización
Hola a todos,
Comprobé que este parche daba un error bastante extraño al intentar acceder al wiki con un usuario registrado desde gulcas. El problema estaba en parte en que esta versión del wiki no registra las variables globales, al menos eso es lo que he entendido. La solución pasa por reescribir la función checkDrupalUser(). Lo demas no hace falta tocarlo.
function checkDrupalUser() { global $uid,$NombreUsuario, $wgUser; $userid = User::idFromName($NombreUsuario); if($userid!=null){ $u=User::newFromid($userid); $u->setId($userid); $u->loadFromId(); } else { $u=User::newFromName($Nombreusuario); $u->setId($uid); $u->addToDatabase(); } $wgUser=$u; $wgUser->setToken(true); $wgUser->saveSettings(); }Un saludo