예제 #1
0
        /// <summary>
        /// Metodo encargado del cambio de clave del usuario
        /// </summary>
        /// <param name="usuario">Usuario al cual se le cambiara la clave</param>
        /// <returns>Retorna True si el cambio de clave fue exitoso, de lo contrario
        /// retorna False</returns>
        public static bool RecuperacionDeClave(DominioTotem.Usuario usuario)
        {
            if (usuario != null && usuario.correo != null &&
                usuario.correo != "")
            {
                try
                {
                    bool esCorreo = Regex.IsMatch(usuario.correo,
                                                  RecursosLogicaModulo1.Expresion_Regular_Correo,
                                                  RegexOptions.IgnoreCase);

                    if (esCorreo &&
                        DatosTotem.Modulo1.BDLogin.ValidarCorreoBD(usuario.correo))
                    {
                        EnviarEmail(usuario);
                        return(true);
                    }
                    else
                    {
                        throw new ExcepcionesTotem.Modulo1.EmailErradoException(
                                  RecursosLogicaModulo1.Codigo_Email_Errado,
                                  RecursosLogicaModulo1.Mensaje_Email_errado,
                                  new ExcepcionesTotem.Modulo1.EmailErradoException());
                    }
                }
                catch (ExcepcionesTotem.Modulo1.EmailErradoException ex)
                {
                    throw new ExcepcionesTotem.Modulo1.EmailErradoException(
                              ex.Codigo, ex.Mensaje, ex);
                }
                catch (ExcepcionesTotem.Modulo1.ParametroInvalidoException ex)
                {
                    throw new ExcepcionesTotem.Modulo1.ParametroInvalidoException(
                              ex.Codigo, ex.Mensaje, ex);
                }
                catch (ExcepcionesTotem.ExceptionTotemConexionBD ex)
                {
                    throw new ExcepcionesTotem.ExceptionTotemConexionBD(
                              ex.Codigo, ex.Mensaje, ex);
                }
                catch (ExcepcionesTotem.Modulo1.UsuarioVacioException ex)
                {
                    throw new ExcepcionesTotem.Modulo1.UsuarioVacioException(
                              ex.Codigo, ex.Mensaje, ex);
                }
                catch (ExcepcionesTotem.Modulo1.ErrorEnvioDeCorreoException ex)
                {
                    throw new ExcepcionesTotem.Modulo1.ErrorEnvioDeCorreoException(
                              ex.Codigo, ex.Mensaje, ex);
                }
            }
            else
            {
                throw new ExcepcionesTotem.Modulo1.UsuarioVacioException(
                          RecursosLogicaModulo1.Codigo_Usuario_Vacio,
                          RecursosLogicaModulo1.Mensaje_Usuario_Vacio,
                          new ExcepcionesTotem.Modulo1.UsuarioVacioException());
            }
        }
