예제 #1
0
        public static bool ExigirIdentificação(IWin32Window owner, Permissão privilégios, Entidades.Pessoa.Pessoa autorizada, string título, string recurso, string descrição)
        {
            using (Login dlg = new Login())
            {
                if ((Funcionário.FuncionárioAtual.Privilégios & privilégios) == privilégios)
                {
                    // Usuário atual já tem permissão. Manda vê.
                    return true;
                }

                if (!Funcionário.ÉFuncionário(autorizada))
                {
                    dlg.txtUsuário.Text = Funcionário.FuncionárioAtual.Usuário;
                    dlg.txtUsuário.ReadOnly = true;
                }
                else
                    dlg.txtUsuário.Text = "";

                dlg.lblTítulo.Text = título ?? recurso;
                dlg.lblDescrição.Text = descrição;
                dlg.picÍcone.Image = Resource.cadeado_aberto;

                if (dlg.ShowDialog(owner) == DialogResult.OK)
                {
                    Funcionário super;

                    super = Funcionário.ObterFuncionárioPorUsuárioSemCache(dlg.txtUsuário.Text);

                    if (super == null)
                    {
                        MessageBox.Show(
                            owner,
                            "Usuário desconhecido.",
                            "Permissão negada",
                            MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return false;
                    }

                    if ((super.Privilégios & privilégios) != privilégios)
                    {
                        MessageBox.Show(
                            owner,
                            "O usuário não possui privilégios suficientes para liberar o(s) recurso(s) requisitado(s).",
                            "Permissão negada",
                            MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return false;
                    }

                    try
                    {
                        using (IDbConnection conexão = Acesso.Comum.Usuários.UsuárioAtual.Usuários.Conectar(dlg.txtUsuário.Text, dlg.txtSenha.Text))
                        {
                            conexão.Close();
                        }
                    }
                    catch
                    {
                        MessageBox.Show(
                            owner,
                            "Não foi possível autenticar usuário.",
                            "Permissão negada",
                            MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return false;
                    }

                    using (JustificarLiberaçãoRecursos justificativa = new JustificarLiberaçãoRecursos(autorizada, super.Nome, recurso))
                    {
                        bool senhaIncorreta;

                        do
                        {
                            senhaIncorreta = false;

                            if (justificativa.ShowDialog(owner) != DialogResult.OK)
                                return false;
                            else if (justificativa.Senha != dlg.txtSenha.Text)
                            {
                                MessageBox.Show(
                                    owner,
                                    "Senha incorreta!",
                                    "Permissão negada",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                                senhaIncorreta = true;
                            }
                            else
                            {
                                string strJustificativa;

                                if (justificativa.Motivo.Trim().Length > 0)
                                    strJustificativa = "com a seguinte justificativa: \n\n" + justificativa.Motivo;
                                else
                                    strJustificativa = "sem apresentar justificativa.";

                                try
                                {
                                    if (autorizada.Código != super.Código)
                                    {
                                        autorizada.RegistrarHistórico(
                                            string.Format("Recurso \"{0}\" autorizado por {1} {2}.",
                                            recurso, super.Nome, strJustificativa));

                                        super.RegistrarHistórico(
                                            string.Format("Autorizou {0} o uso do recurso \"{1}\" {2}.",
                                            autorizada.Nome, recurso, strJustificativa));
                                    }
                                    else
                                        autorizada.RegistrarHistórico(
                                            string.Format("Recurso \"{0}\" utilizado {1}.",
                                            recurso, strJustificativa));
                                }
                                catch
                                {
                                    MessageBox.Show(
                                        owner,
                                        "Não foi possível registrar no histórico a autorização.",
                                        "Permissão negada",
                                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    return false;
                                }
                            }
                        } while (senhaIncorreta);
                    }

                    return true;
                }
                else
                    return false;
            }
        }
예제 #2
0
            /// <summary>
        /// Exige identificação de usuário.
        /// </summary>
        /// <param name="título">Título da janela.</param>
        /// <param name="descrição">Descrição da janela, instruindo o usuário.</param>
        /// <returns>Autorização concedida.</returns>
        public static bool ExigirIdentificação(IWin32Window owner, string título, string descrição)
        {
            using (Login dlg = new Login())
            {
                dlg.txtUsuário.Text = Funcionário.FuncionárioAtual.Usuário;
                dlg.txtUsuário.ReadOnly = true;

                dlg.lblTítulo.Text = título;
                dlg.lblDescrição.Text = descrição;
                dlg.picÍcone.Image = Resource.cadeado_aberto;

                if (dlg.ShowDialog(owner) == DialogResult.OK)
                {
                    Funcionário super;

                    super = Funcionário.ObterFuncionárioPorUsuárioSemCache(dlg.txtUsuário.Text);

                    if (super == null)
                    {
                        MessageBox.Show(
                            owner,
                            "Usuário desconhecido.",
                            "Permissão negada",
                            MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return false;
                    }

                    try
                    {
                        using (IDbConnection conexão = Acesso.Comum.Usuários.UsuárioAtual.Usuários.Conectar(dlg.txtUsuário.Text, dlg.txtSenha.Text))
                        {
                            conexão.Close();
                        }
                    }
                    catch
                    {
                        MessageBox.Show(
                            owner,
                            "Não foi possível autenticar usuário.",
                            "Permissão negada",
                            MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return false;
                    }

                    return true;
                }
                else
                    return false;
            }
        }
예제 #3
0
        /// <summary>
        /// </summary>
        /// <returns>Falso se usuário cancelou</returns>
        public static bool EfetuarLogin(Usuários usuários, Splash splash)
        {
#pragma warning disable 0162            
#if DEBUG

            Usuários.UsuárioAtual = usuários.EfetuarLogin("andrep", "andrep");
            return true;
#endif


            bool conectado = false;
            // Constrói janela de login
            using (Login loginDlg = new Login())
            {
                do
                {
                    DialogResult resultado;

                    if (splash != null)
                        splash.Hide();

                    resultado = loginDlg.ShowDialog();

                    if (splash != null)
                        splash.Show();

                    switch (resultado)
                    {
                        case DialogResult.OK:
                            if (splash != null)
                                splash.Mensagem = "Autenticando usuário";

                            try
                            {
                                Usuários.UsuárioAtual = usuários.EfetuarLogin(loginDlg.txtUsuário.Text, loginDlg.txtSenha.Text);

                                if (Usuários.UsuárioAtual == null)
                                    MessageBox.Show("Senha ou usuário incorreto!",
                                        "Indústria Mineira de Joias",
                                        MessageBoxButtons.OK,
                                        MessageBoxIcon.Stop);
                                else
                                {
                                    conectado = true;
                                }
                            }
                            catch (Exception e)
                            {
                                if (splash != null)
                                    splash.Mensagem = "Não foi possível autenticar usuário";

                                MessageBox.Show("Não foi possível autenticar usuário.\r\n\r\nOcorreu o seguinte erro: " + e.Message,
                                    "Indústria Mineira de Joias",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Error);
                            }
                            // Conectado!
                            break;

                        case DialogResult.Cancel:
                            return false;

                        default:
                            break;
                    }

                } while (!conectado);

#if DEBUG
                Usuários.UsuárioAtual.GerenciadorConexões.ConexãoPresa += new GerenciadorConexões.ConexãoPresaCallback(GerenciadorConexões_ConexãoPresa);
#endif
                return true;
            }

#pragma warning restore 0162
        }