public async Task <OperacionDto <LoginRespuestaDto> > Login(LoginPeticionDto peticion) { var operacionValidacion = ValidacionUtilitario.ValidarModelo <LoginRespuestaDto>(peticion); if (!operacionValidacion.Completado) { return(operacionValidacion); } var usuario = await _usuarioRepositorio.BuscarPorUserName(peticion.UserName); if (usuario == null) { return(new OperacionDto <LoginRespuestaDto>(CodigosOperacionDto.AccesoInvalido, "Usuario o Contraseña inválida")); } if (!Md5Utilitario.Cifrar(peticion.Password, usuario.PasswordSalt).Equals(usuario.Password)) { return(new OperacionDto <LoginRespuestaDto>(CodigosOperacionDto.AccesoInvalido, "Usuario o Contraseña inválida")); } var token = $"{peticion.UserName}___{DateTime.UtcNow.ToBinary()}___HERMOZA_BIBLOMAX"; var dto = new LoginRespuestaDto() { Suceso = true, Descripcion = "Login correcto", Token = RijndaelUtilitario.EncryptRijndaelToBase64(token) }; return(new OperacionDto <LoginRespuestaDto>(dto)); }
public async Task <OperacionDto <RecuperarContraseniaRespuestaDto> > RecuperarContrasenia(RecuperarContraseniaPeticionDto peticion) { var validadModelo = ValidacionUtilitario.ValidarModelo <RecuperarContraseniaRespuestaDto>(peticion); if (!validadModelo.Completado) { return(validadModelo); } var entidad = await _usuarioRepositorio.BuscarPorUserName(peticion.UserName); if (entidad == null) { return(new OperacionDto <RecuperarContraseniaRespuestaDto>(CodigosOperacionDto.NoExiste, "Usuario no existe")); } var persona = await _personaRepositorio.ObtenerPorIdUsuario(entidad.IdUsuario); var nombreCompleto = default(string); if (persona != null) { nombreCompleto = $@"{persona.Nombre}, {persona.APaterno} {persona.AMaterno}"; } var password = RandomChars.RandomString(10); password = Regex.Replace(password, @"[^a-zA-Z0-9]", m => "9"); entidad.Password = Md5Utilitario.Cifrar(password, entidad.PasswordSalt); var html = File.ReadAllText(_appConfiguraciones.RutaTemplateRecuperarContrasenia); html = html.Replace("%%Nombre%%", nombreCompleto); html = html.Replace("%%Contrasenia%%", password); var asunto = "Nueva Contraseña"; var cuerpo = html; var destinatarios = new List <string>(); destinatarios.Add(persona.Correo); CorreoUtiliario.EnviarCorreo(asunto, destinatarios, cuerpo); await _usuarioRepositorio.EditarUsuario(entidad); return(new OperacionDto <RecuperarContraseniaRespuestaDto>(new RecuperarContraseniaRespuestaDto() { Mensaje = "Correo Enviado", Suceso = true })); }