Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- angular.module('starter.services', [])
- .factory('Login', function() {
- var dados = {
- nome: '',
- senha: '',
- id: '',
- nomeRede: '',
- };
- var conf = new Config_wifi();
- var array_redes = conf.REDES_WIFI;
- return{
- /**
- o valor da label conectstatus podem ser:
- -1 = sem rede disponível;
- 0 = verificando rede;
- 1 = conectado;
- 2 = rede disponível.
- */
- // Verifica o tipo de conexão e se a conexão wifi está ativa
- connectType: function(ionicPopup){
- cordova.plugins.diagnostic.isWifiEnabled(win, fail);
- var conect = navigator.connection.type;
- var states = {};
- states[Connection.ETHERNET] = 'Ethernet connection';
- states[Connection.WIFI] = 'WiFi connection';
- states[Connection.CELL_2G] = 'Cell 2G connection';
- states[Connection.CELL_3G] = 'Cell 3G connection';
- states[Connection.CELL_4G] = 'Cell 4G connection';
- states[Connection.CELL] = 'Cell generic connection';
- //compara o texto da conexão com Wifi Connection
- if(states[conect] == 'WiFi connection'){
- return true;
- }
- else{
- if(ionic.Platform.isIOS()){
- ionicPopup.alert({title:'Aviso',template:'Verifique se você está conectado a Rede Wifi '});
- return null;
- }
- }
- function win(e){
- // O valor de "e" pode ser 1 para wifi ativado e 0 para wifi desativado
- if(e === 0){
- if(ionic.Platform.isIOS()){
- ionicPopup.alert({title:'Aviso',template:'Sua rede wifi está desativada, por favor ative e tente novamente'});
- $(".spinner-click").css('visibility','hidden');
- }
- else{
- // liga o Wifi
- $("#status_wifi").text("Verificando o Wifi");
- $(".enter_status").css('visibility','hidden');
- WifiWizard.setWifiEnabled(true, sucess, fail);
- function sucess(e){
- setTimeout(function(){
- console.log('--> '+e);
- $("#status_wifi").text('');
- $(".enter_status").css('visibility','visible');
- $(".enter_status").val("Verificar Rede");
- $(".spinner-click").css('visibility','hidden');
- },2000);
- }
- }
- }
- }
- function fail(e){
- ionicPopup.alert({title:'Aviso',template:'Não foi possível identificar a conexão wifi, por favor ative e tente novamente'});
- }
- },
- // scaneando as redes próximas
- scanNetwork: function(ionicPopup){
- WifiWizard.startScan(successNetwork, failNetwork);
- function successNetwork(e){
- window.setTimeout(function(){
- getScanResult();
- }, 1000);
- }
- function failNetwork(e){
- ionicPopup.alert({title:'Erro',template:'Não foi possível scanear as redes, verifique se as permissões estão habilitadas.'});
- }
- function getScanResult(){
- WifiWizard.getScanResults(listHandler, failNetwork);
- }
- // seta os SSIDs em um array
- function listHandler(a){
- var position ;
- var ssidReach = null;
- var network_array = [];
- for(var i=0; i < a.length; i++){
- network_array.push(a[i].SSID);
- for(var j = 0 ; j <= i ; j++){
- if($.inArray(network_array[j], array_redes ) != -1 ){
- position = $.inArray(network_array[j], array_redes );
- ssidReach = true;
- }
- }
- }
- if(ssidReach){
- // conecta na rede unisinos
- WifiWizard.connectNetwork(array_redes[position], win, fail);
- }else{
- $("#conectStatus").val("-1");
- $("#status_wifi").text('Sem rede disponível');
- $(".enter_status").val("Tentar Novamente");
- $(".spinner-click").css('visibility','hidden');
- }
- function win(e){
- $("#conectStatus").val("2")
- $("#status_wifi").text('Rede disponível');
- $(".enter_status").val("Conectar");
- $(".spinner-click").css('visibility','hidden');
- }
- function fail(e){
- ionicPopup.alert({title:'Erro',template:'Não foi possível conectar-se a rede Unisinos.'});
- }
- }
- },
- // Verifica a rede na qual está conectado
- connectNetwork: function(ionicPopup, Login){
- connectionType = Login.connectType(ionicPopup);
- if(ionic.Platform.isAndroid()){
- navigator.geolocation.watchPosition();
- }
- count = 0;
- if(connectionType){
- // verificando o ssid está conectado
- WifiWizard.getCurrentSSID(ssidHandler, fail);
- }
- function ssidHandler(s){
- regex = new RegExp("\"", 'g');
- s = s.replace(regex, '');
- if($.inArray( s , array_redes ) != -1){
- $("#conectStatus").val("2");
- $(" #status_wifi").text('Rede disponível');
- dados.nomeRede = s;
- if(dados.id == '' ||$(".enter_status").val() == "Tentar Novamente"){
- $(".spinner-click").css('visibility','hidden');
- }
- $(".enter_status").val("Conectar");
- }else{
- if(ionic.Platform.isIOS()){
- ionicPopup.alert({title:'Aviso',template:'Conecte-se a uma Rede Wifi Unisinos'});
- $("#conectStatus").val("-1");
- $("#status_wifi").text("Sem rede disponível");
- $(".enter_status").val("Tentar Novamente");
- $(".spinner-click").css('visibility','hidden');
- }
- else{
- cordova.plugins.diagnostic.isGpsLocationEnabled(winn,fail);
- }
- }
- }
- function winn(pos){
- if(!pos && count == 0){
- ionicPopup.alert({title:'Aviso',template:'O GPS não está ativo! <br/> É necessário ativá-lo para encontrar as redes Unisinos mais próximas.'});
- $(".spinner-click").css('visibility','hidden');
- count++;
- }
- else{
- Login.scanNetwork(ionicPopup);
- }
- }
- function fail(s){
- ionicPopup.alert({title:'Aviso',template:'fail network or GPS '+s});
- }
- },
- // breve validação do usuário
- userValidation: function(user,password,ionicPopup){
- if(( user == undefined || user.trim() == "" ) || (password == undefined || password.trim() == "")){
- ionicPopup.alert({title:'Erro',template:'Usuário ou senha não foram preenchidos'});
- $(".spinner-click").css('visibility','hidden');
- return false;
- }
- else{
- dados.nome = user;
- dados.senha = password;
- localStorage.setItem('user',''+b64EncodeUnicode(user));
- localStorage.setItem('password',''+b64EncodeUnicode(password));
- return true;
- }
- function b64EncodeUnicode(str) {
- return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) {
- return String.fromCharCode('0x' + p1);
- }));
- }
- },
- b64DecodeUnicode: function b64DecodeUnicode(str) {
- return decodeURIComponent(Array.prototype.map.call(atob(str), function(c) {
- return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
- }).join(''));
- },
- // verifica se o usuário está autenticado
- searchResult: function(Login, ionicPopup){
- Login.connectNetwork(ionicPopup,Login);
- urlDestiny = conf.URL_DESTINY;
- user = Login.b64DecodeUnicode(localStorage.getItem('user'));
- $.get(urlDestiny,function(response,status){
- controle = $("#controle_wifi", response).val();
- if(controle == 1 && $("#conectStatus").val() == "2"){
- $("#conectStatus").val("1");
- $(".loginlistreconect").css('display','inline-block');
- $(".loginlist").css('display','none');
- $(".label_user").html("Olá, "+user);
- $("#status_wifi").text("Você está conectado");
- $(".outro_usuario").css('display', 'inline-block');
- $(".enter_status").css("visibility","hidden");
- $(".label_user").css('font-size','35px');
- $(".spinner-click").css('visibility','hidden');
- $(".logo-superior img").css('margin-top','15%');
- }
- });
- },
- // envia os dados, usuario e credenciais, para o enderço indicado
- sendData: function(user,password,Login, ionicPopup){
- urlDestiny = conf.URL_DESTINY;
- user = Login.b64DecodeUnicode(user);
- password = Login.b64DecodeUnicode(password);
- // Tentando acessar o portal unisinos, se não conseguir pegar os dados da url
- $.get(urlDestiny,function(response,status){
- var controle = $("#controle_wifi", response).val();
- if(controle == 1 ){
- $("#conectStatus").val("1");
- $(".loginlistreconect").css('display','inline-block');
- $(".loginlist").css('display','none');
- $(".label_user").html("Olá, "+user);
- $("#status_wifi").text("Você está conectado");
- $(".outro_usuario").css('display', 'inline-block');
- $(".enter_status").css("visibility","hidden");
- $(".label_user").css('font-size','35px');
- $(".spinner-click").css('visibility','hidden');
- $(".logo-superior img").css('margin-top','15%');
- }else{
- rede = $('#rede', response).val();
- ip = $('#ewc_ip', response).val();
- port = $('#ewc_port', response).val();
- token = $('#token', response).val();
- dest = $('#dest', response).val();
- /** enviando os dados recolhidos junto com o usuário e senha
- para a url abaixo */
- $.post( "https://wifiauth.asav.org.br/"+rede+"/login.php", {
- userid: user,
- passwd: password,
- ewc_ip: ip,
- ewc_port: port,
- token: token,
- dest: dest,
- rede: rede,
- },
- function(response){
- var controlle = $("#controle_wifi", response).val();
- var error = $('#error', response).text();
- if(error.trim() == "Usuário ou senha inválido."){
- ionicPopup.alert({title:'Erro',template: ''+error.trim()});
- localStorage.clear();
- $(".spinner-click").css('visibility','hidden');
- Login.screenUpdate(Login,ionicPopup);
- }else if(controlle == 1){
- $("#conectStatus").val("1");
- $(".loginlistreconect").css('display','inline-block');
- $(".loginlist").css('display','none');
- $(".label_user").html("Olá, "+user);
- $("#status_wifi").text("Você está conectado");
- $(".outro_usuario").css('display', 'inline-block');
- $(".enter_status").css("visibility","hidden");
- $(".label_user").css('font-size','35px');
- $(".spinner-click").css('visibility','hidden');
- $(".logo-superior img").css('margin-top','15%');
- }else{
- // Tentando acessar o portal unisinos, se não conseguir pegar os dados da url
- $.get(urlDestiny,function(response,status){
- var controle = $("#controle_wifi", response).val();
- if(controle == 1 ){
- $("#conectStatus").val("1");
- $(".loginlistreconect").css('display','inline-block');
- $(".loginlist").css('display','none');
- $(".label_user").html("Olá, "+user);
- $("#status_wifi").text("Você está conectado");
- $(".outro_usuario").css('display', 'inline-block');
- $(".enter_status").css("visibility","hidden");
- $(".label_user").css('font-size','35px');
- $(".spinner-click").css('visibility','hidden');
- $(".logo-superior img").css('margin-top','15%');
- }else{
- ionicPopup.alert({title:'Aviso',template:'Falha ao autenticar, tente novamente'});
- $(".spinner-click").css('visibility','hidden');
- }
- });
- }
- }
- );
- }
- });
- },
- // Verifica a conexão e se o usuário está preenchido e então chama o método de envio de dados
- authenticate: function(user,password,Login,ionicPopup){
- dados.id = 1;
- Login.connectNetwork(ionicPopup,Login);
- userLocal = localStorage.getItem("user");
- passwordLocal = localStorage.getItem("password");
- if(($("#conectStatus").val() == "2") || ($("#conectStatus").val() == "0")){
- if((userLocal == undefined || userLocal == "") || (passwordLocal == undefined || passwordLocal == "")){
- userValidation = Login.userValidation(user,password,ionicPopup);
- userLocal = localStorage.getItem("user");
- passwordLocal = localStorage.getItem("password");
- Login.sendData(userLocal,passwordLocal,Login,ionicPopup);
- }
- else{
- Login.sendData(userLocal,passwordLocal,Login,ionicPopup);
- }
- }
- },
- // altera o layout de acordo com o localStorage
- screenUpdate: function(Login, ionicPopup){
- userLocal = localStorage.getItem("user");
- passwordLocal = localStorage.getItem("password");
- // verifica se se o localstorage está sem registro e então habilita a tela de autenticação
- if((userLocal == undefined || userLocal == "" || userLocal == null) ||
- (passwordLocal == undefined || passwordLocal == "" || passwordLocal == null)){
- $(".loginlistreconect").css('display','none');
- $(".loginlist").css('display','inline-block');
- $(".enter").css('display','inline-block');
- $(".outro_usuario").css('display', 'none');
- $(".user").val("");
- $(".pass").val("");
- $("#conectStatus").val("0");
- $(".spinner-click").css('visibility','hidden');
- // faz a verificação se o dispositivo é IOS ou não e coloca a respectiva mensagem.
- if(ionic.Platform.isIOS()){
- $(".mensagem_login").text("Após selecionar a rede wifi Unisinos, faça login com seu usuário do Minha Unisinos." );
- }else{
- $(".mensagem_login").text("A rede Unisinos será selecionada automaticamente. Conecte com seu usuário Minha Unisinos." );
- }
- }else{
- $(".loginlistreconect").css('display','inline-block');
- $(".loginlist").css('display','none');
- dados.nome = localStorage.getItem('user');
- dados.senha = localStorage.getItem('senha');
- $(".label_user").html("Olá, "+Login.b64DecodeUnicode(userLocal));
- $(".outro_usuario").css('display', 'inline-block');
- $(".logo-superior img").css('margin-top','15%');
- Login.searchResult(Login,ionicPopup);
- }
- },
- // limpa os dados e se desconecta da rede unisinos
- connectOther: function(Login,ionicPopup){
- localStorage.clear();
- Login.screenUpdate(Login,ionicPopup);
- if(ionic.Platform.isAndroid()){
- WifiWizard.disconnectNetwork(dados.nomeRede, win, fail);
- }
- $(".loginlistreconect").css('display','none');
- $(".loginlist").css('display','inline-block');
- $(".enter").css('background-color','#24297a');
- $(".enter").css('display','inline-block');
- $(".outro_usuario").css('display', 'none');
- $(".user").val("");
- $(".pass").val("");
- $("#conectStatus").val("0");
- $(".logo-superior img").css('margin-top','10%');
- function fail(e){
- if(ionic.Platform.isAndroid()){
- ionicPopup.alert({title:'Erro',template:'Não foi possível se desconectar da rede Unisinos'});
- }
- }
- function win(e){
- }
- },
- // redireciona para a página de login
- entendi: function(){
- $(".entendi").css('border-top','2px solid #e08700');
- window.open("index.html#/tab/login");
- $(".entendi").css('border-top','none');
- },
- // verifica se há dados salvos então abre a página de login
- openPage: function(){
- if(localStorage.getItem("user") !== "" && localStorage.getItem("user") !== null && localStorage.getItem("user") !== undefined ){
- window.location.href = "index.html#/tab/login";
- }
- },
- };
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement