コード例 #1
0
ファイル: Login.cs プロジェクト: raulbanuelos/DesingProcess
        public async Task <bool> login()
        {
            Console.WriteLine("Escribe tu usuario:");
            string usuario = Console.ReadLine();

            Console.WriteLine("Escribe tu contraseña:");
            string contrasena = Console.ReadLine();

            Encriptacion encriptar = new Encriptacion();

            usuario    = encriptar.encript(usuario);
            contrasena = encriptar.encript(contrasena);

            //Ejecutamos el método para verificar las credenciales, el resultado lo asignamos a un objeto local de tipo Usuario.
            Usuario usuarioConectado = await DataManager.GetLogin(usuario, contrasena);


            if (usuarioConectado != null)
            {
                if (usuarioConectado.Block)
                {
                    Console.WriteLine("Tu estas bloqueado, no vas a poder accesar.");
                    return(false);
                }
                else
                {
                    //Obtenemos la fecha del servidor
                    DateTime date_now = DataManagerControlDocumentos.Get_DateTime();

                    //Ejecutamos el método para desbloquear el sistema, si se venció la fecha final
                    DataManagerControlDocumentos.DesbloquearSistema(date_now);

                    //Obtenemos los detalles del usuario logueado.
                    usuarioConectado.Details = DataManager.GetUserDetails(usuarioConectado.NombreUsuario);

                    //Insertamos el ingreso a la bitácora.
                    DataManager.InserIngresoBitacora(Environment.MachineName, usuarioConectado.Nombre + " " + usuarioConectado.ApellidoPaterno + " " + usuarioConectado.ApellidoMaterno);

                    Console.WriteLine("Hola, soy el Demonio que realizará el trabajo aburrido.\n");
                    System.Threading.Thread.Sleep(4000);

                    Console.WriteLine("Todo esto con la intención de hacerte felíz\n");
                    System.Threading.Thread.Sleep(3000);

                    User = usuarioConectado;

                    return(true);
                }
            }
            else
            {
                Console.WriteLine("Uusario y/O Contraseña incorrecta");
                return(false);
            }
        }
