Exemplo n.º 1
0
        public System.Data.DataSet _LogOnPlus(string e_mail, string Passwd, string clientAppName, string clientAppURL, ServicedApplication.enuApplicationState appState)
        {
            int IdPerfil = 0;
            IdPerfil = this.LogOn(e_mail, Passwd, clientAppName, clientAppURL, appState);
            if(IdPerfil==0)
            {
                throw new SoapException("Acceso denegado. Verifique que sus credenciales sean las correctas, " +
                    "si está seguro de ello, verifique que su cuenta no esté deshabilitada.",SoapException.ClientFaultCode);
            }

            try
            {
                Perfil perfil = new Perfil();
                perfil.ID = IdPerfil;
                // Registrar el usuario y la aplicación en tabla tbl_RegistroUso no es necesario
                // porque el propio procedimiento almacenado "pa_tbl_Perfil_GvIDxEmailPasswd_Plus"
                // valida las credenciales y agrega un nuevo registro a la tabla "tbl_RegistroUso".
                System.Data.DataSet ds = new System.Data.DataSet("dsPerfil");
                ds.Tables.Add(perfil.dsEntidad.Tables[0].Copy());
                ds.Tables[0].TableName = "Perfil";
                /* Eliminar el código para agregar el Role como campo, porque no se considera necesario.
                System.Data.DataColumn dtRole = new DataColumn("Role", System.Type.GetType("System.String"));
                ds.Tables[0].Columns.Add(dtRole);
                ds.Tables[0].Rows[0]["Role"] = "Usuario";
                for(int i=0; i<=(wsSettings.wsAdmins.Length-1); i++)
                {
                    if(e_mail == wsSettings.wsAdmins[i])
                    {
                        ds.Tables[0].Rows[0]["Role"] = "Administrador";
                    }
                }
                */
                //ds.Tables[0].Columns.Remove("ID");
                ds.Tables[0].Columns.Remove("Passwd");
                ds.Tables[0].Columns.Remove("IdCatOcupacional");
                ds.Tables[0].Columns.Remove("Habilitado");
                ds.Tables[0].Columns.Remove("DescripIntereses");
                ds.Tables.Add(perfil.getFavoritos(perfil.ID, 5).Tables[0].Copy());
                ds.Tables[1].TableName = "Favoritos";
                perfil = null;
                return ds;
            }
            catch(System.Exception Ex)
            {
                string errorMessage = ProcessError.getMessageToUser(Ex) + " " + System.Environment.NewLine;
                try
                {
                    ProcessError processError = new ProcessError();
                    if(processError.GuardarError(Ex, "AzuPass", "_LogOnPlus", clientAppName, clientAppURL, IdPerfil))
                    {
                        errorMessage = errorMessage + processError.ErrorRecordedNotification;
                    }
                    processError = null;
                }
                catch(System.Exception)
                {
                    ; // No hacer nada si falla el mecanismo de guardar los errores.
                }
            throw new SoapException(errorMessage, SoapException.ClientFaultCode);
              }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Identifica el perfil, chequea si se requiere verificación de la URL de la aplicación cliente y ordena hacerlo 
        /// si es preciso, actualiza el registro de uso a nombre del usuario identificado.
        /// </summary>
        /// <param name="e_mail">email del perfil.</param>
        /// <param name="Passwd">contraseña del perfil.</param>
        /// <param name="clientAppName">Nombre de la aplicación cliente.</param>
        /// <param name="clientAppURL">URL que representa el punto de entrada de la aplicación cliente.</param>
        /// <param name="appState">Estado de la aplicación, "Debug" ó "Release", cuando es debug no se 
        /// realizan algunas funciones y esto aligera la carga, permitiendo que el procedimientos se 
        /// ejecute con más rapidez.</param>
        /// <returns>Devolverá el ID del usuario identificado en caso de ser correctos los elementos 
        /// e_mail y Passwd, en caso contrario devolverá cero (0).</returns>
        private int LogOn(string e_mail, string Passwd, string clientAppName, string clientAppURL, ServicedApplication.enuApplicationState appState)
        {
            int IdPerfil = 0;
            try
            {
                Perfil perfil = new Perfil();
                IdPerfil = perfil.Identificar(e_mail, Passwd, true);
                if(IdPerfil==0)
                {
                    perfil = null;
                    return IdPerfil;
                }
                /*
                    Cuando se indica que la aplicación está aún en modo de depuración,
                    evitar entonces el registro de la misma ya que muchos elementos,
                    entre ellos la URL donde se hospeda, pueden variar.
                */
                if(appState == ServicedApplication.enuApplicationState.Debug)
                {
                    perfil = null;
                    return IdPerfil;
                }

                // Verificar el formato y corregir la URL si es necesario y posible.
                clientAppURL = wsSettings.parseURL(clientAppURL, "minaz.cu");
                System.Uri appUri = new System.Uri(clientAppURL);

                ServicedApplication servicedApplication = new ServicedApplication();
                servicedApplication.ID = servicedApplication.Identificar(clientAppName, appUri);
                if(servicedApplication.ID==0)
                {
                    System.Object[] ArgsServicedApp = {null, clientAppName, appUri.AbsoluteUri, false, System.DateTime.Now};
                    appUri = null;
                    servicedApplication.dsEntidad.Tables[0].Rows[0].ItemArray = ArgsServicedApp;
                    servicedApplication.Agregar();
                }
                RegistroUso regUso = new RegistroUso(0);
                System.Object[] ArgsRegUso = {null, IdPerfil, servicedApplication.ID, System.DateTime.Now};
                regUso.dsEntidad.Tables[0].Rows[0].ItemArray = ArgsRegUso;
                regUso.Agregar();
                regUso = null;

                // Si se exige el chequeo de las URLs y la URL de la aplicación en cuestión no está chequeada ó
                // si ya venció el tiempo y debe volver a ser verificada, entonces verificarla.
                if((wsSettings.InternetAccess.CheckClientAppsURL & !servicedApplication.urlChecked) ||
                    (wsSettings.InternetAccess.CheckClientAppsURL & (servicedApplication.lastURLCheck.AddMonths(wsSettings.InternetAccess.MonthBeforeReCheck) < System.DateTime.Now)))
                {
                    servicedApplication.urlChecked = servicedApplication.isURLReachable();
                    servicedApplication.lastURLCheck = System.DateTime.Now;
                    // Revisar esto porque recuerda que hicistes un cambio en el procedimiento pa_tbl_ServicedApplication_U
                    System.Diagnostics.Debug.WriteLine(servicedApplication.Actualizar());
                }

                servicedApplication = null;
                return IdPerfil;
            }
            catch(System.Exception Ex)
            {
                string errorMessage = ProcessError.getMessageToUser(Ex) + " " + System.Environment.NewLine;
                try
                {
                    ProcessError processError = new ProcessError();
                    if(processError.GuardarError(Ex, "AzuPass", "_LogOn", clientAppName, clientAppURL, IdPerfil))
                    {
                        errorMessage = errorMessage + processError.ErrorRecordedNotification;
                    }
                    processError = null;
                }
                catch(System.Exception)
                {
                    ; // No hacer nada si falla el mecanismo de guardar los errores.
                }
            throw new SoapException(errorMessage, SoapException.ClientFaultCode);
              }
        }
Exemplo n.º 3
0
 public bool _LogOn(string e_mail, string Passwd, string clientAppName, string clientAppURL, ServicedApplication.enuApplicationState appState)
 {
     return this.LogOn(e_mail, Passwd, clientAppName, clientAppURL, appState)>0?true:false;
 }