예제 #1
0
        public bool ChangePassword(ChangePasswordDTO model)
        {
            try
            {
                var encripted_newpassword    = Encrypter.Encryption(model.NewPassword, Helper.Parametro.GetValue("3DESKey"));
                var encripted_actualpassword = Encrypter.Encryption(model.ActualPassword, Helper.Parametro.GetValue("3DESKey"));

                var usuario = _uow.UsuarioRepository.Find(x => x.Email == model.Email && x.Contrasena == encripted_actualpassword);
                usuario.TSModificado = DateTime.Now;
                usuario.Contrasena   = encripted_newpassword;
                _uow.UsuarioRepository.Update(usuario);
                _uow.UsuarioRepository.Save();
                _logger.LogInformation("[Backend-Usuario] - Contraseña de Usuario <{0}>, actualizada correctamente.", model.Email);
                return(true);
            }
            catch (Exception ex)
            {
                _logger.LogErrorException(ex, "[Backend-Usuario] - Ocurrió un problema al intentar actualizar clave de usuario.");
                return(false);
            }
        }
예제 #2
0
        public async Task <IActionResult> Login(LoginDTO model, Usuario user, string returnUrl = null)
        {
            if (HttpContext.Request.Cookies[CookieAuthenticationDefaults.AuthenticationScheme] != null)
            {
                var siteCookies = HttpContext.Request.Cookies.Where(c => c.Key.StartsWith(CookieAuthenticationDefaults.AuthenticationScheme));
                foreach (var cookie in siteCookies)
                {
                    Response.Cookies.Delete(cookie.Key);
                }
            }
            var pass_noencrypted = model.Contrasena;

            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                try
                {
                    var encripted_password = Encrypter.Encryption(model.Contrasena, _configuration.GetSection("3DESKey").Value);
                    model.Contrasena = encripted_password;
                    var passValidate = CheckPasswordTemp(model.Email);
                    var userExist    = _uservice.ExistUser(model);
                    if (userExist)
                    {
                        _logger.LogInformation("El usuario Existe.");
                        if (passValidate != HttpStatusCode.OK)
                        {
                            _logger.LogInformation("El usuario logueado con email {0} debe cambiar la contraseña. Se muestra formulario de cambio de contraseña.", model.Email);
                            ViewBag.Usuario = model.Email;
                            return(ValidarTokenAndPassTemp(model.Email));
                        }

                        var usuario = Authenticate(model);
                        if (usuario != null)
                        {
                            var claimsCookie = new List <Claim>
                            {
                                new Claim("Name", usuario.Nombre),
                                new Claim("FullName", usuario.Apellido),
                                new Claim("Email", usuario.Email),
                                new Claim("Usuario", usuario.Usuario)
                            };
                            var claimsIdentity = new ClaimsIdentity(
                                claimsCookie, CookieAuthenticationDefaults.AuthenticationScheme);

                            var authProperties = new AuthenticationProperties
                            {
                                IsPersistent = model.Recordarme ? true : false,
                            };

                            await HttpContext.SignInAsync(
                                CookieAuthenticationDefaults.AuthenticationScheme,
                                new ClaimsPrincipal(claimsIdentity),
                                authProperties);

                            _logger.LogInformation("Usuario Logeado.");
                            return(RedirectReturnUrl(returnUrl));
                        }
                        else
                        {
                            TempData["ErrorMessage"] = "Usuario o contraseña inválidos";
                        }
                    }
                    else
                    {
                        TempData["ErrorMessage"] = "No existe un usuario con el correo ingresado.";
                    }
                }
                catch (Exception e)
                {
                    _logger.LogErrorException(e, "OCurrió un error al loguear al usuario.");
                    TempData["ErrorMessage"] = "Error al realizar el login.";
                    model.Contrasena         = pass_noencrypted;
                }
            }

            model.Contrasena = null;
            return(View(model));
        }
예제 #3
0
        public string CreateUsuario(UsuarioViewModel model)
        {
            var rolesList = model.ArrayRoles != null?model.ArrayRoles.Split(',').ToList() : new List <string>();

            if (ValidarUsuario(model))
            {
                try
                {
                    Random r                  = new Random();
                    int    randNum            = r.Next(1000000);
                    string sixDigitNumber     = randNum.ToString("D6");
                    var    encripted_password = Encrypter.Encryption(sixDigitNumber, Parametro.GetValue("3DESKey"));
                    _logger.LogInformation("Contraseña encriptada correctamente.");
                    var usuario = new Usuario()
                    {
                        Apellido   = model.Apellido,
                        Nombre     = model.Nombre,
                        Email      = model.Email,
                        Contrasena = encripted_password
                    };

                    var result = _uow.UsuarioRepository.Create(usuario);
                    _uow.UsuarioRepository.Save();

                    foreach (var rol in rolesList)
                    {
                        var usuarioRol = new UsuarioRol()
                        {
                            RolId     = int.Parse(rol),
                            UsuarioId = result.UsuarioId
                        };
                        _uow.UsuarioRolRepository.Create(usuarioRol);
                        _uow.UsuarioRolRepository.Save();
                    }
                    var tokenGuid = Guid.NewGuid().ToString();
                    var token     = new UsuarioToken()
                    {
                        UsuarioId       = result.UsuarioId,
                        FechaExpiracion = DateTime.Now.AddMinutes(Convert.ToDouble(Helper.Parametro.GetValue("TiempoExpiracionTokenMail"))),
                        Usado           = false,
                        Token           = tokenGuid
                    };
                    MailUsuarioModel mailModel = new MailUsuarioModel()
                    {
                        TokenUrl        = tokenGuid,
                        Password        = sixDigitNumber,
                        UsuarioApellido = result.Apellido,
                        UsuarioNombre   = result.Nombre,
                        Email           = result.Email,
                        Usuario         = result.Email,
                        EsAdministrador = _uow.UsuarioRolRepository.AllIncluding(x => x.Rol).Any(x => x.UsuarioId == result.UsuarioId && x.Rol.Codigo == Helper.EstadosHelper.UsuarioDefault.ADM.ToString())
                    };

                    sender.SendMailNewUsuario(mailModel);
                    var tokenCreated = _uow.UsuarioTokenRepository.Create(token);
                    _uow.UsuarioRepository.Save();
                    _logger.LogInformation("Envio de email correctamente");
                    _logger.LogInformation("Usuario creado correctamente. Nombre de usuario: <{0}> - Roles asignados: <{1}>.", model.Nombre + " " + model.Apellido, rolesList);
                    return("Usuario creado correctamente.");
                }
                catch (Exception ex)
                {
                    _logger.LogErrorException(ex,
                                              "Ocurrió un error al crear usuario. Nombre de usuario: <{0}> - Roles asignados: <{1}>.",
                                              model.Nombre + " " + model.Apellido, rolesList.ToString());
                    throw new CreateRecordException("Ocurrió un error al crear el usuario", ex);
                }
            }
            else
            {
                _logger.LogError(
                    "[ERROR VALIDACION EN SERVER] - Ocurrió un error al crear usuario. Uno o mas datos son incorrectos.");
                return("FailModel");
            }
        }