public bool Guardar(SqlConnection cn, TokenBe tokenBe) { bool seGuardo = false; try { using (SqlCommand cmd = new SqlCommand("usp_token_guardar", cn)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@usuarioId", tokenBe.UsuarioId.GetNullable()); cmd.Parameters.AddWithValue("@empresaId", tokenBe.EmpresaId.GetNullable()); cmd.Parameters.AddWithValue("@codigoToken", tokenBe.CodigoToken.GetNullable()); cmd.Parameters.AddWithValue("@tipoTokenId", tokenBe.TipoTokenId.GetNullable()); cmd.Parameters.AddWithValue("@fechaInicio", tokenBe.FechaInicio.GetNullable()); cmd.Parameters.AddWithValue("@fechaFin", tokenBe.FechaFin.GetNullable()); cmd.Parameters.AddWithValue("@usuario", tokenBe.Usuario.GetNullable()); cmd.Parameters.AddWithValue("@fecha", tokenBe.Fecha.GetNullable()); int filasAfectadas = cmd.ExecuteNonQuery(); seGuardo = filasAfectadas > 0; } } catch (Exception ex) { seGuardo = false; } return(seGuardo); }
public bool GuardarToken(TokenBe token, out string codigoToken) { bool seGuardo = false; try { cn.Open(); codigoToken = Guid.NewGuid().ToString(); bool esValido = tokenDa.Validar(token.UsuarioId, token.EmpresaId, codigoToken, token.TipoTokenId, cn); while (esValido) { codigoToken = Guid.NewGuid().ToString(); esValido = tokenDa.Validar(token.UsuarioId, token.EmpresaId, codigoToken, token.TipoTokenId, cn); } token.CodigoToken = codigoToken; seGuardo = tokenDa.Guardar(cn, token); } catch (Exception) { throw; } finally { if (cn.State == System.Data.ConnectionState.Open) { cn.Close(); } } return(seGuardo); }
public TokenBe ObtenerToken(int usuarioId, int empresaId, string codigoToken, int tipoTokenId) { TokenBe token = null; try { cn.Open(); token = tokenDa.Obtener(usuarioId, empresaId, codigoToken, tipoTokenId, cn); cn.Close(); } catch (Exception ex) { token = null; } finally { if (cn.State == System.Data.ConnectionState.Open) { cn.Close(); } } return(token); }
public TokenBe Obtener(int usuarioId, int empresaId, string codigoToken, int tipoTokenId, SqlConnection cn) { TokenBe token = null; try { using (SqlCommand cmd = new SqlCommand("dbo.usp_token_obtener_x_codigotoken", cn)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@usuarioId", usuarioId.GetNullable()); cmd.Parameters.AddWithValue("@empresaId", empresaId.GetNullable()); cmd.Parameters.AddWithValue("@codigoToken", codigoToken.GetNullable()); cmd.Parameters.AddWithValue("@tipoTokenId", tipoTokenId.GetNullable()); using (SqlDataReader dr = cmd.ExecuteReader()) { if (dr.HasRows) { while (dr.Read()) { token = new TokenBe(); token.UsuarioId = dr.GetData <int>("UsuarioId"); token.EmpresaId = dr.GetData <int>("EmpresaId"); token.CodigoToken = dr.GetData <string>("CodigoToken"); token.TipoTokenId = dr.GetData <int>("TipoTokenId"); token.FechaInicio = dr.GetData <DateTime>("FechaInicio"); token.FechaFin = dr.GetData <DateTime>("FechaFin"); } } } } } catch (Exception ex) { token = null; } return(token); }
public HttpResponseMessage RecuperarContrasena(string ruc, string usuario) { bool seProceso = false; if (string.IsNullOrEmpty((ruc ?? "").Trim())) { var msg = new HttpResponseMessage(HttpStatusCode.BadRequest); msg.Content = new StringContent("El ruc está vacío."); return(msg); } if (string.IsNullOrEmpty((usuario ?? "").Trim())) { var msg = new HttpResponseMessage(HttpStatusCode.BadRequest); msg.Content = new StringContent("El usuario está vacío."); return(msg); } var empresa = empresaBl.ObtenerEmpresaPorRuc(ruc); if (empresa == null) { var msg = new HttpResponseMessage(HttpStatusCode.BadRequest); msg.Content = new StringContent($"El ruc {ruc} no se encuentra registrado."); return(msg); } var user = usuarioBl.ObtenerUsuarioPorNombre(usuario, empresa.EmpresaId, loadListaPerfil: true); if (user == null) { var msg = new HttpResponseMessage(HttpStatusCode.BadRequest); msg.Content = new StringContent($"El usuario {usuario} no se encuentra registrado."); return(msg); } string codigoToken = null; int tiempoExpiracion = AppSettings.Get <int>("RecuperarContrasena.TiempoExpiracion"); TokenBe token = new TokenBe(); token.EmpresaId = user.EmpresaId ?? 0; token.UsuarioId = user.UsuarioId; //token.CodigoToken = codigoToken; token.TipoTokenId = (int)TipoCodigo.CodigoToken; token.FechaInicio = DateTime.Now; token.FechaFin = token.FechaInicio.AddMinutes(tiempoExpiracion); token.Usuario = usuario; token.Fecha = DateTime.Now; bool seGuardoToken = tokenBl.GuardarToken(token, out codigoToken); if (seGuardoToken) { var formatoCorreo = formatoCorreoBl.ObtenerFormatoCorreo((int)TipoFormatoCorreo.RecuperacionContrasena); string url = AppSettings.Get <string>("Url.RecuperarContrasena"); string dataHtml = formatoCorreo.Html; string usuarioIdStr = Convert.ToBase64String(Encoding.UTF8.GetBytes(token.UsuarioId.ToString())); string empresaIdStr = Convert.ToBase64String(Encoding.UTF8.GetBytes(token.EmpresaId.ToString())); string tipoTokenIdStr = Convert.ToBase64String(Encoding.UTF8.GetBytes(token.TipoTokenId.ToString())); dataHtml = dataHtml.Replace("[Usuario]", user.Nombre).Replace("[link]", url + "Acceso/RecuperarContrasena?token=" + codigoToken + "|" + usuarioIdStr + "|" + empresaIdStr + "|" + tipoTokenIdStr); bool seEnvioCorreo = correo.EnviarCorreo(user.Correo, "Recuperación de Contraseña", dataHtml); if (seEnvioCorreo) { seProceso = true; } } HttpResponseMessage message = Request.CreateResponse(HttpStatusCode.OK, seProceso); return(message); }