private async void Save() { try { if (SelectedOperator == null) { Alert.Show("Debe seleccionar un operador", "Aceptar"); return; } if (string.IsNullOrWhiteSpace(OperatorPassword)) { Alert.Show("Debe ingresar el password del operador", "Aceptar"); return; } UserDialogs.Instance.ShowLoading("Validando operador...", MaskType.Black); ApiSrv = new Services.ApiService(ApiConsult.ApiAuth); if (!await ApiIsOnline()) { UserDialogs.Instance.HideLoading(); Toast.ShowError(AlertMessages.Error); return; } else { if (!await GetTokenSuccess()) { UserDialogs.Instance.HideLoading(); Toast.ShowError(AlertMessages.Error); return; } else { TokenPbAuth = TokenGet; LoginPb loginPb = new LoginPb { Username = this.SelectedOperator.IdUser, Password = this.OperatorPassword }; Response resultValidateOperator = await ApiSrv.AuthenticateProbath(TokenPbAuth.Key, loginPb); if (!resultValidateOperator.IsSuccess) { UserDialogs.Instance.HideLoading(); Toast.ShowError(resultValidateOperator.Message); return; } else { OperatorObject operatorObject = JsonConvert.DeserializeObject <OperatorObject>(Crypto.DecodeString(resultValidateOperator.Data)); if (!operatorObject.IsValid) { UserDialogs.Instance.HideLoading(); Alert.Show(AlertMessages.UserInvalid); return; } else { UserDialogs.Instance.HideLoading(); UserDialogs.Instance.ShowLoading("Validando instancias...", MaskType.Black); ApiSrv = new Services.ApiService(ApiConsult.ApiMenuB); if (!TokenValidator.IsValid(TokenMenuB)) { if (!await ApiIsOnline()) { UserDialogs.Instance.HideLoading(); Toast.ShowError(AlertMessages.Error); return; } else { if (!await GetTokenSuccess()) { UserDialogs.Instance.HideLoading(); Toast.ShowError(AlertMessages.Error); return; } else { TokenMenuB = TokenGet; } } } StringBuilder Instances = new StringBuilder(); StringBuilder InstancesRunning = new StringBuilder(); foreach (InstanceRunningItem instanceRunningItem in InstanceRunningItems) { Instances.Append(instanceRunningItem.IdInstance); Instances.Append(","); if (string.Compare(instanceRunningItem.RunningDisplay, "SI") == 0) { InstancesRunning.Append(instanceRunningItem.IdInstance); InstancesRunning.Append(","); } } if (!AppHelper.UserIsSupervisor(operatorObject)) { OperatorChangeUserIsInAllInstancesQueryValues operatorChangeUserIsInAllInstancesQueryValues = new OperatorChangeUserIsInAllInstancesQueryValues() { IdLog = this.LogItem.IdLog, IdUser = PbUser.IdUser, Instances = Instances.ToString() }; Response resultOperatorChangeUserIsInAllInstances = await ApiSrv.GetOperatorChangeUserIsInAllInstances(TokenMenuB.Key, operatorChangeUserIsInAllInstancesQueryValues); if (!resultOperatorChangeUserIsInAllInstances.IsSuccess) { UserDialogs.Instance.HideLoading(); Toast.ShowError(AlertMessages.Error); return; } else { UserInInstances = JsonConvert.DeserializeObject <List <OperatorChangeUserIsInAllInstances> >(Crypto.DecodeString(resultOperatorChangeUserIsInAllInstances.Data)); if (!UserInInstances[0].UserIsInAllInstances) { UserDialogs.Instance.HideLoading(); Alert.Show(string.Format("Usted no tiene permisos para ejecutar en todas las instancias que tiene asignada el operador: {0}", PbUser.IdUser), "Aceptar"); return; } } } if (InstancesRunning.Length > 0) { UserDialogs.Instance.HideLoading(); UserDialogs.Instance.ShowLoading("Cambiando al operador seleccionado...", MaskType.Black); ApiSrv = new Services.ApiService(ApiConsult.ApiMenuB); if (!TokenValidator.IsValid(TokenMenuB)) { if (!await ApiIsOnline()) { UserDialogs.Instance.HideLoading(); Toast.ShowError(AlertMessages.Error); return; } else { if (!await GetTokenSuccess()) { UserDialogs.Instance.HideLoading(); Toast.ShowError(AlertMessages.Error); return; } else { TokenMenuB = TokenGet; } } } //string MyIp; //foreach (IPAddress iPAddress in Dns.GetHostAddresses(Dns.GetHostName())) //{ // MyIp = iPAddress.ToString(); //} OperatorChangeQueryValues operatorChangeQueryValues = new OperatorChangeQueryValues() { IdLog = this.LogItem.IdLog, NewIdUser = operatorObject.IdUser, Instances = Instances.ToString(), OldIdUser = PbUser.IdUser, StartDate = ConvertStartDateToSp(this.LogItem.ExecutionDateTime), ClientIp = "127.0.0.1" }; Response resultOperatorChange = await ApiSrv.GetOperatorChange(TokenMenuB.Key, operatorChangeQueryValues); if (!resultOperatorChange.IsSuccess) { UserDialogs.Instance.HideLoading(); Toast.ShowError(AlertMessages.Error); return; } else { OperatorChanges = JsonConvert.DeserializeObject <List <OperatorChange> >(Crypto.DecodeString(resultOperatorChange.Data)); if (!OperatorChanges[0].IsSuccess) { UserDialogs.Instance.HideLoading(); Alert.Show(string.Format("Ocurrió un error al intentar cambiar el operador actual por: {0}", operatorObject.IdUser), "Aceptar"); return; } this.SelectedOperator = null; this.OperatorPassword = string.Empty; UserDialogs.Instance.HideLoading(); Alert.Show(string.Format("Cambio de operador satisfactorio!"), "Aceptar"); } } else { UserDialogs.Instance.HideLoading(); Alert.Show(string.Format("No hay instancias en ejecución!"), "Aceptar"); } } } } } } catch //(Exception ex) { Toast.ShowError(AlertMessages.Error); } }
private async void Login() { if (string.IsNullOrEmpty(this.Username)) { Alert.Show("Debe ingresar un usuario"); return; } if (string.IsNullOrEmpty(this.Password)) { Alert.Show("Debe ingresar una contraseña"); return; } if (IsChecked) { if (!IsFingerPrintAvailable) { Alert.Show("Sensor de huella no disponible o no configurado."); IsChecked = false; return; } else { var request = new AuthenticationRequestConfiguration("Autenticación Biométrica", "ProBatch Mobile 2.0"); var result = await CrossFingerprint.Current.AuthenticateAsync(request); if (!result.Authenticated) { this.Username = string.Empty; this.Password = string.Empty; IsChecked = false; return; } } } ApiSrv = new Services.ApiService(ApiConsult.ApiAuth); RefreshAppConfig(); try { UserDialogs.Instance.ShowLoading("Iniciando sesión...", MaskType.Black); Response resultApiIsAvailable = await ApiSrv.ApiIsAvailable(); if (!resultApiIsAvailable.IsSuccess) { UserDialogs.Instance.HideLoading(); Toast.ShowError(resultApiIsAvailable.Message); return; } Response resultToken = await ApiSrv.GetToken(); if (!resultToken.IsSuccess) { UserDialogs.Instance.HideLoading(); Toast.ShowError(resultToken.Message); return; } else { Token token = JsonConvert.DeserializeObject <Token>(Crypto.DecodeString(resultToken.Data)); LoginPb loginPb = new LoginPb { Username = this.Username, Password = this.Password }; Response resultLoginProbatch = await ApiSrv.AuthenticateProbath(token.Key, loginPb); if (!resultLoginProbatch.IsSuccess) { UserDialogs.Instance.HideLoading(); Toast.ShowError(resultLoginProbatch.Message); return; } else { PbUser = JsonConvert.DeserializeObject <PbUser>(Crypto.DecodeString(resultLoginProbatch.Data)); if (!PbUser.IsValid) { UserDialogs.Instance.HideLoading(); //Alert.Show("Usuario y/o Password incorrectos"); this.IsEnabled = false; this.IsEnabled = true; return; } else { if (IsChecked) { Table_Config table_Config = new Table_Config { Id = 1, UrlDomain = this.UrlDomain, UrlPrefix = this.UrlPrefix, FingerPrintAllow = this.IsChecked }; if (!await DBHelper.PullAsyncAppConfig(table_Config)) { UserDialogs.Instance.HideLoading(); Toast.ShowError("No se pudo actualizar la configuración."); return; } else { Table_User table_User = new Table_User { Id = 1, Username = Crypto.EncryptString(this.Username), Password = Crypto.EncryptString(this.Password) }; if (!await DBHelper.PullAsyncProbatchCredentials(table_User)) { UserDialogs.Instance.HideLoading(); Toast.ShowError("No se pudo actualizar la configuración."); return; } else { IsVisibleLogin = false; IsVisibleFingerPrint = true; } } } UserDialogs.Instance.HideLoading(); this.Username = string.Empty; this.Password = string.Empty; MainViewModel.GetInstance().Home = new HomeViewModel(); Application.Current.MainPage = new NavigationPage(new HomePage()); Alert.Show("Bienvenido: " + PbUser.FisrtName.Trim() + ", " + PbUser.LastName.Trim() + "!", "Continuar"); } } } } catch //(Exception ex) { UserDialogs.Instance.HideLoading(); Toast.ShowError("Ocurrió un error."); return; } }
private async void FingerPrint() { try { ApiSrv = new Services.ApiService(ApiConsult.ApiAuth); RefreshAppConfig(); var request = new AuthenticationRequestConfiguration("Autenticación Biométrica", "ProBatch Mobile 2.0"); var result = await CrossFingerprint.Current.AuthenticateAsync(request); if (!result.Authenticated) { return; } UserDialogs.Instance.ShowLoading("Iniciando sesión...", MaskType.Black); Table_User tableUserFingerPrint = await DBHelper.GetAsyncProbatchCredentials(); if (tableUserFingerPrint == null) { UserDialogs.Instance.HideLoading(); Toast.ShowError("No se pudo obtener las credenciales de ProBatch"); return; } try { Response resultApiIsAvailable = await ApiSrv.ApiIsAvailable(); if (!resultApiIsAvailable.IsSuccess) { UserDialogs.Instance.HideLoading(); Toast.ShowError(resultApiIsAvailable.Message); return; } Response resultToken = await ApiSrv.GetToken(); if (!resultToken.IsSuccess) { UserDialogs.Instance.HideLoading(); Toast.ShowError(resultToken.Message); return; } else { Token token = JsonConvert.DeserializeObject <Token>(Crypto.DecodeString(resultToken.Data)); LoginPb loginPb = new LoginPb { Username = Crypto.DecodeString(tableUserFingerPrint.Username), Password = Crypto.DecodeString(tableUserFingerPrint.Password) }; Response resultLoginProbatch = await ApiSrv.AuthenticateProbath(token.Key, loginPb); if (!resultLoginProbatch.IsSuccess) { UserDialogs.Instance.HideLoading(); Toast.ShowError(resultLoginProbatch.Message); return; } else { PbUser = JsonConvert.DeserializeObject <PbUser>(Crypto.DecodeString(resultLoginProbatch.Data)); if (!PbUser.IsValid) { UserDialogs.Instance.HideLoading(); bool deleteFingerPrintRegister = await UserDialogs.Instance.ConfirmAsync("Credenciales inválidas, deseas eliminar el registro biométrico?", "AST●ProBatch®", "Si", "No"); if (deleteFingerPrintRegister) { IsChecked = false; Table_Config table_Config = new Table_Config { Id = 1, UrlDomain = this.UrlDomain, UrlPrefix = this.UrlPrefix, FingerPrintAllow = IsChecked }; if (!await DBHelper.PullAsyncAppConfig(table_Config)) { Toast.ShowError("No se pudo actualizar la configuración."); return; } else { Table_User table_User = new Table_User { Id = 1, Username = string.Empty, Password = string.Empty }; if (!await DBHelper.PullAsyncProbatchCredentials(table_User)) { Toast.ShowError("No se pudo actualizar la configuración."); return; } else { IsVisibleLogin = true; IsVisibleFingerPrint = false; } } return; } } else { if (!IsChecked) { Table_Config table_Config = new Table_Config { Id = 1, UrlDomain = this.UrlDomain, UrlPrefix = this.UrlPrefix, FingerPrintAllow = this.IsChecked }; if (!await DBHelper.PullAsyncAppConfig(table_Config)) { Toast.ShowError("No se pudo actualizar la configuración."); return; } else { Table_User table_User = new Table_User { Id = 1, Username = string.Empty, Password = string.Empty }; if (!await DBHelper.PullAsyncProbatchCredentials(table_User)) { Toast.ShowError("No se pudo actualizar la configuración."); return; } else { IsVisibleLogin = true; IsVisibleFingerPrint = false; } } } UserDialogs.Instance.HideLoading(); this.Username = string.Empty; this.Password = string.Empty; MainViewModel.GetInstance().Home = new HomeViewModel(); Application.Current.MainPage = new NavigationPage(new HomePage()); Alert.Show("Bienvenido: " + PbUser.FisrtName.Trim() + ", " + PbUser.LastName.Trim() + "!", "Continuar"); } } } } catch //(Exception ex) { UserDialogs.Instance.HideLoading(); Toast.ShowError("Ocurrió un error."); return; } } catch //(Exception ex) { Toast.ShowError("Ocurrió un error datos locales."); return; } }
public async Task <Response> AuthenticateProbath(string accessToken, LoginPb QueryValues) { return(await HttpPost(accessToken, this.ApiControllerSet, ApiMethod.Login, QueryValues)); }