예제 #2
0
 /// <summary>
 /// Metodo que extrae la pregunta de seguridad de un usuario dado su correo
 /// </summary>
 /// <param name="usuario">Usuario al que se le quiere obtener la pregunta de
 /// seguridad dado su correo</param>
 /// <returns>Retorna a el usuario con su pregunta de seguridad cargada</returns>
 public static DominioTotem.Usuario ObtenerPreguntaUsuario(DominioTotem.Usuario usuario)
 {
     try
     {
         if (usuario.correo != null && usuario.correo != "")
         {
             usuario.correo = DesencriptarConRijndael(usuario.correo,
                                                      RecursosLogicaModulo1.Passphrase);
             usuario = DatosTotem.Modulo1.BDLogin.ObtenerPreguntaSeguridad(usuario);
             if (usuario.preguntaSeguridad != null &&
                 usuario.preguntaSeguridad != "")
             {
                 return(usuario);
             }
             else
             {
                 throw new ExcepcionesTotem.Modulo1.UsuarioVacioException(
                           RecursosLogicaModulo1.Codigo_Usuario_Vacio,
                           RecursosLogicaModulo1.Mensaje_Usuario_Vacio,
                           new ExcepcionesTotem.Modulo1.UsuarioVacioException());
             }
         }
         else
         {
             throw new ExcepcionesTotem.Modulo1.UsuarioVacioException(
                       RecursosLogicaModulo1.Codigo_Usuario_Vacio,
                       RecursosLogicaModulo1.Mensaje_Usuario_Vacio,
                       new ExcepcionesTotem.Modulo1.UsuarioVacioException());
         }
     }
     catch (ExcepcionesTotem.Modulo1.UsuarioVacioException ex)
     {
         throw new ExcepcionesTotem.Modulo1.UsuarioVacioException(
                   ex.Codigo, ex.Mensaje, ex);
     }
     catch (ExcepcionesTotem.Modulo1.EmailErradoException ex)
     {
         throw new ExcepcionesTotem.Modulo1.EmailErradoException(
                   ex.Codigo, ex.Mensaje, ex);
     }
     catch (ExcepcionesTotem.Modulo1.ParametroInvalidoException ex)
     {
         throw new ExcepcionesTotem.Modulo1.ParametroInvalidoException(
                   ex.Codigo, ex.Mensaje, ex);
     }
     catch (ExcepcionesTotem.ExceptionTotemConexionBD ex)
     {
         throw new ExcepcionesTotem.ExceptionTotemConexionBD(
                   ex.Codigo, ex.Mensaje, ex);
     }
 }
예제 #3
0
        /// <summary>
        /// Metodo encargado del envio del correo que contenga el link para el cambio
        /// de la clave
        /// </summary>
        /// <param name="usuario">Usuario al cual se le enviara el EMAIL</param>
        /// <returns>Retorna True si el correo pudo ser enviado con exito,
        /// de lo contrario disparara
        /// una exception(EmailErradoException)</returns>
        /// <exception cref="ExcepcionesTotem.Modulo1.UsuarioVacioException">
        /// Excepcion que se lanza si se pasa como parametro un usuario
        /// incompleto</exception>
        /// <exception cref="ExcepcionesTotem.Modulo1.ErrorEnvioDeCorreoException">
        /// Excepcion que se lanza si el correo no se pudo enviar</exception>
        public static bool EnviarEmail(DominioTotem.Usuario usuario)
        {
            try
            {
                //validar expresiones regulares de correo
                if (usuario != null && usuario.correo != null &&
                    usuario.correo != "")
                {
                    MailMessage mail = new MailMessage(RecursosLogicaModulo1.Correo_Totem
                                                       , usuario.correo);
                    SmtpClient servidorSmtp = new SmtpClient(RecursosLogicaModulo1.Servidor_Smtp);
                    mail.Subject = RecursosLogicaModulo1.Correo_Asunto_Recuperacion_Clave;
                    mail.Body    = RecursosLogicaModulo1.Correo_Mensaje_Recuperacion_Clave;
                    mail.Body   += GenerarLink(usuario);
                    mail.Body   += "\n\n\n" + RecursosLogicaModulo1.Correo_Mensaje_Ignorar;

                    servidorSmtp.Port = Convert.ToInt32(RecursosLogicaModulo1.Puerto_Smtp);
                    servidorSmtp.UseDefaultCredentials = false;
                    servidorSmtp.Credentials           =
                        new System.Net.NetworkCredential(
                            RecursosLogicaModulo1.Correo_Totem,
                            DesencriptarConRijndael(RecursosLogicaModulo1.Pswd_Correo_Totem,
                                                    RecursosLogicaModulo1.Passphrase));

                    servidorSmtp.EnableSsl = true;

                    servidorSmtp.Send(mail);
                    return(true);
                }
                else
                {
                    throw new ExcepcionesTotem.Modulo1.UsuarioVacioException(
                              RecursosLogicaModulo1.Codigo_Usuario_Vacio,
                              RecursosLogicaModulo1.Mensaje_Usuario_Vacio,
                              new ExcepcionesTotem.Modulo1.UsuarioVacioException());
                }
            }
            catch (SmtpException ex)
            {
                throw new ExcepcionesTotem.Modulo1.ErrorEnvioDeCorreoException(
                          RecursosLogicaModulo1.Codigo_Error_Envio_Correo,
                          RecursosLogicaModulo1.Mensaje_Error_Envio_Correo,
                          ex);
            }
            catch (ExcepcionesTotem.Modulo1.UsuarioVacioException ex)
            {
                throw new ExcepcionesTotem.Modulo1.UsuarioVacioException(
                          ex.Codigo, ex.Mensaje, ex);
            }
        }
