Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2016
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. angular.module('starter.services', [])
  2.  
  3. .factory('Login', function() {
  4.  
  5.     var dados = {
  6.         nome: '',
  7.         senha: '',
  8.         id: '',
  9.         nomeRede: '',
  10.     };
  11.      var conf = new Config_wifi();
  12.      var array_redes = conf.REDES_WIFI;
  13.  
  14.     return{
  15.  
  16.         /**
  17.             o valor da label conectstatus podem ser:
  18.  
  19.             -1 = sem rede disponível;
  20.             0 = verificando rede;
  21.             1 = conectado;
  22.             2 = rede disponível.
  23.         */
  24.  
  25.         // Verifica o tipo de conexão e se a conexão wifi está ativa
  26.         connectType: function(ionicPopup){
  27.             cordova.plugins.diagnostic.isWifiEnabled(win, fail);
  28.             var conect = navigator.connection.type;
  29.             var states = {};
  30.             states[Connection.ETHERNET] = 'Ethernet connection';
  31.             states[Connection.WIFI]     = 'WiFi connection';
  32.             states[Connection.CELL_2G]  = 'Cell 2G connection';
  33.             states[Connection.CELL_3G]  = 'Cell 3G connection';
  34.             states[Connection.CELL_4G]  = 'Cell 4G connection';
  35.             states[Connection.CELL]     = 'Cell generic connection';
  36.  
  37.             //compara o texto da conexão com Wifi Connection
  38.             if(states[conect] == 'WiFi connection'){
  39.                 return true;
  40.             }
  41.             else{
  42.                  if(ionic.Platform.isIOS()){
  43.                     ionicPopup.alert({title:'Aviso',template:'Verifique se você está conectado a Rede Wifi '});
  44.                     return null;
  45.                  }
  46.             }
  47.  
  48.             function win(e){
  49.                 // O valor de "e" pode ser 1 para wifi ativado e 0 para wifi desativado
  50.                 if(e === 0){
  51.                     if(ionic.Platform.isIOS()){
  52.                         ionicPopup.alert({title:'Aviso',template:'Sua rede wifi está desativada, por favor ative e tente novamente'});
  53.                         $(".spinner-click").css('visibility','hidden');
  54.                     }
  55.                     else{
  56.                         // liga o Wifi
  57.                        $("#status_wifi").text("Verificando o Wifi");
  58.                        $(".enter_status").css('visibility','hidden');
  59.                         WifiWizard.setWifiEnabled(true, sucess, fail);
  60.                         function sucess(e){
  61.                          setTimeout(function(){
  62.                             console.log('--> '+e);
  63.                             $("#status_wifi").text('');
  64.                             $(".enter_status").css('visibility','visible');
  65.                             $(".enter_status").val("Verificar Rede");
  66.                             $(".spinner-click").css('visibility','hidden');
  67.                          },2000);
  68.  
  69.                         }
  70.                     }
  71.                 }
  72.             }
  73.  
  74.             function fail(e){
  75.                 ionicPopup.alert({title:'Aviso',template:'Não foi possível identificar a conexão wifi, por favor ative e tente novamente'});
  76.             }
  77.         },
  78.         // scaneando as redes próximas
  79.         scanNetwork: function(ionicPopup){
  80.  
  81.             WifiWizard.startScan(successNetwork, failNetwork);
  82.             function successNetwork(e){
  83.  
  84.                 window.setTimeout(function(){
  85.                     getScanResult();
  86.                 }, 1000);
  87.             }
  88.  
  89.             function failNetwork(e){
  90.                 ionicPopup.alert({title:'Erro',template:'Não foi possível scanear as redes, verifique se as permissões estão habilitadas.'});
  91.             }
  92.  
  93.             function getScanResult(){
  94.                 WifiWizard.getScanResults(listHandler, failNetwork);
  95.             }
  96.             // seta os SSIDs em um array
  97.             function listHandler(a){
  98.                 var position ;
  99.                 var ssidReach = null;
  100.                 var network_array = [];
  101.  
  102.                 for(var i=0; i < a.length; i++){
  103.                     network_array.push(a[i].SSID);
  104.                     for(var j = 0 ; j <= i ; j++){
  105.                         if($.inArray(network_array[j], array_redes ) != -1 ){
  106.                            position  =  $.inArray(network_array[j], array_redes );
  107.                            ssidReach = true;
  108.                         }
  109.                     }
  110.                 }
  111.                 if(ssidReach){
  112.                     // conecta na rede unisinos
  113.                     WifiWizard.connectNetwork(array_redes[position], win, fail);
  114.                 }else{
  115.                     $("#conectStatus").val("-1");
  116.                     $("#status_wifi").text('Sem rede disponível');
  117.                     $(".enter_status").val("Tentar Novamente");
  118.                     $(".spinner-click").css('visibility','hidden');
  119.                 }
  120.  
  121.             function win(e){
  122.                 $("#conectStatus").val("2")
  123.                 $("#status_wifi").text('Rede disponível');
  124.                 $(".enter_status").val("Conectar");
  125.                 $(".spinner-click").css('visibility','hidden');
  126.             }
  127.  
  128.             function fail(e){
  129.                 ionicPopup.alert({title:'Erro',template:'Não foi possível conectar-se a rede Unisinos.'});
  130.             }
  131.             }
  132.         },
  133.  
  134.  
  135.         // Verifica a rede na qual está conectado
  136.         connectNetwork: function(ionicPopup, Login){
  137.             connectionType = Login.connectType(ionicPopup);
  138.  
  139.             if(ionic.Platform.isAndroid()){
  140.               navigator.geolocation.watchPosition();
  141.             }
  142.  
  143.             count = 0;
  144.             if(connectionType){
  145.             // verificando o ssid está conectado
  146.             WifiWizard.getCurrentSSID(ssidHandler, fail);
  147.  
  148.             }
  149.  
  150.  
  151.             function ssidHandler(s){
  152.                 regex = new RegExp("\"", 'g');
  153.                 s = s.replace(regex, '');
  154.                 if($.inArray( s , array_redes ) != -1){
  155.                     $("#conectStatus").val("2");
  156.                     $(" #status_wifi").text('Rede disponível');
  157.                     dados.nomeRede = s;
  158.                     if(dados.id == '' ||$(".enter_status").val() == "Tentar Novamente"){
  159.                         $(".spinner-click").css('visibility','hidden');
  160.                     }
  161.  
  162.                      $(".enter_status").val("Conectar");
  163.                 }else{
  164.                     if(ionic.Platform.isIOS()){
  165.                        ionicPopup.alert({title:'Aviso',template:'Conecte-se a uma Rede Wifi Unisinos'});
  166.                        $("#conectStatus").val("-1");
  167.                        $("#status_wifi").text("Sem rede disponível");
  168.                        $(".enter_status").val("Tentar Novamente");
  169.                        $(".spinner-click").css('visibility','hidden');
  170.                     }
  171.                     else{
  172.                     cordova.plugins.diagnostic.isGpsLocationEnabled(winn,fail);
  173.                     }
  174.                 }
  175.             }
  176.             function winn(pos){
  177.  
  178.                 if(!pos && count == 0){
  179.                     ionicPopup.alert({title:'Aviso',template:'O GPS não está ativo! <br/> É necessário ativá-lo para encontrar as redes Unisinos mais próximas.'});
  180.                     $(".spinner-click").css('visibility','hidden');
  181.                     count++;
  182.                 }
  183.                 else{
  184.                      Login.scanNetwork(ionicPopup);
  185.                 }
  186.             }
  187.             function fail(s){
  188.                 ionicPopup.alert({title:'Aviso',template:'fail network or GPS '+s});
  189.             }
  190.         },
  191.  
  192.         // breve validação do usuário
  193.         userValidation: function(user,password,ionicPopup){
  194.             if(( user == undefined || user.trim() == "" ) || (password == undefined || password.trim() == "")){
  195.                 ionicPopup.alert({title:'Erro',template:'Usuário ou senha não foram preenchidos'});
  196.                 $(".spinner-click").css('visibility','hidden');
  197.                 return false;
  198.             }
  199.             else{
  200.                 dados.nome  = user;
  201.                 dados.senha = password;
  202.                 localStorage.setItem('user',''+b64EncodeUnicode(user));
  203.                 localStorage.setItem('password',''+b64EncodeUnicode(password));
  204.                 return true;
  205.             }
  206.             function b64EncodeUnicode(str) {
  207.                     return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) {
  208.                     return String.fromCharCode('0x' + p1);
  209.                 }));
  210.             }
  211.         },
  212.          b64DecodeUnicode: function b64DecodeUnicode(str) {
  213.             return decodeURIComponent(Array.prototype.map.call(atob(str), function(c) {
  214.                return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
  215.             }).join(''));
  216.          },
  217.     // verifica se o usuário está autenticado
  218.         searchResult: function(Login, ionicPopup){
  219.  
  220.             Login.connectNetwork(ionicPopup,Login);
  221.             urlDestiny = conf.URL_DESTINY;
  222.             user = Login.b64DecodeUnicode(localStorage.getItem('user'));
  223.             $.get(urlDestiny,function(response,status){
  224.  
  225.                 controle = $("#controle_wifi", response).val();
  226.                 if(controle == 1 && $("#conectStatus").val() == "2"){
  227.                     $("#conectStatus").val("1");
  228.                     $(".loginlistreconect").css('display','inline-block');
  229.                     $(".loginlist").css('display','none');
  230.                     $(".label_user").html("Olá, "+user);
  231.                     $("#status_wifi").text("Você está conectado");
  232.                     $(".outro_usuario").css('display', 'inline-block');
  233.                     $(".enter_status").css("visibility","hidden");
  234.                     $(".label_user").css('font-size','35px');
  235.                     $(".spinner-click").css('visibility','hidden');
  236.                     $(".logo-superior img").css('margin-top','15%');
  237.                 }
  238.             });
  239.         },
  240.     // envia os dados, usuario e credenciais, para o enderço indicado
  241.         sendData: function(user,password,Login, ionicPopup){
  242.             urlDestiny = conf.URL_DESTINY;
  243.             user = Login.b64DecodeUnicode(user);
  244.             password = Login.b64DecodeUnicode(password);
  245.             // Tentando acessar o portal unisinos, se não conseguir pegar os dados da url
  246.             $.get(urlDestiny,function(response,status){
  247.                 var controle = $("#controle_wifi", response).val();
  248.                 if(controle == 1 ){
  249.                     $("#conectStatus").val("1");
  250.                     $(".loginlistreconect").css('display','inline-block');
  251.                     $(".loginlist").css('display','none');
  252.                     $(".label_user").html("Olá, "+user);
  253.                     $("#status_wifi").text("Você está conectado");
  254.                     $(".outro_usuario").css('display', 'inline-block');
  255.                     $(".enter_status").css("visibility","hidden");
  256.                     $(".label_user").css('font-size','35px');
  257.                     $(".spinner-click").css('visibility','hidden');
  258.                     $(".logo-superior img").css('margin-top','15%');
  259.                 }else{
  260.                     rede = $('#rede', response).val();
  261.                     ip = $('#ewc_ip', response).val();
  262.                     port =  $('#ewc_port', response).val();
  263.                     token =  $('#token', response).val();
  264.                     dest = $('#dest', response).val();
  265.                     /** enviando os dados recolhidos junto com o usuário e senha
  266.                      para a url abaixo */
  267.                     $.post( "https://wifiauth.asav.org.br/"+rede+"/login.php", {
  268.                         userid: user,
  269.                         passwd: password,
  270.                         ewc_ip: ip,
  271.                         ewc_port: port,
  272.                         token: token,
  273.                         dest: dest,
  274.                         rede:  rede,
  275.                         },
  276.                         function(response){
  277.  
  278.                             var controlle = $("#controle_wifi", response).val();
  279.                             var error = $('#error', response).text();
  280.                             if(error.trim() == "Usuário ou senha inválido."){
  281.                                 ionicPopup.alert({title:'Erro',template: ''+error.trim()});
  282.                                 localStorage.clear();
  283.                                 $(".spinner-click").css('visibility','hidden');
  284.                                 Login.screenUpdate(Login,ionicPopup);
  285.                             }else if(controlle == 1){
  286.                                 $("#conectStatus").val("1");
  287.                                 $(".loginlistreconect").css('display','inline-block');
  288.                                 $(".loginlist").css('display','none');
  289.                                 $(".label_user").html("Olá, "+user);
  290.                                 $("#status_wifi").text("Você está conectado");
  291.                                 $(".outro_usuario").css('display', 'inline-block');
  292.                                 $(".enter_status").css("visibility","hidden");
  293.                                 $(".label_user").css('font-size','35px');
  294.                                 $(".spinner-click").css('visibility','hidden');
  295.                                 $(".logo-superior img").css('margin-top','15%');
  296.                             }else{
  297.                                  // Tentando acessar o portal unisinos, se não conseguir pegar os dados da url
  298.                                 $.get(urlDestiny,function(response,status){
  299.                                     var controle = $("#controle_wifi", response).val();
  300.  
  301.                                     if(controle == 1 ){
  302.                                         $("#conectStatus").val("1");
  303.                                         $(".loginlistreconect").css('display','inline-block');
  304.                                         $(".loginlist").css('display','none');
  305.                                         $(".label_user").html("Olá, "+user);
  306.                                         $("#status_wifi").text("Você está conectado");
  307.                                         $(".outro_usuario").css('display', 'inline-block');
  308.                                         $(".enter_status").css("visibility","hidden");
  309.                                         $(".label_user").css('font-size','35px');
  310.                                         $(".spinner-click").css('visibility','hidden');
  311.                                         $(".logo-superior img").css('margin-top','15%');
  312.                                     }else{
  313.                                         ionicPopup.alert({title:'Aviso',template:'Falha ao autenticar, tente novamente'});
  314.                                         $(".spinner-click").css('visibility','hidden');
  315.                                     }
  316.                                 });
  317.                             }
  318.                         }
  319.  
  320.                     );
  321.                 }
  322.             });
  323.         },
  324.  
  325.     // Verifica a conexão e se o usuário está preenchido e então chama o método de envio de dados
  326.         authenticate: function(user,password,Login,ionicPopup){
  327.             dados.id = 1;
  328.             Login.connectNetwork(ionicPopup,Login);
  329.             userLocal = localStorage.getItem("user");
  330.             passwordLocal = localStorage.getItem("password");
  331.  
  332.  
  333.             if(($("#conectStatus").val() == "2") || ($("#conectStatus").val() == "0")){
  334.                if((userLocal == undefined || userLocal == "") || (passwordLocal == undefined || passwordLocal == "")){
  335.                     userValidation = Login.userValidation(user,password,ionicPopup);
  336.                     userLocal = localStorage.getItem("user");
  337.                     passwordLocal = localStorage.getItem("password");
  338.                     Login.sendData(userLocal,passwordLocal,Login,ionicPopup);
  339.                 }
  340.                 else{
  341.                     Login.sendData(userLocal,passwordLocal,Login,ionicPopup);
  342.                 }
  343.             }
  344.         },
  345.         // altera o layout de acordo com o localStorage
  346.         screenUpdate: function(Login, ionicPopup){
  347.             userLocal = localStorage.getItem("user");
  348.             passwordLocal = localStorage.getItem("password");
  349.  
  350.             // verifica se se o localstorage está sem registro e então habilita a tela de autenticação
  351.             if((userLocal == undefined || userLocal == "" || userLocal == null) ||
  352.              (passwordLocal == undefined || passwordLocal == "" || passwordLocal == null)){
  353.                 $(".loginlistreconect").css('display','none');
  354.                 $(".loginlist").css('display','inline-block');
  355.                 $(".enter").css('display','inline-block');
  356.                 $(".outro_usuario").css('display', 'none');
  357.                 $(".user").val("");
  358.                 $(".pass").val("");
  359.                 $("#conectStatus").val("0");
  360.                 $(".spinner-click").css('visibility','hidden');
  361.                 // faz a verificação se o dispositivo é IOS ou não e coloca a respectiva mensagem.
  362.                 if(ionic.Platform.isIOS()){
  363.                     $(".mensagem_login").text("Após selecionar a rede wifi Unisinos, faça login com seu usuário do Minha Unisinos." );
  364.                 }else{
  365.                     $(".mensagem_login").text("A rede Unisinos será selecionada automaticamente. Conecte com seu usuário Minha Unisinos." );
  366.                 }
  367.             }else{
  368.                 $(".loginlistreconect").css('display','inline-block');
  369.                 $(".loginlist").css('display','none');
  370.                 dados.nome = localStorage.getItem('user');
  371.                 dados.senha = localStorage.getItem('senha');
  372.                 $(".label_user").html("Olá, "+Login.b64DecodeUnicode(userLocal));
  373.                 $(".outro_usuario").css('display', 'inline-block');
  374.                 $(".logo-superior img").css('margin-top','15%');
  375.                 Login.searchResult(Login,ionicPopup);
  376.             }
  377.         },
  378.         // limpa os dados e se desconecta da rede unisinos
  379.         connectOther: function(Login,ionicPopup){
  380.             localStorage.clear();
  381.             Login.screenUpdate(Login,ionicPopup);
  382.  
  383.             if(ionic.Platform.isAndroid()){
  384.             WifiWizard.disconnectNetwork(dados.nomeRede, win, fail);
  385.             }
  386.             $(".loginlistreconect").css('display','none');
  387.             $(".loginlist").css('display','inline-block');
  388.             $(".enter").css('background-color','#24297a');
  389.             $(".enter").css('display','inline-block');
  390.             $(".outro_usuario").css('display', 'none');
  391.             $(".user").val("");
  392.             $(".pass").val("");
  393.             $("#conectStatus").val("0");
  394.             $(".logo-superior img").css('margin-top','10%');
  395.  
  396.             function fail(e){
  397.                 if(ionic.Platform.isAndroid()){
  398.                     ionicPopup.alert({title:'Erro',template:'Não foi possível se desconectar da rede Unisinos'});
  399.                 }
  400.             }
  401.             function win(e){
  402.             }
  403.         },
  404.  
  405.  
  406.         // redireciona para a página de login
  407.         entendi: function(){
  408.             $(".entendi").css('border-top','2px solid  #e08700');
  409.             window.open("index.html#/tab/login");
  410.             $(".entendi").css('border-top','none');
  411.         },
  412.         // verifica se há dados salvos então abre a página de login
  413.         openPage: function(){
  414.  
  415.             if(localStorage.getItem("user") !== "" && localStorage.getItem("user") !== null && localStorage.getItem("user") !== undefined ){
  416.                 window.location.href = "index.html#/tab/login";
  417.             }
  418.         },
  419.     };
  420. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement