Extender la duración del enlace ‘one time login’ en Drupal 7

Standard

d7-contributor-cloud-huge2

Visto y considerando que no dispongo de tiempo para realizar un entrada elaborada, les traigo un Tip en Drupal 7 cortito y al pie.

Cuando desde el administrador creamos una cuenta en un CMS como Drupal 7, el sistema envia un email con un link ([user:one-time-login-url]) para que este usuario ingrese y cambie su password, este enlace sirve para solo una vez por 24 horas.

Para extender (o acortar) este duración solo es necesario agregar una linea de configuración en nuestro setting.php. Al final de la linea agregamos:

$conf['user_password_reset_timeout'] = '604800'; 

Siendo 604800 (7 dias) los segundos que determinan la duracion del link one-time-login-url.

Saludos…

Google convoca becas para proyectos de Software Libre

Standard

920x156xbanner-gsoc2014.png.pagespeed.ic.gdr4t3Igca

Hasta el día 21 de marzo pueden presentarse los estudiantes universitarios mayores de 18 años de edad que quieran desarrollar un proyecto de software libre. La convocatoria también está abierta a mentores.

Google ha abierto una nueva edición de su programa Google Summer of Code, que este año se convoca bajo el lema ‘Flip bits not burgers’, a través del que se conceden becas a estudiantes para que puedan desarrollar proyectos de software libre, aunque la convocatoria también esta abierta a mentores para que ayuden en estas iniciativas.

La convocatoria, cuyo plazo de inscripción está abierto hasta el próximo día 21 de marzo, contempla la concesión de becas de 5.500 dólares para el desarrollo de estos proyectos de software libre y para aquellos estudiantes que completen el programa exitosamente, que se desarrollará durante el verano.

Para optar a estas becas –que en esta edición aceptarán un 10% más de participantes, seleccionándose a alrededor de 2.000 alumnos de casi todo el mundo-, los estudiantes tienen que ser universitarios y estar matriculados en una universidad, exigiéndose también que sean mayores de 18 años. Además, tienen que estar interesados en desarrollar una carrera en ingeniería del software. Por su parte, los mentores que quieran participar en la iniciativa tan sólo deberán inscribirse y ser aceptados por los participantes.

Los jóvenes interesados tienen que proponer un proyecto de software libre que deberá ser aceptado por un mentor –hay más de 200 organizaciones en estos momentos aunque se espera incrementarlas en un 10%-, tras lo que se comunicará su aceptación y comenzarán a trabajar con ellos para su desarrollo. Al final de todo el proceso, se hará una evaluación.

La formalización de la inscripción tanto de estudiantes como de mentores se realiza a través de la webde Google Summer of Code, siendo necesario disponer de una cuenta de Google para realizar el proceso.

Más información:

Google Summer of Code

[PHP] Instalando FOSUserBundle en Symfony2

Standard

Instalando FOSUserBundle en Symfony2

Muchas veces es necesario en nuestro sistema, codificar todo lo que respecta a la administración de usuarios: perfiles, roles, grupos, recuperación de email, registro de usuarios, encriptación de password, etc.

Esto como muchas cosas en un sistema web, ya esta codificado y re codificado varias veces por el mundo, por lo que no es necesario “reinventar la rueda” para hacer andar nuestro sistema.

En Symfony2, es ahí donde entra FOSUserBundle que ademas de ofrecernos las características anteriores, sabemos que de por si posee las mejores practicas en programación y seguridad gracias a la comunidad FriendOfSymfony

Instalación

Para instalar el bundle como muchos otros, tenemos que agregar la siguiente linea en nuestro archivo compose.json dentro de la clausula “require”.

"doctrine/doctrine-fixtures-bundle": "dev-master"

Desde la consola actualizamos solamente este bundle (por lo tanto se instalará al no existir):

php composer.phar update friendsofsymfony/user-bundle

FOSUser Bundle - Zarpele 01

Listo ya tenemos el código descargado, ahora solo debemos agregarlo al Kernel de nuestro proyecto en el archivo AppKernel.php en la carpeta app.

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new FOS\UserBundle\FOSUserBundle(),
    );
}

Ahora creamos la entidad…

<?php
namespace Watchdev\MiBundleBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="usuario")
 */
class Usuario extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    public function __construct()
    {
        parent::__construct();
        // your own logic
    }
}

Como pueden ver esta entidad extiende de la clase BaseUser importada lineas atrás.

Ahora es hora de configurar el archivo security.yml por lo que se debería ver semejante a este:

# app/config/security.yml
security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN]

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
            logout:       true
            anonymous:    true

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, role: ROLE_ADMIN }

Agregamos parámetros de configuración dentro del archivo config.yml

fos_user:
    db_driver: orm
    firewall_name: main
    user_class: Watchdev\MiBundleBundle\Entity\User
    use_listener: true

Importamos los routing del FOSUserBundle a nuestro sistema en el archivo routing.yml de la carpeta app

# app/config/routing.yml
fos_user_security:
    resource: "@FOSUserBundle/Resources/config/routing/security.xml"

fos_user_profile:
    resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
    prefix: /profile

fos_user_register:
    resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
    prefix: /register

fos_user_resetting:
    resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
    prefix: /resetting

fos_user_change_password:
    resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
    prefix: /profile

Como ultimo paso, nos queda actualizar nuestro schema con el siguiente comando:

php app/console doctrine:schema:update --force

Esto generará estos campos…