예제 #4
0
 /// <summary>
 /// Metodo encargado de validar la respuesta de seguridad utilizada por el usuario
 /// </summary>
 /// <param name="usuario">Usuario al cual se le validara la respuesta</param>
 /// <returns>Retorna True si el correo pudo ser enviado con exito,
 /// de lo contrario disparara
 /// una exception (RespuestaErradoException)</returns>
 public static bool ValidarRespuestaSecreta(DominioTotem.Usuario usuario)
 {
     try
     {
         usuario.correo = DesencriptarConRijndael(usuario.correo,
                                                  RecursosLogicaModulo1.Passphrase);
         if (DatosTotem.Modulo1.BDLogin.ValidarPreguntaSeguridadBD(
                 usuario))
         {
             return(true);
         }
         else
         {
             throw new ExcepcionesTotem.Modulo1.RespuestaErradoException(
                       RecursosLogicaModulo1.Codigo_Respuesta_Errada,
                       RecursosLogicaModulo1.Mensaje_Respuesta_Errada,
                       new ExcepcionesTotem.Modulo1.RespuestaErradoException());
         }
     }
     catch (ExcepcionesTotem.Modulo1.RespuestaErradoException ex)
     {
         throw new ExcepcionesTotem.Modulo1.RespuestaErradoException(
                   ex.Codigo, ex.Mensaje, ex);
     }
     catch (ExcepcionesTotem.Modulo1.ParametroInvalidoException ex)
     {
         throw new ExcepcionesTotem.Modulo1.ParametroInvalidoException(
                   ex.Codigo, ex.Mensaje, ex);
     }
     catch (ExcepcionesTotem.Modulo1.UsuarioVacioException ex)
     {
         throw new ExcepcionesTotem.Modulo1.UsuarioVacioException(
                   ex.Codigo, ex.Mensaje, ex);
     }
     catch (ExcepcionesTotem.ExceptionTotemConexionBD ex)
     {
         throw new ExcepcionesTotem.ExceptionTotemConexionBD(
                   ex.Codigo, ex.Mensaje, ex);
     }
     catch (ExcepcionesTotem.Modulo1.EmailErradoException ex)
     {
         throw new ExcepcionesTotem.Modulo1.EmailErradoException(
                   ex.Codigo, ex.Mensaje, ex);
     }
 }
예제 #5
0
 /// <summary>
 /// Metodo encargado de la generacion del link que debe seguir el usuario para
 /// el cambio de su clave
 /// </summary>
 /// <returns>Retorna el URL que debe seguir el usuario para cambiar su clave,
 /// de lo contrario
 /// disparara una exception</returns>
 public static string GenerarLink(DominioTotem.Usuario usuario)
 {
     if (usuario != null && usuario.correo != null &&
         usuario.correo != "")
     {
         string link = RecursosLogicaModulo1.Link_Recuperacion_Clave;
         link += EncriptarConRijndael(usuario.correo,
                                      RecursosLogicaModulo1.Passphrase);
         return(link);
     }
     else
     {
         throw new ExcepcionesTotem.Modulo1.UsuarioVacioException(
                   RecursosLogicaModulo1.Codigo_Usuario_Vacio,
                   RecursosLogicaModulo1.Mensaje_Usuario_Vacio,
                   new ExcepcionesTotem.Modulo1.UsuarioVacioException());
     }
 }
