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); } }
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"); } }
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)); }