FOSUser Bundle - Zarpele 02

Listo, ya tenemos instalado y funcionando el bundle. En la próxima entrega veremos como integrarlos a nuestros templates…

Puedes seguir las publicaciones de Symfony2 a través de esta pagina.

Saludos…

[Drupal 7] Reinstalar módulo y actualizar nuestro schema

Standard

cc http://www.whenwhowhere.com/tech-blog/tools-developing-drupal-7 Muchas veces desarrollando nuestro módulo en Drupal 7 tenemos que actualizar el mismo para poder ejecutar los hooks hook_schema(), hook_install(), hook_uninstall().

Para no eliminar el modulo de la carpeta de modulos, limpiar el cache, volver a instalarlo (tarea mas que tediosa), y aun no estamos seguro de que se ejecuten los hook antes mencionado vamos a instalar Devel.

El módulo Devel es imprescindible para desarrollar con Drupal, proporciona un amplio abanico de herramientas que facilitan la labor de programación y también utilidades de administración, como generar contenido aleatorio o reinstalar módulos.

Para instalarlo deben bajarse el módulo y subirlo vía FTP a /sites/all/modules ir a la pagina de módulos y habilitarlo. Como alternativa les dejo una forma mas elegante por consola utilizando drush

drush dl devel
drush en -y devel

Nos dirigimos a http://[nuestro_drupal_7]/devel/reinstall seleccionamos los módulos a reinstalar y voilá tenemos los módulos reinstalados correctamente.

Tener en cuenta que al ejecutar esto se settean por defecto las variables y se eliminan los datos de la base de datos que corresponden al schema del modulo reinstalado.

Saludos…

Ministerio de Ciencia y Tecnología argentino lanza el primer hackatón de programación

Standard

hackaton1-960x623

Tendrá como objetivo desarrollar proyectos para el Portal Nacional de Datos Públicos.

El gobierno argentino lanzó la primera maratón de programación organizada por un organismo del estado nacional, con el desafío de lograr implementar aplicaciones y visualizaciones de información para el futuro Portal Nacional de Datos Públicos, que será estrenado luego de este hackatón.

Organizado por la Jefatura de Gabinete de Ministros y el Ministerio de Ciencia y Tecnología, ProgramAR será el primer hackatón de datos públicos a nivel nacional, ya que la Ciudad de Buenos Aires ya realizó uno en 2012 y su segunda edición en mayo pasado.

El objetivo de ProgramAr será desarrolloar aplicaciones y visualizaciones basadas en la información del Portal Nacional de Datos Públicos (PDP) y está destinado a programadores, analistas de datos, periodistas y especialistas en información gubernamental.

La fecha prevista del 3 de agosto para la jornada de programación obligó a pasar para el 9 de agosto el lanzamiento del PDP, que se realizará en las instalaciones del Polo Científico y Tecnológico del MinCyT, ubicado en Godoy Cruz 2330, de la Ciudad de Buenos Aires.

Parte del equipo organizador del hackatón se entusiasmó con el proyecto y aseguraron, en una entrevista a la agencia Telam, que “es la primera vez que va a haber tantos datos juntos, y no será necesario realizar un escrap ya que mucha de la información que se utilizará no está ubicada en ningún lado aún”.

FayerWayer

Instalando Zend Framework 1.x desde cero

Standard

Hoy les traigo un pequeño tuto para instalar Zend Framework 1.x desde cero, mas adelante les traere una guia para hacerlo con la version 2 que por lo que estoy viendo esta que promete.

  1. Descargando Zend Framework
    Lo Primero que vamos a hacer es descargar el comprimido desde la web oficial. En este momento la ultima version estable es la 1.12.0 que es con la que trabajaremos, puede ver las ultimas versiones aquí. En nuestra carpeta personal descargamos el .tar.gz

    wget http://packages.zendframework.com/releases/ZendFramework-1.12.0/ZendFramework-1.12.0.tar.gz
  2. Descomprimimos…
    tar -xzvf ZendFramework-1.12.0.zip.tar.gz
  3. Renombramos a un nombre mas estandar…
    mv ZendFramework-1.12.0 ZendFramework
  4. Copiamos todo a /usr/local
    sudo cp -R ZendFramework /usr/local
  5. Le damos los permisos necesarios…
    cd /usr/local
    sudo chmod 0755 ZendFramework
    sudo chmod -R 0755 ZendFramework/*
  6. Creamos un enlaze simbolico para el zf tool
    sudo ln -s /usr/local/ZendFramework/bin/zf.sh /usr/bin/zf
  7. Probamos nuestro zf tool
    zf show version

    Y si todo sale bien obtendremos ‘Zend Framework Version: 1.12.0

  8. Agregamos la libreria a nuestro sistema
    cd /etc/php5/apache2/
    sudo nano php.ini

    Buscamos esta linea

    ;include_path = ".:/usr/share/php";

    Y la sustituimos por la siguiente linea (notese que no esta el punto y coma inicial que indica un comentario)

    include_path = ".:/usr/share/php:/usr/local/ZendFramework/library"
  9. Creamos nuestro proyecto ‘zarpele
    zf create project zarpele
    Creating project at /var/www/framework/zarpele
    Note: This command created a web project, for more information setting up your VHOST, please see docs/README

Listo solo tienen que crear un vhost apuntando a la carpeta public, aqui les dejo un tutorial de mi autoria para crear vhosts de hace algunos años pero valido al fin.

Saludos…