Monthly Archives: January 2011

Configuración de Tank Auth

(English version)

NOTA:  Las siguientes instrucciones han sido probadas sin problemas con  CodeIgniter 2.1.0 y TankAuth 1.0.9.  Solo hay un cambio adicional en el archivo config.php (CI), el cual esta relacionado con el nuevo parametro de  ‘encryption_key’.

Tank Auth es una librería de autenticación basada en DX Auth y desarrollada para el framework de CodeIgniter. El siguiente documento muestra los pasos para su instalación a través de un ejemplo básico.

Las siguientes aplicaciones y librerías son utilizadas:

  • Ubuntu 10.04
  • PHP 5.2
  • MySQL 5.1
  • Eclipse Galileo (3.5) con PHP Development Tools (PDT).
  • CodeIgniter 1.7.3
  • TankAuth 1.0.7

1. Creación Del Proyecto

El primer paso consiste en la creación de un proyecto PHP, mediante la opción FILE → NEW → PHP PROJECT de Eclipse. En este caso se utiliza como nombre de proyecto TankAuthLogin y se dejan las opciones predeterminadas:

* El proyecto se crea dentro del directorio /var/www/phpsites, mismo que fue configurado para guardar los sitios Web (estos son accesibles a través de la url: http://localhost/phpsites)

2. Integración de CodeIngiter y TankAuth

Una vez creado el proyecto, es necesario descargar las librerías de CodeIgniter (CI) y TankAuth. El archivo ZIP de CodeIgniter contiene las carpetas SYSTEM, USER_GUIDE y el archivo INDEX.PHP. La carpeta de SYSTEM y el archivo INDEX.PHP deben ser copiados dentro del proyecto TankAuthLogin. Para incluir la libreria TankAuth al proyecto, se siguen estos pasos:

  • Copiar el contenido de la carpeta APPLICATION dentro de la carpeta APPLICATION de CI.
  • Copiar la carpeta de CAPTCHA a la carpeta de CI.
  • Actualizar la base de datos con las tablas de TankAuth (descrito mas adelante).
  • Abrir el archivo APPLICATION/CONFIG/CONFIG.PHP y modificar la variable $config[‘sess_use_database’] con el valor TRUE.

Al final, se obtiene una estructura como la siguiente:

3. Creación de las tablas de TankAuth

TankAuth incluye el archivo SCHEMA.SQL, que contiene las queries para la creación de las tablas necesarias. Para ejecutarlo se puede utilizar cualquier Administrador de base de datos, en este caso, se utiliza MySQL Query Browser y las tablas son creadas bajo el esquema TankAuth. Una vez ejecutado el archivo, se genera la siguiente estructura:

4. Configuración de TankAuth

Hasta el momento, tenemos todos los archivos necesarios para nuestra aplicación, pero esta aun no es funcional. Si tratamos de acceder a nuestro sitio Web obtendremos un error como el siguiente:

Para tener un sitio funcional, se deben de hacer las siguientes modificaciones a los archivos de CI y TankAuth:

  • Modificar la variable base_url del archivo APPLICATION/CONFIG/CONFIG.PHP:
  • Modificar la variable plugin del archivo APPLICATION/CONFIG/AUTOLOAD.PHP (esto aplica solo si se quiere trabajar con CAPTCHAs):
    • $autoload[‘plugin’] = array(‘captcha’);
  • Modificar las siguientes variables del archivo APPLICATION/CONFIG/DATABASE.PHP:
    • $db[‘default’][‘hostname’] = “localhost”; (IP de la base de datos)
    • $db[‘default’][‘username’] = “dbuser”; (USUARIO de la base de datos)
    • $db[‘default’][‘password’] = “userpass”; (CONTRASEÑA)
    • $db[‘default’][‘database’] = “TankAuth”; (Nombre de la base de datos, en este caso es TankAuth)
    • $db[‘default’][‘dbdriver’] = “mysql”;
    • $db[‘default’][‘dbprefix’] = “”;
    • $db[‘default’][‘pconnect’] = TRUE;
    • $db[‘default’][‘db_debug’] = TRUE;
    • $db[‘default’][‘cache_on’] = FALSE;
    • $db[‘default’][‘cachedir’] = “”;
    • $db[‘default’][‘char_set’] = “utf8”;
    • $db[‘default’][‘dbcollat’] = “utf8_general_ci”;

Después de hacer estos cambios y actualizar la pagina del sitio, veremos al siguiente forma:


NOTA: A diferencia de DX Auth, TankAuth no crea un usuario determinado. Por lo tanto, es necesario crear un usuario por nuestra cuenta. Pero antes de hacer esto, se requiere configurar la opción de CAPTCHA (Si es que fue agregado a la lista de plugins) y el envío de correo electrónico. Este ultimo paso es necesario, ya que TankAuth manda por email un link de activación al usuario creado. De igual forma, esta funcionalidad es útil para la opción de “Forgot password”.

5. Configuración del CAPTCHA

Hasta el momento, si se accede a la pagina de “registrar usuarios” veremos la siguiente información:

Como vemos, esta forma no muestra la imagen CAPTCHA. Para solucionar esto, se deben cambiar los permisos de la carpeta CAPTCHA encontrada dentro de nuestro proyecto. Esto se debe a que el usuario www requiere permisos para escribir la imagen captcha.

Si se esta usando Linux, esto se hace ejecutando el siguiente comando en una ventana de terminal:

sudo chmod -R 777 www_path/TankAuthLogin/captcha

* No se recomienda utilizar este tipo de permiso (777). En este ejemplo solo se usa para simplificar el proceso de configuración.


Si volvemos a cargar la pagina, obtendremos el siguiente resultado:


6. Configuración del correo electrónico

El ultimo paso consiste en la configuración del correo electrónico. Esta funcionalidad es requerida al momento de registrar un usuario, ya que la activación será enviada a la dirección de correo electrónico registrada. Para esto, se modifica el archivo APPLICATION/CONFIG/EMAIL.PHP de la siguiente manera:

$config[‘protocol’]=‘smtp’;

$config[‘smtp_host’]=‘ssl://smtp.googlemail.com’; (SMTP DEL SERVIDOR DE CORREO)

$config[‘smtp_port’]=‘465’; (PUERTO DEL SMTP)

$config[‘smtp_timeout’]=’30’;

$config[‘smtp_user’]=‘googleuser’; (USUARIO@gmail.com)

$config[‘smtp_pass’]=‘userpass’; (CONTRASEÑA)

$config[‘charset’]=‘utf-8’;

$config[‘newline’]=“\r\n”;

En este caso se esta utilizando la configuración para utilizar el servicio de GMAIL, sin embargo puede ser modificado para utilizar cualquier otro proveedor.

7. Registro de usuarios

Una vez llenados los campos correspondientes al registro de usuarios, la aplicación nos regresara la siguiente pagina:


El usuario recibirá el correo de confirmación, mismo que contiene una liga de activación:


Una vez activado, el usuario podrá autenticarse de manera satisfactoria:

Hi, userlogin! You are logged in now. Logout