Ejemplo n.º 1
0
        public async Task <Respuesta> CambiarPasswordAsync(string urlBase,
                                                           string servicePrefix,
                                                           string controller,
                                                           CambiarPasswordRequest cambiarPasswordPeticion,
                                                           string tokenType,
                                                           string accessToken)
        {
            try
            {
                var request = JsonConvert.SerializeObject(cambiarPasswordPeticion);
                var content = new StringContent(request, Encoding.UTF8, "application/json");
                var client  = new HttpClient
                {
                    BaseAddress = new Uri(urlBase)
                };

                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(tokenType, accessToken);
                var url      = $"{servicePrefix}{controller}";
                var response = await client.PostAsync(url, content);

                var answer = await response.Content.ReadAsStringAsync();

                var obj = JsonConvert.DeserializeObject <Respuesta>(answer);
                return(obj);
            }
            catch (Exception ex)
            {
                return(new Respuesta
                {
                    EsExitoso = false,
                    Mensaje = ex.Message,
                });
            }
        }
Ejemplo n.º 2
0
        public async Task <ActionResult <Usuario> > CambiarPassword([FromBody] CambiarPasswordRequest cambiarPasswordRequest)
        {
            Usuario user = modelo.CambiarPassword(cambiarPasswordRequest.password, cambiarPasswordRequest.token);

            if (user != null)
            {
                return(user);
            }
            return(Unauthorized());
        }
Ejemplo n.º 3
0
        public async Task <ActionResult <Respuesta> > CambiarPassword([FromBody] CambiarPasswordRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new Respuesta
                {
                    EsExitoso = false,
                    Mensaje = "Petición incorrecta.",
                    Resultado = null
                }));
            }

            var user = await this.usuarioHelper.GetUserByEmailAsync(request.eMail);

            if (user == null)
            {
                return(BadRequest(new Respuesta
                {
                    EsExitoso = false,
                    Mensaje = "El mail no corresponde a ningún usuario.",
                    Resultado = null
                }));
            }

            var result = await this.usuarioHelper.CambiarPasswordAsync(user, request.oldPassword, request.newPassword);

            if (!result.Succeeded)
            {
                return(BadRequest(new Respuesta
                {
                    EsExitoso = false,
                    Mensaje = result.Errors.FirstOrDefault().Description,
                    Resultado = null
                }));
            }

            return(this.Ok(new Respuesta
            {
                EsExitoso = true,
                Mensaje = "La password a sido cambiada.",
                Resultado = null
            }));
        }
