PageSourceSearch

https://ver.movistarplus.es/js/yomvi/struct/registro.js

js movistarplus.es collected 2026-09-24 08:55:18 UTC 26,097 bytes, 639 lines download raw bytes

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.