예제 #6
0
 /// <summary>
 /// Metodo encargado del cambio de clave del usuario
 ///</summary>
 /// <param name="usuario">Usuario al cual se cambiara la clave
 /// de acceso al sistema</param>
 /// <returns>Retorna True si el cambio de clave fue exitoso,
 /// de lo contrario retorna False</returns>
 public static bool CambioDeClave(DominioTotem.Usuario usuario)
 {
     try
     {
         if (usuario != null && usuario.clave != null &&
             usuario.clave != "" && usuario.correo != null &&
             usuario.correo != "")
         {
             usuario.correo =
                 DesencriptarConRijndael(usuario.correo,
                                         RecursosLogicaModulo1.Passphrase);
             usuario.CalcularHash();
             DatosTotem.Modulo1.BDLogin.CambiarClave(usuario);
             return(true);
         }
         else
         {
             throw new ExcepcionesTotem.Modulo1.UsuarioVacioException(
                       RecursosLogicaModulo1.Codigo_Usuario_Vacio,
                       RecursosLogicaModulo1.Mensaje_Usuario_Vacio,
                       new ExcepcionesTotem.Modulo1.UsuarioVacioException());
         }
     }
     catch (ExcepcionesTotem.Modulo1.UsuarioVacioException ex)
     {
         throw new ExcepcionesTotem.Modulo1.UsuarioVacioException(
                   ex.Codigo, ex.Mensaje, ex);
     }
     catch (ExcepcionesTotem.Modulo1.EmailErradoException ex)
     {
         throw new ExcepcionesTotem.Modulo1.EmailErradoException(
                   ex.Codigo, ex.Mensaje, ex);
     }
     catch (ExcepcionesTotem.Modulo1.ParametroInvalidoException ex)
     {
         throw new ExcepcionesTotem.Modulo1.ParametroInvalidoException(
                   ex.Codigo, ex.Mensaje, ex);
     }
     catch (ExcepcionesTotem.ExceptionTotemConexionBD ex)
     {
         throw new ExcepcionesTotem.ExceptionTotemConexionBD(
                   ex.Codigo, ex.Mensaje, ex);
     }
 }