Ejemplo n.º 4
0
        public async Task <Response> CambiarPassword(
            string urlBase,
            string servicePrefix,
            string controller,
            string tokenType,
            string accessToken,
            CambiarPasswordRequest cambiarPasswordRequest)
        {
            try
            {
                var request = JsonConvert.SerializeObject(cambiarPasswordRequest);
                var content = new StringContent(request, Encoding.UTF8, "application/json");
                var client  = new HttpClient();
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(tokenType, accessToken);
                client.BaseAddress = new Uri(urlBase);
                var url = string.Format("{0}{1}",
                                        servicePrefix,
                                        controller);
                var response = await client.PostAsync(url, content);

                if (!response.IsSuccessStatusCode)
                {
                    return(new Response
                    {
                        IsSuccess = false,
                    });
                }

                return(new Response
                {
                    IsSuccess = true,
                });
            }
            catch (Exception ex)
            {
                return(new Response
                {
                    IsSuccess = false,
                    Message = ex.Message,
                });
            }
        }
        private async void CambiarPassword()
        {
            if (string.IsNullOrEmpty(this.ActualPassword))
            {
                this.IsRunning = false;
                this.IsEnabled = true;

                await Application.Current.MainPage.DisplayAlert(
                    "Error",
                    "Introduzca su Contraseña.",
                    "Aceptar");

                return;
            }

            if (this.ActualPassword.Length < 8 ||
                this.ActualPassword.Length > 20)
            {
                this.IsRunning = false;
                this.IsEnabled = true;

                await Application.Current.MainPage.DisplayAlert(
                    "Error",
                    "La Contraseña debe tener entre 8 y 20 caracteres.",
                    "Aceptar");

                return;
            }

            if (!RegexUtilities.ValidarPassword(this.ActualPassword))
            {
                this.IsRunning = false;
                this.IsEnabled = true;

                await Application.Current.MainPage.DisplayAlert(
                    "Error",
                    "Las contraseñas deben tener al menos un carácter que no sea una letra ni un dígito, " +
                    "al menos una letra en minúscula ('a'-'z') y al menos una letra en mayúscula ('A'-'Z').",
                    "Aceptar");

                return;
            }

            if (this.ActualPassword != MainViewModel.GetInstance().Componente.Password)
            {
                this.IsRunning = false;
                this.IsEnabled = true;

                await Application.Current.MainPage.DisplayAlert(
                    "Error",
                    "La contraseña actual es incorrecta.",
                    "Aceptar");

                return;
            }

            if (string.IsNullOrEmpty(this.NuevoPassword))
            {
                this.IsRunning = false;
                this.IsEnabled = true;

                await Application.Current.MainPage.DisplayAlert(
                    "Error",
                    "Introduzca su nueva Contraseña.",
                    "Aceptar");

                return;
            }

            if (this.NuevoPassword.Length < 8 ||
                this.NuevoPassword.Length > 20)
            {
                this.IsRunning = false;
                this.IsEnabled = true;

                await Application.Current.MainPage.DisplayAlert(
                    "Error",
                    "La nueva Contraseña debe tener entre 8 y 20 caracteres.",
                    "Aceptar");

                return;
            }

            if (!RegexUtilities.ValidarPassword(this.NuevoPassword))
            {
                this.IsRunning = false;
                this.IsEnabled = true;

                await Application.Current.MainPage.DisplayAlert(
                    "Error",
                    "Las contraseñas deben tener al menos un carácter que no sea una letra ni un dígito, " +
                    "al menos una letra en minúscula ('a'-'z') y al menos una letra en mayúscula ('A'-'Z').",
                    "Aceptar");

                return;
            }

            if (this.NuevoPassword != this.Confirmacion)
            {
                this.IsRunning = false;
                this.IsEnabled = true;

                await Application.Current.MainPage.DisplayAlert(
                    "Error",
                    "La nueva Contraseña y la confirmación no coinciden.",
                    "Aceptar");

                return;
            }

            this.IsRunning = true;
            this.IsEnabled = false;

            var connection = await this.apiService.CheckConnection();

            if (!connection.IsSuccess)
            {
                this.IsRunning = false;
                this.IsEnabled = true;
                await Application.Current.MainPage.DisplayAlert(
                    "Error",
                    connection.Message,
                    "Aceptar");

                return;
            }

            var request = new CambiarPasswordRequest
            {
                ActualPassword = this.ActualPassword,
                Email          = MainViewModel.GetInstance().Componente.Email,
                NuevoPassword  = this.NuevoPassword,
            };

            var apiBase  = Application.Current.Resources["APIBase"].ToString();
            var response = await this.apiService.CambiarPassword(
                apiBase,
                "/api",
                "/Componentes/CambiarPassword",
                MainViewModel.GetInstance().Token.TokenType,
                MainViewModel.GetInstance().Token.AccessToken,
                request);

            if (!response.IsSuccess)
            {
                this.IsRunning = false;
                this.IsEnabled = true;
                await Application.Current.MainPage.DisplayAlert(
                    "Error",
                    "No se pudo cambiar la contraseña. Intentalo más tarde.",
                    "Aceptar");

                return;
            }

            MainViewModel.GetInstance().Componente.Password = this.NuevoPassword;
            this.dataService.Update(MainViewModel.GetInstance().Componente);

            this.IsRunning = false;
            this.IsEnabled = true;

            await Application.Current.MainPage.DisplayAlert(
                "Confirmación",
                "Contraseña modificada correctamente.",
                "Aceptar");

            await App.Navigator.PopAsync();
        }