Preinscripcion 3.4 - Significado de columnas

Gente:

En la tabla sga_preinscripcion hay 3 columnas: clave, codigo_validacion, email_valido.

La de clave es obvio, es la clave encriptada de registración. La columna email_valido puede tener NULL o un timestamp. Cuando el que se va a preinscribir confirma su mail con el link del correo enviado esta columna pasa de NULL a un valor con el momento de confirmación.

La duda es para que sirve y que es la columna codigo_validacion. Por lo que se puede ver o parece, tiene un valor encriptado distinto de NULL mientras no se haya confirmado el mail, es decir es distinto de NULL cuando email_valido es NULL y parece estar en NULL cuando se ha confirmado el mail.

Alguine me podrá decir que es esa columna, para que sirve y como la utiliza el sistema?

Gracias

Saludos

Gustavo

Hola Gustavo,

Te comento cómo es el ciclo de vida de esos campos:

Cuando la persona se da de alta como usuario del sistema, se genera automáticamente un token, que se envía como parte de la URL del link de activación en el mail de confirmación. En ese punto, en la columna ‘codigo_validacion’ se almacena ese token, y en ‘email_valido’ el valor NULL.

Si el usuario quiere loguearse sin haber validado su cuenta, como ‘email_valido’ es NULL, se rechaza.

Cuando el usuario clickea el link de activación (o pega la URL en el browser), el sistema chequea que el token de la URL coincida con lo almacenado en ‘codigo_validacion’. De ser exitosa la comprobación, se almacena el timestamp del momento en que se valido la cuenta en ‘email_valido’ y se setea en NULL el ‘codigo_validacion’.

Sin embargo, puede ocurrir que existan simultáneamente registros con ‘email_valido’ y ‘codigo_validacion’ distintos de NULL: se trata de aquellos usuarios que solicitaron recuperar su clave.

Cuando se solicita recuperación de clave, se genera un nuevo token, se lo almacena en ‘codigo_validacion’ y se envía un mail de recuperación de clave con una URL que contiene ese token. Cuando se accede por esa URL, se chequea otra vez si coincide el token con lo almacenado en la tabla, y de ser positiva la validación se habilita una interfaz para ingresar la nueva clave, que devuelve el valor NULL al campo ‘codigo_validacion’ tras completar el proceso. Pero si el usuario solicita asistencia para recuperación de clave y nunca completa el proceso (por ejemplo, porque recordó su clave o no había él sido quien solicitó el cambio), eso no impide que siga ingresando con la contraseña anterior: el campo ‘email_valido’ no se modifica. En ese caso, conviven en el registro de la persona ambos campos con valor distinto de NULL.

Saludos,
Fernando

Clarísimo, gracias!!

Saludos

Gustavo