/// <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()); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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()); } }
/// <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); } }
/// <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); } }
/// <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); }
/// <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)); }