コード例 #2
0
        async void Btn_ingresar_Click(object sender, RoutedEventArgs e)
        {
            LoginDialogSettings settings = new LoginDialogSettings();

            settings.ColorScheme           = MetroDialogOptions.ColorScheme;
            settings.PasswordWatermark     = "Password";
            settings.UsernameWatermark     = "Username";
            settings.InitialPassword       = "******";
            settings.InitialUsername       = "******";
            settings.AffirmativeButtonText = StringResources.lblBtnLogin;


            //Abrimos el mensaje modal para que el usuario ingrese sus credenciales, el resultado lo guardamos en una variable local.
            LoginDialogData result = await this.ShowLoginAsync(StringResources.ttlAuthentication, StringResources.lblEnterCredentials, settings);

            //Comparamos si el resultado es distinto de nulo. Si es igual a nulo quiere decir que el usuario cancelo la captura o cerró inesperadamente la pantalla.
            if (result != null)
            {
                //Incializamos los servicios de dialog.
                DialogService dialog = new DialogService();

                //Declaramos un objeto de tipo ProgressDialogController, el cual servirá para recibir el resultado el mensaje progress.
                ProgressDialogController AsyncProgress;

                //Ejecutamos el método para enviar un mensaje de espera mientras se comprueban los datos.
                AsyncProgress = await dialog.SendProgressAsync(StringResources.lblLogIn, "");

                //Declaramos un objeto con el cual se realiza la encriptación
                Services.Encriptacion encriptar = new Services.Encriptacion();

                //Ejecutamos el método para encriptar tanto el usuario como la contraseña y los guardamos en variables locales respectivamente.
                string usuario    = encriptar.encript(result.Username);
                string contrasena = encriptar.encript(result.Password);

                //Ejecutamos el método para verificar las credenciales, el resultado lo asignamos a un objeto local de tipo Usuario.
                Usuario usuarioConectado = await DataManager.GetLogin(usuario, contrasena);

                //Verificamos el resultado, si es direfente de nulo quiere decir que el logueo fué correcto, si es igual a nulo quiere decir que el usuario no existe con las credenciales proporcionadas.
                if (usuarioConectado != null)
                {
                    //Ejecutamos el método para cerrar el mensaje de espera.
                    await AsyncProgress.CloseAsync();

                    //Verificamos si el usuario no esta bloqueado.
                    if (usuarioConectado.Block)
                    {
                        //Enviamos un mensaje para indicar que el usuario está bloqueado.
                        MessageDialogResult message = await this.ShowMessageAsync(StringResources.lblInformation, StringResources.lblUserNotActive);
                    }
                    else
                    {
                        SpeechSynthesizer _SS = new SpeechSynthesizer();
                        _SS.Volume = 100;
                        _SS.Rate   = 1;

                        _SS.SpeakAsync("Welcome, " + usuarioConectado.Nombre + ", To Process Design Engineering Program");

                        //Enviamos un mensaje de bienvenida al usuario.
                        MessageDialogResult message = await this.ShowMessageAsync(StringResources.lblWelcome, usuarioConectado.Nombre);

                        //Obtenemos la fecha del servidor
                        DateTime date_now = DataManagerControlDocumentos.Get_DateTime();
                        //Ejecutamos el método para desbloquear el sistema, si se venció la fecha final
                        DataManagerControlDocumentos.DesbloquearSistema(date_now);

                        //Obtenemos los detalles del usuario logueado.
                        usuarioConectado.Details = DataManager.GetUserDetails(usuarioConectado.NombreUsuario);

                        //Verificamos si esta cargada la foto, sino asignamos una por default.
                        if (string.IsNullOrEmpty(usuarioConectado.Details.PathPhoto))
                        {
                            usuarioConectado.Details.PathPhoto = System.Configuration.ConfigurationManager.AppSettings["PathDefaultImage"];
                        }

                        //Insertamos el ingreso a la bitácora.
                        DataManager.InserIngresoBitacora(Environment.MachineName, usuarioConectado.Nombre + " " + usuarioConectado.ApellidoPaterno + " " + usuarioConectado.ApellidoMaterno);

                        //Validamos si el usuario nuevo tiene la contraseña random
                        if (usuarioConectado.Details.Temporal_Password == true)
                        {
                            //Cargamnos las vista de ModificarContrasena
                            ModificarContrasena vistacontrasena = new ModificarContrasena();
                            //Cargamnos el modelo de CambiarContraseniaViewModel
                            CambiarContraseniaViewModel vmcambiarconatraseña = new CambiarContraseniaViewModel(usuarioConectado);

                            //Asingamos el DataContext.
                            vistacontrasena.DataContext = vmcambiarconatraseña;

                            //Mostramos la ventana de modificacion de contraseña
                            vistacontrasena.ShowDialog();

                            //Verificamos el valor de la variable CierrePantalla, si en la View Model de CambiarContrasenia la variable es false, dejamos continual el proceso
                            if (vmcambiarconatraseña.CierrePantalla == false)
                            {
                                return;
                            }
                        }

                        #region Configuración del correo electrónico

                        //Verificamos si esta configurado el correo electrónico en la plataforma.
                        //if (!usuarioConectado.Details.IsAvailableEmail || !System.IO.File.Exists(usuarioConectado.Pathnsf))
                        //{
                        //    //Configuramos las opciones del mesaje de pregunta.
                        //    MetroDialogSettings settings = new MetroDialogSettings();
                        //    settings.AffirmativeButtonText = StringResources.lblYes;
                        //    settings.NegativeButtonText = StringResources.lblNo;

                        //    //Preguntamos al usuario si lo quiere configurar en estos momentos.
                        //    MessageDialogResult resultMSG = await this.ShowMessageAsync(StringResources.ttlAtencion + usuarioConectado.Nombre, StringResources.msgConfiguracionCorreo, MessageDialogStyle.AffirmativeAndNegative, settings);

                        //    //Verificamos la respuesta del usuario, si es afirmativa iniciamos el proceso de configuración.
                        //    if (resultMSG == MessageDialogResult.Affirmative)
                        //    {
                        //        settings = new MetroDialogSettings();
                        //        settings.AffirmativeButtonText = StringResources.ttlOkEntiendo;

                        //        await this.ShowMessageAsync(usuarioConectado.Nombre + StringResources.msgParaTuInf, StringResources.msgProcesoConfiguracion, MessageDialogStyle.Affirmative, settings);

                        //        ProgressDialogController AsyncProgressConfigEmail;

                        //        AsyncProgressConfigEmail = await dialog.SendProgressAsync(StringResources.ttlEspereUnMomento + usuarioConectado.Nombre + "...", StringResources.msgEstamosConfigurando);

                        //        ConfigEmailViewModel configEmail = new ConfigEmailViewModel(usuarioConectado);

                        //        // Se reciben valores de las 2 propiedades del objeto
                        //        DO_PathMail respuestaConfigEmail = await configEmail.setEmail();

                        //        await AsyncProgressConfigEmail.CloseAsync();

                        //        if (respuestaConfigEmail.respuesta)
                        //        {
                        //            // Actualizamos el path de usuario en la misma sesión
                        //            usuarioConectado.Pathnsf = respuestaConfigEmail.rutamail;

                        //            settings.AffirmativeButtonText = StringResources.ttlGenial;
                        //            await this.ShowMessageAsync(StringResources.msgPerfecto + usuarioConectado.Nombre, StringResources.msgCuentaConfigurada, MessageDialogStyle.Affirmative, settings);
                        //        }
                        //        else
                        //        {
                        //            await this.ShowMessageAsync(StringResources.ttlOcurrioError, StringResources.msgErrorVincular);
                        //        }
                        //    }
                        //}

                        #endregion

                        if (Module.UsuarioIsRol(usuarioConectado.Roles, 2))
                        {
                            DashboardViewModel context;
                            FDashBoard         pDashBoard = new FDashBoard();
                            context = new DashboardViewModel(usuarioConectado);
                            context.ModelUsuario = usuarioConectado;

                            //NOTA IMPORTANTE: Se hizo una redundancia al asignarle en la propiedad página su misma pantalla. Solo es por ser la primera vez y tenernos en donde descanzar la primera pantalla.
                            context.Pagina = pDashBoard;

                            //Asignamos al DataContext de la PantallaHome el context creado anteriormente.
                            pDashBoard.DataContext = context;

                            //Declaramos la pantalla en la que descanzan todas las páginas.
                            Layout masterPage = new Layout();

                            //Asingamos el DataContext.
                            masterPage.DataContext = context;

                            //Ejecutamos el método el cual despliega la pantalla.
                            masterPage.ShowDialog();
                        }
                        else
                        {
                            Home PantallaHome = new Home(usuarioConectado.NombreUsuario);

                            //Creamos un objeto UsuarioViewModel, y le asignamos los valores correspondientes, a la propiedad Pagina se le asigna la pantalla inicial de Home.
                            UsuarioViewModel context = new UsuarioViewModel(usuarioConectado, PantallaHome);
                            context.ModelUsuario = usuarioConectado;

                            //NOTA IMPORTANTE: Se hizo una redundancia al asignarle en la propiedad página su misma pantalla. Solo es por ser la primeva vez y tenernos en donde descanzar la primera pantalla.
                            context.Pagina = PantallaHome;

                            //Asignamos al DataContext de la PantallaHome el context creado anteriormente.
                            PantallaHome.DataContext = context;

                            //Declaramos la pantalla en la que descanzan todas las páginas.
                            Layout masterPage = new Layout();

                            //Asingamos el DataContext.
                            masterPage.DataContext = context;

                            //Ejecutamos el método el cual despliega la pantalla.
                            masterPage.ShowDialog();
                        }

                        //Una vez que el usuario hizo clic en aceptar el mensaje de bienvenida, se procede con la codificación de la presentación de la pantalla inicial.
                        //Creamos un objeto de tipo Home, la cual es la pantalla inicial del sistema.
                        //Home PantallaHome = new Home(usuarioConectado.NombreUsuario);

                        //Creamos un objeto UsuarioViewModel, y le asignamos los valores correspondientes, a la propiedad Pagina se le asigna la pantalla inicial de Home.
                        //UsuarioViewModel context = new UsuarioViewModel { ModelUsuario = usuarioConectado, Pagina = PantallaHome };
                        //UsuarioViewModel context = new UsuarioViewModel(usuarioConectado, PantallaHome);
                        //context.ModelUsuario = usuarioConectado;

                        ////NOTA IMPORTANTE: Se hizo una redundancia al asignarle en la propiedad página su misma pantalla. Solo es por ser la primeva vez y tenernos en donde descanzar la primera pantalla.
                        //context.Pagina = PantallaHome;

                        ////Asignamos al DataContext de la PantallaHome el context creado anteriormente.
                        //PantallaHome.DataContext = context;

                        ////Declaramos la pantalla en la que descanzan todas las páginas.
                        //Layout masterPage = new Layout();

                        ////Asingamos el DataContext.
                        //masterPage.DataContext = context;

                        ////Ejecutamos el método el cual despliega la pantalla.
                        //masterPage.ShowDialog();


                        ////Si el usuario es administrador, le mostramos la pantalla de Dashboard.
                        //if (Module.UsuarioIsRol(usuarioConectado.Roles, 2))
                        //{
                        //    FDashBoard pDashBoard = new FDashBoard();

                        //    DashboardViewModel wm = new DashboardViewModel(pDashBoard, usuarioConectado);
                        //    pDashBoard.DataContext = wm;

                        //    //Declaramos la pantalla en la que descanzan todas las páginas.
                        //    Layout masterPage1 = new Layout();

                        //    //Asingamos el DataContext.
                        //    masterPage1.DataContext = wm;

                        //    //Ejecutamos el método el cual despliega la pantalla.
                        //    masterPage1.ShowDialog();

                        //}
                        //else
                        //{

                        //}
                    }
                }
                else
                {
                    //Ejecutamos el método para cerrar el mensaje de espera.
                    await AsyncProgress.CloseAsync();

                    //Enviamos un mensaje indicando que las credenciales escritas son incorrectas.
                    MessageDialogResult message = await this.ShowMessageAsync(StringResources.ttlAlerta, StringResources.lblPasswordIncorrect);
                }
            }
        }