예제 #7
0
        /// <summary>
        /// Constructor de la clase BDLogin
        /// </summary>
        /// <returns>Retorna el objeto con el numero de intentos inicializado en 0 </returns>


        /// <summary>
        /// Metodo para validar el inicio de sesion
        /// </summary>
        /// <param name="usuario">Usuario con atributos username y clave para realizar el
        /// Log in
        /// <returns>Retorna el objeto usuario si se pudo validar, de lo contrario
        /// retorna null</returns>
        /// <exception cref="ExcepcionesTotem.Modulo1.UsuarioVacioException">
        /// Excepcion que se lanza si se pasa como parametro un usuario
        /// incompleto</exception>
        /// <exception cref="ExcepcionesTotem.Modulo1.IntentosFallidosException">
        /// Excepcion que se lanza si el usuario intenta hacer login
        /// una cantidad determinada de veces y falla</exception>
        /// <exception cref="ExcepcionesTotem.Modulo1.LoginErradoException">
        /// Excepcion que se lanza si se no se pudo comprobar el
        /// inicio de sesion del usuario</exception>
        /// <exception cref="ExcepcionesTotem.ExceptionTotemConexionBD">
        /// Excepcion que se lanza si hubo algun problema con la base de
        /// datos</exception>
        public static DominioTotem.Usuario Login(string Username, string Clave)
        {
            try
            {
                if (!captchaActivo)
                {
                    intentos++;
                }
                DominioTotem.Usuario loginUser = new DominioTotem.Usuario();
                loginUser.username = Username;
                loginUser.clave    = Clave;
                loginUser.CalcularHash();
                DominioTotem.Usuario retornoUser =
                    DatosTotem.Modulo1.BDLogin.ValidarLoginBD(loginUser);
                intentos      = 0;
                captchaActivo = false;
                return(retornoUser);
            }
            catch (ExcepcionesTotem.Modulo1.LoginErradoException)
            {
                if (intentos >=
                    Convert.ToInt32(RecursosLogicaModulo1.Cantidad_Intentos_Permitidos))
                {
                    throw new ExcepcionesTotem.Modulo1.IntentosFallidosException(
                              RecursosLogicaModulo1.Codigo_Intentos_Fallidos,
                              RecursosLogicaModulo1.Mensaje_Intentos_Fallidos,
                              new ExcepcionesTotem.Modulo1.IntentosFallidosException());
                }
                else
                {
                    throw new ExcepcionesTotem.Modulo1.LoginErradoException(
                              RecursosLogicaModulo1.Codigo_Login_Errado,
                              RecursosLogicaModulo1.Mensaje_Login_Errado,
                              new ExcepcionesTotem.Modulo1.LoginErradoException());
                }
            }
            catch (ExcepcionesTotem.Modulo1.UsuarioVacioException ex)
            {
                if (intentos >=
                    Convert.ToInt32(RecursosLogicaModulo1.Cantidad_Intentos_Permitidos))
                {
                    throw new ExcepcionesTotem.Modulo1.IntentosFallidosException(
                              RecursosLogicaModulo1.Codigo_Intentos_Fallidos,
                              RecursosLogicaModulo1.Mensaje_Login_Errado, ex);
                }
                else
                {
                    throw new ExcepcionesTotem.Modulo1.UsuarioVacioException(
                              ex.Codigo, ex.Mensaje, ex);
                }
            }
            catch (ExcepcionesTotem.ExceptionTotemConexionBD ex)
            {
                if (intentos >=
                    Convert.ToInt32(RecursosLogicaModulo1.Cantidad_Intentos_Permitidos))
                {
                    throw new ExcepcionesTotem.Modulo1.IntentosFallidosException(
                              RecursosLogicaModulo1.Codigo_Intentos_Fallidos,
                              RecursosLogicaModulo1.Mensaje_Login_Errado, ex);
                }
                else
                {
                    throw new ExcepcionesTotem.ExceptionTotemConexionBD(
                              RecursosLogicaModulo1.Codigo_Error_Conexion_BD,
                              RecursosLogicaModulo1.Mensaje_Error_Conexion_BD,
                              ex);
                }
            }
            catch (ExcepcionesTotem.Modulo1.ParametroInvalidoException ex)
            {
                throw new ExcepcionesTotem.Modulo1.ParametroInvalidoException(
                          ex.Codigo, ex.Mensaje, ex);
            }
        }
예제 #8
0
 /// <summary>
 /// Metodo que elimina un usuario invlocurado a un proyecto (lista y bd)
 /// </summary>
 /// <param name="elUsuario">usuario a eliminar</param>
 /// <returns>Valor booleano que refleja exito o fallo de la operacion</returns>
 public bool eliminarUsuario(DominioTotem.Usuario elUsuario)
 {
     throw new NotImplementedException();
     //return usuariosInvolucrados.eliminarUsuarioDeProyecto(elUsuario);
 }
예제 #9
0
 /// <summary>
 /// Metodo que agrega contacto a lista de contactos involucrados a un proyecto
 /// </summary>
 /// <param name="elUsuario">usuario a agregar</param>
 /// <returns>Valor booleano que refleja exito o fallo de la operacion</returns>
 public bool agregarUsuarioALista(DominioTotem.Usuario elUsuario)
 {
     return(usuariosInvolucrados.agregarUsuarioAProyecto(elUsuario));
 }