Beispiel #1
0
 /**
  * Inicio de sessión de un usuario.
  */
 public function action_login()
 {
     // Verificamos si el usuario está conectado.
     if (Usuario::is_login()) {
         // Lo enviamos al perfil.
         Request::redirect('/', FALSE, TRUE);
     }
     // Asignamos el título.
     $this->template->assign('title', 'Inicio de Sessión');
     // Cargamos la vista del usuario.
     $view_usuario = View::factory('usuario/login');
     $view_usuario->assign('error', NULL);
     $view_usuario->assign('error_nick', FALSE);
     $view_usuario->assign('error_password', FALSE);
     $view_usuario->assign('nick', '');
     // Verificamos si se han enviado los datos.
     if (Request::method() == 'POST') {
         // Verificamos los datos enviados.
         // Verificamos estén ambos datos.
         if (!isset($_POST['nick']) || empty($_POST['nick']) || !isset($_POST['password']) || empty($_POST['password'])) {
             $view_usuario->assign('error', 'Debe introducir el E-Mail o Usuario y la contraseña para poder acceder.');
             $view_usuario->assign('error_nick', !(isset($_POST['nick']) && !empty($_POST['nick'])));
             $view_usuario->assign('error_password', !(isset($_POST['password']) && !empty($_POST['password'])));
             $view_usuario->assign('nick', isset($_POST['nick']) ? $_POST['nick'] : '');
         } else {
             // Obtenemos los datos.
             $nick = $_POST['nick'];
             $password = $_POST['password'];
             // Realizamos el login.
             $model_usuario = new Model_Usuario();
             $rst = $model_usuario->login($nick, $password);
             switch ($rst) {
                 case -1:
                     // Datos inválidos.
                     $view_usuario->assign('error', 'Los datos introducidos son inválidos.');
                     $view_usuario->assign('error_nick', TRUE);
                     $view_usuario->assign('error_password', TRUE);
                     break;
                 case Model_Usuario::ESTADO_ACTIVA:
                     // Cuenta activa.
                     $_SESSION['flash_success'] = 'Bienvenido.';
                     Request::redirect('/', FALSE, TRUE);
                     break;
                 case Model_Usuario::ESTADO_PENDIENTE:
                     // Cuenta por activar.
                     $view_usuario->assign('error', 'La cuenta no ha sido validada a&uacute;n. Si no recibiste el correo de activación haz click <a href="/usuario/pedir_activacion/">aqui</a>');
                     break;
                 case Model_Usuario::ESTADO_SUSPENDIDA:
                     // Cuenta suspendida.
                     // Obtenemos la suspensión.
                     $suspension = $model_usuario->suspension();
                     // Obtengo información para formar mensaje.
                     $motivo = Decoda::procesar($suspension->motivo);
                     $moderador = $suspension->moderador()->as_array();
                     $seconds = $suspension->restante();
                     // Tiempo restante
                     $restante = sprintf("%d:%02d:%02d", floor($seconds / 3600), floor($seconds % 3600 / 60), $seconds % 60);
                     unset($seconds);
                     $view_usuario->assign('error', sprintf(__('%s te ha suspendido por %s debido a:<br /> %s', FALSE), $moderador['nick'], $restante, $motivo));
                     break;
                 case Model_Usuario::ESTADO_BANEADA:
                     // Cuenta baneada.
                     $baneo = $model_usuario->baneo();
                     $view_usuario->assign('error', sprintf(__('%s te ha baneado el %s debido a: <br /> %s', FALSE), $baneo->moderador()->nick, $baneo->fecha->format('d/m/Y H:i:s'), Decoda::procesar($baneo->razon)));
             }
             $view_usuario->assign('nick', $nick);
         }
     } else {
         $view_usuario->assign('nick', '');
     }
     // Agregamos el la vista a la plantilla.
     $this->template->assign('contenido', $view_usuario->parse());
 }