1/*global setCheckedUnchecked */ 2(function (window) { 3 "use strict"; 4 yomvi.addPackage('yomvi.struct.registro', function () { 5 var local = {}; 6 var tarea = {}; 7 var util = yomvi.util; 8 var usuario = yomvi.usuario; 9 var struct = yomvi.struct; 10 var services = yomvi.system.services; 11 var system = yomvi.system; 12 var lanzaAutologin = false; 13 var seccionError = 'login' 14 15 _init(); 16 17 this.verificarDatosUsuario = function (options) { 18 options = options || {}; 19 lanzaAutologin = options.lanzaAutologin; 20 var dfd; 21 _init(); 22 //local.iniciadoDesdeContenido = options.contenido || false; 23 usuario.controlarEstado(); 24 local.tieneCredenciales = false; 25 util.tareas.limpiar(); 26 util.tareas.addLista([ 27 tarea.comprobarAutoLogin, 28 tarea.comprobarUsuarioAutenticado, 29 tarea.comprobarCuentaSeleccionada, 30 tarea.comprobarPerfilUsuario, 31 tarea.llamadaActivacion, 32 tarea.comprobarTieneIdDispositivo, 33 tarea.llamadaInitData, 34 tarea.comprobarNecesitaActivarDispositivo, 35 tarea.avisoActivacion, 36 tarea.llamadaSignon, 37 tarea.limpiarDatos 38 ]); 39 dfd = util.tareas.iniciar(); 40 dfd.then(null, tarea.limpiarDatos); 41 return dfd.promise(); 42 }; 43 44 tarea.comprobarAutoLogin = function () { 45 if (!lanzaAutologin){ 46 return util.tareas.CONTINUAR; 47 } 48 49 if ((!usuario.estaAutenticado() && !usuario.estaAutologado() && lanzaAutologin)){ 50 _autoLogin().then(function() { 51 yomvi.usuario.setAuthMethod('autologin'); 52 return util.tareas.continuar(); 53 }).catch(function(_err) { 54 _err = _err || {}; 55 return util.tareas.continuar(); 56 }); 57 return util.tareas.PARAR; 58 } 59 return util.tareas.CONTINUAR; 60 }; 61 62 tarea.comprobarUsuarioAutenticado = function () { 63 if (!usuario.estaAutenticado() && !usuario.estaAutologado()) { 64 _mostrarLogin('login_form', {class: 'login_form'}); 65 return util.tareas.PARAR; 66 } 67 return util.tareas.CONTINUAR; 68 }; 69 70 tarea.comprobarCuentaSeleccionada = function () { 71 var cuentas; 72 if (usuario.cuentaSeleccionada()) { 73 return util.tareas.CONTINUAR; 74 } 75 cuentas = usuario.arrayCuentaDescripcion(); 76 if (!cuentas.length) { 77 _mostrarErrorFinalizacion(yomvi.txt('NOHAY_CUENTAS_ERR')); 78 return util.tareas.PARAR; 79 } 80 if (cuentas.length === 1) { 81 usuario.cuentaSeleccionada(usuario.primeraOferta().accountNumber); 82 return util.tareas.CONTINUAR; 83 } 84 _mostrarSelectorOfertas(cuentas); 85 return util.tareas.PARAR; 86 }; 87 88 tarea.comprobarPerfilUsuario = function () { 89 var oferta = usuario.ofertaSeleccionada(); 90 if (!oferta) { 91 return util.tareas.PARAR; 92 } 93 if (!usuario.esPerfilAutorizado()) { 94 _mostrarErrorPerfilNoAutorizado("Aviso", oferta.mensaje_autorizar); 95 return util.tareas.PARAR; 96 } 97 return util.tareas.CONTINUAR; 98 }; 99 100 tarea.llamadaActivacion = function () { 101 if (usuario.prefs('did')) { 102 return util.tareas.CONTINUAR; 103 } 104 _activacionDispositivoEnCuenta(); 105 return util.tareas.PARAR; 106 }; 107 108 tarea.comprobarTieneIdDispositivo = function () { 109 if (usuario.prefs('did') || usuario.getDidAnonimo()) { 110 return util.tareas.CONTINUAR; 111 } 112 struct.showModalSpinner(); 113 local.deviceId = usuario.prefs('did') || usuario.getDidAnonimo(); 114 var tieneId = !!(local.deviceId); 115 if (!tieneId) { 116 _mostrarErrorFinalizacion(yomvi.txt('INITDATA_FALTA_DEVICEID')); 117 } else { 118 util.tareas.continuar(); 119 } 120 return util.tareas.PARAR; 121 }; 122 123 tarea.vacia = function () { 124 return util.tareas.CONTINUAR; 125 }; 126 127 tarea.llamadaInitData = function () { 128 var _deviceId = usuario.prefs('did') || usuario.getDidAnonimo() || local.deviceId; 129 if (!_deviceId) { 130 _mostrarErrorFinalizacion(yomvi.txt('INITDATA_FALTA_DEVICEID')); 131 return; 132 } 133 if (_deviceId){ 134 yomvi.usuario.prefs('did', _deviceId); 135 } 136 yomvi.system.registro.initData(_deviceId).done(function () { 137 util.tareas.continuar(); 138 }).fail(function (_error) { 139 const status = _error?.status; 140 if(yomvi.usuario.estaAutologado()){ 141 _deslogar(); 142 }else{ 143 _mostrarErrorFinalizacion(yomvi.txt('ERROR_SERVICIO'), status, 'initdata'); 144 } 145 return; 146 }); 147 return util.tareas.PARAR; 148 }; 149 150 tarea.comprobarNecesitaActivarDispositivo = function () {
151 var cuentaSeleccionada = usuario.cuentaSeleccionada(), 152 cuentaDispositivo = usuario.getCuentaAsociadaAlDispositivo(); 153 local.cuentaCorrecta = !!(cuentaSeleccionada && cuentaDispositivo && (cuentaSeleccionada === cuentaDispositivo)); 154 if (!local.cuentaCorrecta) { 155 _setNecesitaActivarDispositivo(true); 156 } 157 return util.tareas.CONTINUAR; 158 } 159 160 tarea.avisoActivacion = function () { 161 if (!yomvi.struct.registro.necesitaActivarDispositivo()) { 162 return util.tareas.CONTINUAR; 163 } 164 _mostrarPopupActivacion(); 165 return util.tareas.PARAR; 166 }; 167 168 tarea.llamadaSignon = function () { 169 //ticket #15681 170 //TODO:mantenemos esto aqui en lugar de en limpiardatos, para evitar bug en el caso de autologin fuera de casa 171 _finalizar(); 172 local.usuario = null; 173 local.password = null; 174 yomvi.util.tareas.continuar(); 175 return util.tareas.PARAR; 176 }; 177 178 tarea.limpiarDatos = function () { 179 local = {}; 180 usuario.limpiarOfertas(); 181 usuario.controlarEstado(); 182 usuario.actualizarPerfil(); 183 util.tareas.finResolve(); 184 yomvi.usuario.firstLoad('login'); 185 return util.tareas.CONTINUAR; 186 }; 187 188 function _init() { 189 local = {}; 190 local.NECESITA_ACTIVAR_DISPOSITIVO = false; 191 local.cuentaCorrecta = false; 192 local.DISPOSITIVO_EN_CUENTA = false; 193 } 194 195 function _autoLogin() { 196 return new Promise(function(resolve, reject) { 197 var did = yomvi.usuario.prefs('did') || '' 198 yomvi.system.registro.autenticacionAutologin(did).done(function() { 199 resolve(); 200 }).fail(function(_xhr) { 201 reject(_xhr); 202 return util.tareas.CONTINUAR; 203 }); 204 }); 205 } 206 207 function _autenticacion(_username, _password, _popup, _options) { 208 var did = yomvi.usuario.prefs('did') || '' 209 return yomvi.system.registro.autenticacion(_username, _password, did).done(function () { 210 }).fail(function (_error) { 211 _error = _error || {}; 212 if (_error.status === 400) { 213 _error.credenciales = true; 214 //const button = document.getElementById('login_submit'); 215 //button.value = "REINTENTAR"; 216 } 217 }); 218 } 219 220 function _controlPaterno(_username, _password, _popup, _options) { 221 return services.controlPaterno(_username, _password, _options); 222 } 223 224 function _eventosCredenciales(_servicio, _username, _password, _popup) { 225 _servicio.done(function () { 226 local.tieneCredenciales = true; 227 local.usuario = _username; 228 local.password = _password; 229 if (util.tareas.hayTareas()) { 230 util.tareas.continuar(); 231 } 232 }).fail(function (_error) { 233 _error = _error || {}; 234 struct.hideModalSpinner(); 235 236 const status = _error?.status || 400; 237 238 const contexto = system.errorConstantsManager.obtenerContextoError(seccionError, 'token', status); 239 const descripcionErrorServicio = system.errorConstantsManager.generarPrefijoError(contexto.marcado,_error.status); 240 const codigoUsuario = `${contexto.prefijo}_${status}`; 241 242 if (!_error.credenciales) { 243 // var parseResponseText = JSON.parse(_error.responseText) || {}; 244 var _error_servicio = yomvi.system.services.Error(_error) || {}; 245 if (_error.activacion) { 246 _mostrarErrorFinalizacion(_error.descripcion, status, 'token'); 247 } else { 248 yomvi.usuario.firstLoad('deslogado') 249 yomvi.usuario.removeCookieMplus(); 250 _mostrarErrorFinalizacion(yomvi.txt('LOGIN_CONN_ERR'), status, 'token'); 251 } 252 return; 253 } 254 255 var params = {cod_error : descripcionErrorServicio}; 256 yomvi.marcado.marcar("errores", params); 257 const mensaje = `Comprueba que tu usuario y la contraseña son correctos e inténtalo de nuevo.(Código:${codigoUsuario})`; 258 _popup.find('.modalContent .modalLightText').html(mensaje).addClass('warning'); 259 260 //_popup.find('.modalContent .modalLightText').html("Comprueba que tu usuario y la contraseña son correctos e inténtalo de nuevo.(Código:LO02_400)").addClass('warning'); 261 _popup.find('#login_submit').attr("disabled", true); 262 if (_error.credenciales) { 263 if (typeof dataLayerGTM !== 'undefined'){ 264 dataLayerGTM.push({'event':'validacion','step':'acceso', 'tipo':'error_usuario_contraseña'}) 265 } 266 _popup.find('input#user,input#pass').addClass('warning'); 267 } 268 }); 269 } 270 271 function _activacionDispositivoEnCuenta() { 272 _setNecesitaActivarDispositivo(false); 273 return yomvi.system.registro.activacionDispositivoEnCuenta().done(function () { 274 local.DISPOSITIVO_EN_CUENTA = true; 275 util.tareas.continuar(); 276 }).fail(function (_error) { 277 const status = _error?.status; 278 if(yomvi.usuario.estaAutologado()){ 279 return _deslogar(); 280 } 281 var _msg = yomvi.txt('ERROR_SERVICIO'); 282 _mostrarErrorFinalizacion(_msg, status, 'devices'); 283 }); 284 } 285 286 function _finalizar() { 287 yomvi.usuario.verificado(); 288 yomvi.usuario.removeFirstLoad(); 289 if (!usuario.estaAutologado()){ 290 yomvi.struct.closePopup(); 291 } 292 } 293 294 function _mostrarPopupActivacion() { 295 return yomvi.struct.showPopup('popup_error', { 296 cabecera: 'Aviso', 297 msg: yomvi.txt('ERR_DISPOSITIVO_REACTIVAR', 'sesiones'), 298 botones: { 299 '#error_btn': _deslogar, 300 '.closeModal': _deslogar, 301 } 302 }); 303 } 304 305 function _mostrarLogin(_form, _options) { 306 var urlActual = new URL(location.href); 307 _form = _form || 'login_form'; 308 _options = _options || {}; 309 if (urlActual.pathname.includes("login")){ 310 var carcasa = 'carcasa_newlogin'; 311 } 312 var _url = yomvi.util.parseURL(); 313 let container = document.querySelector('.container'); 314 let addBlackTransition = false;
315 if (container && container.classList.contains('reproplayer')){ 316 yomvi.player.toolbar.removeBlackTransition(); 317 addBlackTransition = true; 318 } 319 320 _options = jQuery.extend(true, { 321 footer: 'login_form', 322 focus: '#user', 323 usuario: usuario.get('login') || '', 324 ayudaHref: yomvi.system.urls.getUrl('ayuda_login'), 325 onLoad: function () { 326 var _popup = this; 327 _popup.find('input').on('keypress', function (e) { 328 $(this).removeClass('warning'); 329 }); 330 _popup.find('input').on('input', function(e){ 331 var _user = _popup.find('#user').val(); 332 var _pass = _popup.find('#pass').val(); 333 var _submit = _popup.find('#login_submit') 334 if (_user.length && _pass.length) { 335 _submit.removeAttr("disabled"); 336 }else{ 337 _submit.attr("disabled", true); 338 } 339 }); 340 341 }, 342 botones: { 343 '#login_submit': function (e) { 344 345 var _popup = e.data.popup, 346 _user = _popup.find('#user').val(), 347 _pass = _popup.find('#pass').val(); 348 $('#pass').blur(); 349 350 if (_user.length && _pass.length) { 351 struct.showModalSpinner(); 352 var _servicio = _options.llamadaServicio ? _options.llamadaServicio : _autenticacion; 353 354 _servicio = _servicio.call(null, _user, _pass, _popup, _options); 355 _eventosCredenciales(_servicio, _user, _pass, _popup); 356 _servicio.done(_options.loginOk || jQuery.noop); 357 if(addBlackTransition){ 358 yomvi.player.toolbar.addBlackTransition(); 359 } 360 } 361 362 }, 363 364 '.closeModal': function (e) {yomvi.struct.redirectTo(yomvi.system.urls.getUrl("loginNew"));}, 365 '#registro': function (e) { 366 var _p_marcado = {option: "Necesitas ayuda"}; 367 yomvi.marcado.marcar("popupIdentificacion", _p_marcado); 368 }, 369 '#recordar_pass': function (e) { 370 var _p_marcado = {option: "No recuerdo mi contraseña", noasync: true }; 371 yomvi.marcado.marcar("popupIdentificacion", _p_marcado); 372 struct.redirectTo(yomvi.system.urls.getUrl('recordar_clave'),false,true); 373 } 374 } 375 }, 376 _options, 377 { 378 focus: (_options.usuario || _url.params.user) ? '#pass' : '#user' 379 }); 380 struct.showPopup(_form || 'login_form', _options, carcasa); 381 if (_options.footer === 'login_form'){ 382 _togglePassword(); 383 _crossUser() 384 } 385 if (_options.footer === 'mini_login' && urlActual.pathname.includes("login")){ 386 $('#spinner-total').hide(); 387 _togglePassword(); 388 } 389 } 390 391 function _togglePassword(){ 392 const togglePassword = document.querySelector('.bi'); 393 const passwordInput = document.querySelector('#pass'); 394 if (togglePassword && passwordInput){ 395 passwordInput.addEventListener("focus", (e) => { 396 397 togglePassword.classList.add('active'); 398 }); 399 passwordInput.addEventListener("focusout", (e) => { 400 togglePassword.classList.remove('active'); 401 }); 402 togglePassword.addEventListener('click', e => { 403 const type = passwordInput.getAttribute('type') === 'password' ? 'text' : 'password'; 404 const addClass = passwordInput.getAttribute('type') === 'password' ? 'bi-eye-slash' : 'bi-eye'; 405 const removeClass = passwordInput.getAttribute('type') === 'password' ? 'bi-eye' : 'bi-eye-slash'; 406 passwordInput.setAttribute('type', type); 407 e.target.classList.remove(removeClass); 408 e.target.classList.add(addClass); 409 passwordInput.focus() 410 }) 411 } 412 } 413 414 function _crossUser(){ 415 const crossUser = document.querySelector('.user_aspa'); 416 const userInput = document.querySelector('#user'); 417 if (crossUser && userInput){ 418 userInput.addEventListener("input", (e) => { 419 crossUser.classList.add('active'); 420 }); 421 userInput.addEventListener("focusout", (e) => { 422 crossUser.classList.remove('active'); 423 }); 424 crossUser.addEventListener('click', e => { 425 userInput.value = ''; 426 userInput.focus() 427 }) 428 } 429 } 430 431 function _mostrarSelectorOfertas(ofertas) { 432 var id_offer = null; 433 if (!ofertas.length) { 434 _mostrarErrorFinalizacion(yomvi.txt('INITDATA_NOOFERTAS_ERR')); 435 } 436 struct.showPopup('offer_selector', { 437 lista_ofertas: ofertas, 438 botones: { 439 'li': function (e) { 440 $(e.data.popup).find('.packageSelector li') 441 .removeClass('active'); 442 id_offer = $(this).attr('id').replace('op-', ''); 443 $(this).addClass('active'); 444 }, 445 '#submit_offer': function (e) { 446 if (id_offer) {
447 usuario.cuentaSeleccionada(id_offer); 448 util.tareas.continuar(); 449 } 450 }, 451 '.closeModal': function (e) {yomvi.struct.redirectTo(yomvi.system.urls.getUrl("neo"));}, 452 } 453 }, 'carcasa_newlogin'); 454 } 455 456 this.popupFinAutologin = function () { 457 var txtbotonaceptar = "ENTRAR"; 458 yomvi.struct.mostrarAviso({ 459 cabecera: 'Bienvenido a Movistar Plus+', 460 msg: yomvi.txt('FINALIZACION_AUTOLOGIN'), 461 botones: { 462 '.closeModal': function(e) { 463 yomvi.usuario.setDisablePopUpAutologin(true); 464 yomvi.struct.closePopup(); 465 if (yomvi.usuario.contextBienvenidaPortada()) { 466 yomvi.usuario.mostrarBienvenidaPortada(); 467 } 468 }, 469 '#aceptar_btn': function (e) { 470 yomvi.usuario.setDisablePopUpAutologin(true); 471 yomvi.struct.closePopup(); 472 if (yomvi.usuario.contextBienvenidaPortada()) { 473 yomvi.usuario.mostrarBienvenidaPortada(); 474 } 475 }, 476 values: {'#aceptar_btn': txtbotonaceptar} 477 } 478 }); 479 } 480 481 this.popupFinAutologinSinCredenciales = function () { 482 yomvi.struct.showPopup('autologinsincredenciales', { 483 cabecera: 'Activa Movistar Plus+ en dispositivos', 484 msg:yomvi.txt('FINALIZACION_AUTOLOGIN_SINCREDENCIALES'), 485 botones: { 486 '.closeModal': function(e) { 487 yomvi.struct.closePopup(); 488 }, 489 '#cancelar_btn': function(e) { 490 yomvi.struct.closePopup(); 491 }, 492 '#aceptar_btn': function(e) { 493 yomvi.struct.redirectTo(yomvi.system.urls.getUrl('activacion_usuario')); 494 }, 495 '#checkbox_autologin': function (e) { 496 yomvi.usuario.setDisablePopUpAutologinSinCredenciales(true); 497 yomvi.struct.closePopup(); 498 } 499 } 500 },'carcasa_popup_autologinsincredenciales'); 501 } 502 503 function _mostrarErrorFinalizacion(msg, codError, contexto) { 504 var mensaje = msg || yomvi.txt('ERROR_SERVICIO'); 505 506 if (typeof codError === 'string' || typeof codError === 'number') { 507 const { mensaje: mensajeActualizado } = yomvi.system.errorConstantsManager.manejarError({ 508 seccionError: seccionError, 509 tipoError: contexto, 510 status: codError, 511 mensaje: mensaje 512 }); 513 mensaje = mensajeActualizado; 514 } 515 var urlActual = new URL(location.href); 516 if (urlActual.pathname.includes("login")){ 517 var carcasanew = 'carcasa_newlogin'; 518 } 519 520 struct.mostrarError({ 521 cabecera: "Aviso", 522 msg: mensaje, 523 carcasa: carcasanew, 524 botones: { 525 '#error_btn': function (e) { 526 _deslogar(); 527 }, 528 '.closeModal': _deslogar, 529 values: { 530 '#error_btn': 'ACEPTAR' 531 } 532 } 533 }); 534 } 535 536 function _deslogar() { 537 yomvi.usuario.logout({ mantenerPrefs: false }); 538 yomvi.struct.recargarPagina(); 539 } 540 541 function _mostrarErrorPerfilNoAutorizado(cabecera, msg) { 542 struct.mostrarError({ 543 cabecera: cabecera || "Aviso", 544 msg: msg || yomvi.txt('PERFIL_NO_AUTORIZADO_ERR'), 545 botones: { 546 '#error_btn': _deslogar, 547 '.closeModal': _deslogar 548 } 549 }); 550 } 551 552 function _initDataSignon(_deviceId) { 553 var dfd = $.Deferred(); 554 _setNecesitaActivarDispositivo(false); 555 yomvi.system.registro.initData(_deviceId).done(function () { 556 dfd.resolve(); 557 }).fail(function (_error) { 558 _deslogar() 559 }); 560 return dfd.promise(); 561 } 562 563 function _setNecesitaActivarDispositivo(_true) { 564 local.NECESITA_ACTIVAR_DISPOSITIVO = _true || false; 565 } 566 567 this.necesitaActivarDispositivo = function () { 568 return local.NECESITA_ACTIVAR_DISPOSITIVO; 569 }; 570 571 this.reactivacionDeviceBinding = function (){ 572 return new Promise(function(resolve, reject) { 573 $.when( 574 yomvi.loadPackage('login') 575 ).done(function () { 576 // cerrar sesion 577 if (yomvi.player.events.useSession()) { 578 yomvi.player.session.close(false); 579 } 580 // eliminar deviceId 581 yomvi.usuario.removePrefByKey('did'); 582 yomvi.usuario.removePrefByKey('did', true); 583 584 //Eliminamos token de tcdn 585 if (yomvi.player.cdnmanager.tcdnsecurizathion()){ 586 yomvi.player.cdnmanager.clear(); 587 } 588 //Autenticación 589 //TO DO comprobar que tenemos accessToken para pasarlo al flujo del loginExchangeBinding 590 yomvi.system.registro.loginExchangeBinding(yomvi.usuario.getAccessToken()).done(function () { 591 resolve(); 592 }).fail(function(err){ 593 reject(err); 594 595 }) 596 }); 597 }) 598 }; 599 600 this.mostrarMiniLogin = function (_options) { 601 _options = _options || {}; 602 _mostrarLogin('login_form', { 603 soloValidar: true, 604 usuario: usuario.get('login'), 605 focus: usuario.get('login') ? '#pass' : '#user', 606 cabecera: _options.cabecera || yomvi.txt('IDENTIFICATE', 'cabeceras_login'), 607 controlPaterno: true, 608 tipoError: _options.tipoError || '', 609 llamadaServicio: _controlPaterno, 610 msg: _options.msg || '', 611 class: _options.class || '', 612 loginOk: _options.loginOk || function () { 613 struct.closePopup(); 614 }, 615 botones: { 616 '.closeModal': function (e) { 617 history.go(-1); 618 } 619 }, 620 footer: 'mini_login' 621 }); 622 $(".modalBlock.left").hide(); 623 }; 624 625 this.refrescarPermisos = function () { 626 var dfd = $.Deferred(), _deviceId = usuario.prefs('did'); 627 $.when( 628 yomvi.loadPackage('login') 629 ).done(function () { 630 _initDataSignon(_deviceId).done(function () { 631 dfd.resolve(); 632 }).fail(function (_err) { 633 dfd.reject(_err); 634 }); 635 }); 636 return dfd.promise(); 637 }; 638 }); 639}(window));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.