2012-09-20 19:38:42 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Sirve para realizar el proceso de registro de un usuario nuevo.
|
|
|
|
|
*/
|
|
|
|
|
class RegistroUsuarioController extends Controller {
|
|
|
|
|
|
|
|
|
|
public $defaultAction = 'registrar';
|
|
|
|
|
|
2012-09-21 19:21:20 +00:00
|
|
|
public function init() {
|
2012-09-21 11:51:17 +00:00
|
|
|
$this->layout = '/layouts/mensajes';
|
|
|
|
|
}
|
2012-09-21 19:21:20 +00:00
|
|
|
|
|
|
|
|
public function filters() {
|
|
|
|
|
return array('accessControl');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function accessRules() {
|
2012-09-20 19:38:42 +00:00
|
|
|
return array(
|
2012-09-21 19:21:20 +00:00
|
|
|
array('allow',
|
|
|
|
|
'actions' => array('registrar', 'activar'),
|
|
|
|
|
'users' => array('*')
|
|
|
|
|
),
|
|
|
|
|
array('allow',
|
|
|
|
|
'users' => array('@')
|
2012-09-20 19:38:42 +00:00
|
|
|
),
|
|
|
|
|
array('deny'),
|
|
|
|
|
);
|
2012-09-21 19:21:20 +00:00
|
|
|
}
|
2012-09-20 19:38:42 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Realiza el registro de un usuario a partir de los datos introducidos
|
|
|
|
|
* en el formulario de la página de entrada.
|
|
|
|
|
* También envía un email al usuario para que confirme su cuenta.
|
|
|
|
|
*/
|
|
|
|
|
public function actionRegistrar() {
|
|
|
|
|
$formulario = new FormularioRegistro;
|
|
|
|
|
$resultado = array();
|
|
|
|
|
|
|
|
|
|
// if it is ajax validation request
|
|
|
|
|
if (isset($_POST['ajax']) && $_POST['ajax'] === 'registro-form') {
|
|
|
|
|
|
|
|
|
|
$formulario->email = $_POST['FormularioRegistro_email'];
|
|
|
|
|
$formulario->password = $_POST['FormularioRegistro_password'];
|
|
|
|
|
$formulario->password2 = $_POST['FormularioRegistro_password2'];
|
|
|
|
|
|
|
|
|
|
if (!$formulario->validate()) {
|
|
|
|
|
foreach ($formulario->getErrors() as $campo => $error) {
|
|
|
|
|
$resultado[$campo] = $error;
|
|
|
|
|
}
|
|
|
|
|
echo function_exists('json_encode') ? json_encode($resultado) : CJSON::encode($resultado);
|
|
|
|
|
Yii::app()->end();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$nuevo_usuario = new Usuario('registrar');
|
|
|
|
|
$nuevo_usuario->email = $formulario->email;
|
|
|
|
|
$nuevo_usuario->password = $nuevo_usuario->encrypt($formulario->password);
|
|
|
|
|
$nuevo_usuario->estado = Usuario::ESTADO_NOACTIVO;
|
|
|
|
|
$nuevo_usuario->clave_seguridad = $nuevo_usuario->encrypt(microtime() . $nuevo_usuario->password);
|
2012-09-21 19:21:20 +00:00
|
|
|
|
2012-09-20 19:38:42 +00:00
|
|
|
if (!$nuevo_usuario->save()) {
|
|
|
|
|
foreach ($nuevo_usuario->getErrors() as $campo => $error) {
|
|
|
|
|
$resultado[$campo] = $error;
|
|
|
|
|
}
|
|
|
|
|
echo function_exists('json_encode') ? json_encode($resultado) : CJSON::encode($resultado);
|
|
|
|
|
Yii::app()->end();
|
|
|
|
|
}
|
2012-09-21 19:21:20 +00:00
|
|
|
|
2012-09-21 15:57:36 +00:00
|
|
|
$nueva_empresa = new Empresa('registrar');
|
|
|
|
|
if (!$nueva_empresa->save()) {
|
|
|
|
|
foreach ($nueva_empresa->getErrors() as $campo => $error) {
|
|
|
|
|
$resultado[$campo] = $error;
|
|
|
|
|
}
|
|
|
|
|
echo function_exists('json_encode') ? json_encode($resultado) : CJSON::encode($resultado);
|
|
|
|
|
Yii::app()->end();
|
|
|
|
|
}
|
2012-09-21 19:21:20 +00:00
|
|
|
|
2012-09-21 15:57:36 +00:00
|
|
|
$nuevo_usuario->id_empresa = $nueva_empresa->id;
|
|
|
|
|
if (!$nuevo_usuario->save()) {
|
|
|
|
|
foreach ($nuevo_usuario->getErrors() as $campo => $error) {
|
|
|
|
|
$resultado[$campo] = $error;
|
|
|
|
|
}
|
|
|
|
|
echo function_exists('json_encode') ? json_encode($resultado) : CJSON::encode($resultado);
|
|
|
|
|
Yii::app()->end();
|
|
|
|
|
}
|
2012-09-21 19:21:20 +00:00
|
|
|
|
2012-09-20 19:38:42 +00:00
|
|
|
$this->enviarMailRegistro($nuevo_usuario);
|
|
|
|
|
|
|
|
|
|
$resultado['status'] = '200';
|
2012-09-21 10:41:55 +00:00
|
|
|
$resultado['texto'] = 'Su cuenta ha sido creada, en unos momentos recibirá un email con un enlace para completar su registro.';
|
2012-09-20 19:38:42 +00:00
|
|
|
echo function_exists('json_encode') ? json_encode($resultado) : CJSON::encode($resultado);
|
|
|
|
|
Yii::app()->end();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->redirect(Yii::app()->params['frontpage']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Activa la cuenta del usuario a partir de la URL de activación
|
|
|
|
|
* que se le ha enviado a través de un email.
|
|
|
|
|
*/
|
|
|
|
|
public function actionActivar() {
|
|
|
|
|
$email = $_GET['email'];
|
|
|
|
|
$clave_seguridad = $_GET['key'];
|
2012-09-21 19:21:20 +00:00
|
|
|
|
2012-09-20 19:38:42 +00:00
|
|
|
if ($email && $clave_seguridad) {
|
|
|
|
|
$usuario = Usuario::model()->findByAttributes(array('email' => $email));
|
2012-09-21 19:21:20 +00:00
|
|
|
|
2012-09-20 19:38:42 +00:00
|
|
|
// Comprobamos si se ha encontrado un usuario con ese email
|
|
|
|
|
if (!isset($usuario))
|
2012-09-21 19:21:20 +00:00
|
|
|
//$this->render('/user/message', array('title' => Yii::t("User activation"), 'content' => Yii::t("Incorrect activation URL.")));
|
|
|
|
|
Yii::log("Incorrect activation URL. 3");
|
2012-09-20 19:38:42 +00:00
|
|
|
elseif ($usuario->estado == Usuario::ESTADO_ACTIVO)
|
2012-09-21 19:21:20 +00:00
|
|
|
//$this->render('/user/message', array('title' => Yii::t("User activation"), 'content' => Yii::t("You account is active.")));
|
|
|
|
|
Yii::log("You account is active.");
|
2012-09-20 19:38:42 +00:00
|
|
|
elseif ($usuario->estado == Usuario::ESTADO_DENEGADO)
|
2012-09-21 19:21:20 +00:00
|
|
|
//$this->render('/user/message', array('title' => Yii::t("User activation"), 'content' => Yii::t("You account is banned.")));
|
|
|
|
|
Yii::log("You account is banned.");
|
2012-09-20 19:38:42 +00:00
|
|
|
elseif (isset($usuario->clave_seguridad) && ($usuario->clave_seguridad == $clave_seguridad)) {
|
|
|
|
|
// Hay que activar el usuario
|
|
|
|
|
$usuario->estado = Usuario::ESTADO_ACTIVO;
|
|
|
|
|
$usuario->clave_seguridad = $usuario->encrypt(microtime());
|
|
|
|
|
$usuario->save();
|
2012-09-21 19:21:20 +00:00
|
|
|
$this->enviarMailConfirmacionActivacion($usuario);
|
2012-09-21 11:51:17 +00:00
|
|
|
$this->render('confirmacion_usuario');
|
2012-09-21 19:21:20 +00:00
|
|
|
Yii::log("You account is activated.");
|
2012-09-20 19:38:42 +00:00
|
|
|
} else {
|
2012-09-21 11:51:17 +00:00
|
|
|
$this->render('error_confirmacion');
|
2012-09-21 19:21:20 +00:00
|
|
|
Yii::log("Incorrect activation URL. 2 ");
|
2012-09-20 19:38:42 +00:00
|
|
|
}
|
2012-09-21 19:21:20 +00:00
|
|
|
} else {
|
2012-09-21 11:51:17 +00:00
|
|
|
$this->render('error_confirmacion');
|
2012-09-21 19:21:20 +00:00
|
|
|
Yii::log("Incorrect activation URL. 1");
|
2012-09-20 19:38:42 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Envía un mail de registro a un usuario
|
|
|
|
|
* con una URL de confirmación.
|
|
|
|
|
* @param Usuario $usuario Usuario al que se le enviará el mail de registro
|
|
|
|
|
*/
|
|
|
|
|
private function enviarMailRegistro($usuario) {
|
|
|
|
|
Yii::import('ext.yii-mail.YiiMailMessage');
|
|
|
|
|
|
2012-09-21 19:21:20 +00:00
|
|
|
$url_activacion = $this->createAbsoluteUrl('registroUsuario/activar', array("key" => $usuario->clave_seguridad, "email" => $usuario->email));
|
2012-09-20 19:38:42 +00:00
|
|
|
$mensaje = new YiiMailMessage;
|
|
|
|
|
|
|
|
|
|
$mensaje->from = Yii::app()->params['email_remitente'];
|
|
|
|
|
$mensaje->setTo($usuario->email);
|
|
|
|
|
$mensaje->subject = Yii::t('profind', 'Complete su registro en PROFIND');
|
2012-09-21 19:21:20 +00:00
|
|
|
$mensaje->view = 'registro_usuario';
|
2012-09-20 19:38:42 +00:00
|
|
|
$mensaje->setBody(
|
|
|
|
|
array(
|
2012-09-21 19:21:20 +00:00
|
|
|
'url' => $url_activacion,
|
|
|
|
|
'email' => $usuario->email
|
|
|
|
|
), 'text/html'
|
|
|
|
|
);
|
2012-09-20 19:38:42 +00:00
|
|
|
|
|
|
|
|
Yii::app()->mail->send($mensaje);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Envía un mail de confirmación de su cuenta al usuario.
|
|
|
|
|
* @param Usuario $usuario Usuario al que se le enviará el mail de registro
|
|
|
|
|
*/
|
|
|
|
|
private function enviarMailConfirmacionActivacion($usuario) {
|
|
|
|
|
Yii::import('ext.yii-mail.YiiMailMessage');
|
|
|
|
|
|
|
|
|
|
$mensaje = new YiiMailMessage;
|
|
|
|
|
|
|
|
|
|
$mensaje->from = Yii::app()->params['email_remitente'];
|
|
|
|
|
$mensaje->setTo($usuario->email);
|
|
|
|
|
$mensaje->subject = Yii::t('profind', 'Gracias por registrarse en PROFIND.');
|
2012-09-21 19:21:20 +00:00
|
|
|
$mensaje->view = 'confirmacion_usuario';
|
2012-09-20 19:38:42 +00:00
|
|
|
$mensaje->setBody(array(), 'text/html');
|
|
|
|
|
|
|
|
|
|
Yii::app()->mail->send($mensaje);
|
|
|
|
|
}
|
2012-09-21 19:21:20 +00:00
|
|
|
|
2012-09-20 19:38:42 +00:00
|
|
|
}
|