Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #este es el metodo para el registro del usuario utilizando el boton de registro en mi aplicación con un formulario de registro
- private void ButtonRegister_Click(object sender, RoutedEventArgs e)
- {
- bool isValid = false;
- //comprobacion de si la clave tiene un minimo de 3 caracteres comn un if
- if (PasswordBoxPass.Password.Length >= 3)
- {
- //aqui se hace otra comprobacion con otro if para ver si los password coinciden
- if (PasswordBoxPass.Password == PasswordBoxConfirmation.Password)
- {
- //comprobnar que el texto puesto en la textbox es un correo electronico y si no lo es no dejar seguir el proceso de registro y dar un error con un mensaje
- //aqui lo que hago una vez ya conectado con Windowsazure es introducir datos una vez que el usuario le al boton register
- string password = PasswordBoxPass.Password;
- RegexUtil RegexUtil = new RegexUtil();
- //el metodo isValidEmail me devolvera false o true dependiendo de si la cadena la toma como buena o mala si tiene o no formato de email
- isValid = RegexUtil.IsValidEmail(TextBoxEmail.Text);
- if (isValid == true)
- {
- //para introducir el dato del usuario en el servicio movil
- try
- {
- //aqui probaremos tambien a cifrar la clave
- //lo que haremos sera el metodo parse para transformar la string en Byte
- //byte password = byte.Parse(PasswordBoxPass.Password);ç
- /* este codigo no me sirve para generar el hash de la clave que es lo que vamos a almacenar junto con el codigo salt
- byte[] password = new byte[PasswordBoxPass.Password.Length];
- for (int i = 0; i < PasswordBoxPass.Password.Length; i++)//haz un ciclo para llenar el arreglo
- {
- password[i] = byte.Parse(PasswordBoxPass.Password[i].ToString());//conversion!!! la variable i representa la posicion en k se encuentra
- }
- */
- byte[] salt = CryptoPassHttp.GetSalt();
- byte[] hash = CryptoPassHttp.GenerateHash(PasswordBoxPass.Password, salt);
- //en este metodo lo que estoy obteniendo es el usuario para insertarlo en la base de datos
- usuarios user = CryptoPassHttp.GetSecureUserModel(TextBoxName.Text, password, TextBoxEmail.Text, salt);
- //realizar el salvado de datos del usuario a registrar con los datos que tenemos
- //await userTable.InsertAsync(user);
- //sincronizar los elementos de la tabla
- //este elemento es el que falla
- //items = await userTable.ToCollectionAsync();
- //user.Id = items.Count + 1;
- //para actualizar la tabla
- //await userTable.UpdateAsync(user);
- JsonObject jsonObject = new JsonObject();
- //vamos a ver la forma de trabajar con texto con json segun el ejemplo de Microsoft y adaprlo a mi codigo segun lo que tenga que enviar
- jsonObject["nombre"] = JsonValue.CreateStringValue(TextBoxName.Text);
- jsonObject["email"] = JsonValue.CreateStringValue(TextBoxEmail.Text);
- jsonObject["hash"] = JsonValue.CreateStringValue(user.hash);
- jsonObject["salt"] = JsonValue.CreateStringValue(user.salt);
- string jsonString = jsonObject.Stringify();
- /*
- Task<bool> Resultado = CryptoPassHttp.GetUserFromDatabase(TextBoxEmail.Text, jsonObject);
- if (Resultado.Result)
- {
- }
- else
- {
- }
- */
- Task<bool> users = CryptoPassHttp.RegisterUser(user, jsonString);
- //aqui ya se va al otro XAML en la finalizacion del programa se ira al de aceptarlos terminos y condiciones del programa
- /*
- Task<usuarios> userpass = CryptoPassHttp.VerifyLogin(user.email, password);
- //
- if (users.Result == false)
- {
- MessageBox.Show("user exist in the database, choose other user", "Information", MessageBoxButton.OK);
- }
- else if (userpass == null)
- {
- MessageBox.Show("Password incorrect", "Information", MessageBoxButton.OK);
- }
- */
- //aqui ya te lleva a la ventana para trabajar con el programa
- NavigationService.Navigate(new Uri("/PivotProgram.xaml" + TextBoxEmail.Text, UriKind.Relative));
- //usuarios usuario = new usuarios { usuario = TextBoxUser.Text, hash = PasswordBoxPass.Password, email = TextBoxEmail.Text };
- //App.MobileService.GetTable<usuarios>().InsertAsync(usuario);
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- else
- {
- MessageBox.Show("the format e-mail is not correct", "Information", MessageBoxButton.OK);
- }
- }
- else
- {
- MessageBox.Show("password fail must be equal", "Information", MessageBoxButton.OK);
- PasswordBoxPass.SelectAll();
- PasswordBoxConfirmation.Password = "";
- PasswordBoxPass.Focus();
- }
- }
- //comprobar primero que sean la misma clave en las 2 passwordbox
- }
- #este es el metodo dentro del objeto que realiza el registro de usuario llamado CryptoPassHttp
- public async static Task<bool> RegisterUser(usuarios user, string jsonString)
- {
- /*
- aqui tendremos que crear el objeto httpclient y mandarle por post el objeto json
- */
- // Add a user-agent header
- //encapsular en un formato de texto valido el jsonObject
- HttpResponseMessage httpResponseMessage;
- HttpClient httpClient = new HttpClient();
- //HttpResponseMessage httpResponseMessage = new HttpResponseMessage();
- Uri uri = new Uri("http://192.168.1.2/laravelplan/public/api/rest/users");
- //var headers = httpClient.DefaultRequestHeaders;
- //headers.UserAgent.ParseAdd("ie");
- //headers.UserAgent.ParseAdd("Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");
- //comprobaamos que la conexion existe y que el servidor funciona basicamente usamos esa direccion para ver si nos responde algo
- try
- {
- #aqui tengo el problema despues de este codigo GetAsync(uri) me salta al codigo de abajo no lo se porque, gracias.
- httpResponseMessage = await httpClient.GetAsync(uri);
- if (httpResponseMessage.IsSuccessStatusCode)
- {
- //aqui ya mando el jsonString al servicio REST
- Uri uristore = new Uri("http://192.168.1.2/laravelplan/public/api/rest/users/store");
- HttpStringContent httpStringContent = new HttpStringContent(jsonString);
- try
- {
- httpResponseMessage = await httpClient.PostAsync(uri, httpStringContent);
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- else
- {
- return false;
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message, "Information", MessageBoxButton.OK);
- }
- //creamoms el jaon object
- return true;
- }
- #el codigo este me salta cuando
- #despues de colocar el codigo anterior me salta al app.xaml.cs este
- private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
- {
- if (Debugger.IsAttached)
- {
- // A navigation has failed; break into the debugger
- Debugger.Break();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement