示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }