14
« on: Enero 31, 2014, 04:24:46 pm »
Hola, estoy desarrollando un sistema en el cual los usuarios deben registrarse para acceder.
El usuario al registrarse recibe un mail en su casilla para la confirmacion.
Al hacer clic en el link debe llevarlo a la pagina de inicio de sesion para que pueda logearse.
La consulta seria como se debe armar ese link de confirmacion que lo lleve directo a la pagina de login desde el mail recibido.
Adjunto la imagen del arbol de componentes y el código referido.
Mil gracias!
<?php
class ci_registracion extends proyecto_ci{
function evt__formulario__alta($datos)
{
try {
toba::instancia()->agregar_usuario($datos['usuario'],$datos['nombre'], $datos['contrasenia']);
toba::instancia()->vincular_usuario('proyecto', $datos['usuario'], 'admin',200000001);
} catch (toba_error_validacion $e) {
toba::notificacion()->agregar($e->getMessage());
}
$this->dep('dt_jugadores')->set($datos);
$this->dep('dt_jugadores')->sincronizar();
$this->enviar_mail_aviso_cambio($datos);
$this->controlador->set_pantalla('login');
}
function evt__formulario__cancelar() {
$this->controlador->set_pantalla('login');
}
//----------------------------------------------------------------------------------------
//-------- Envio del email de solicitud de registro----------------------------------------
//----------------------------------------------------------------------------------------
//Envio un primer mail con un link para confirmar el cambio, si no lo usa... fue
function enviar_mail_aviso_cambio($datos)
{
//Genero un pseudorandom unico...
$tmp_rand = $this->get_random_temporal();
//Genero el link para el mail
$vinculos = $this->generar_link_confirmacion($datos['usuario'], $tmp_rand);
//Se envia el mail a la direccion especificada por el usuario.
$asunto = 'Solicitud de cambio de contraseña';
$cuerpo_mail = '<p>Este mail fue enviado a esta cuenta porque se <strong>solicito la registracion al Portal de proyecto</strong>.'
.'Si usted solicito dicho cambio haga click en el siguiente enlace para confirmarlo:<br>'
.$vinculos['click'].'<br><br>'
.'Si tiene problemas para conectarse al mismo, copie la siguiente dirección en la ventana de su navegador preferido:<br>'
.$vinculos['enlace'].'</p>';
//Guardo el random asociado al usuario y envio el mail
toba::instancia()->get_db()->abrir_transaccion();
try {
//$this->guardar_datos_solicitud_cambio($datos['usuario'], $tmp_rand, $datos['email']);
toba::instancia()->get_db()->cerrar_transaccion();
$mail = new toba_mail($datos['email'], $asunto, $cuerpo_mail);
$mail->set_html(true);
$mail->enviar();
} catch (toba_error $e) {
toba::instancia()->get_db()->abortar_transaccion();
throw new toba_error($this->error_cambio);
}
}
function get_random_temporal()
{
$uuid = uniqid(rand(), true);
$rnd = sha1(microtime().$uuid.rand());
return $rnd;
}
function generar_link_confirmacion($usuario, $random)
{
$path = toba::proyecto()->get_www();
$opciones = array('param_html' => array('tipo' => 'normal' , 'texto' => 'Cliquee aquí'), 'prefijo' => 'http://'.$_SERVER['SERVER_NAME'].$path['url']);
$opciones_enlace = array('prefijo' => 'http://'.$_SERVER['SERVER_NAME'].$path['url']);
$parametros = array('usuario' => $usuario, 'randr' => $random);
$vinculos = array('click' => toba::vinculador()->get_url(null, null, $parametros, $opciones),
'enlace' => toba::vinculador()->get_url(null, null, $parametros, $opciones_enlace));
return $vinculos;
}
}
?>