/// <summary>
 /// Exporta um botão para o formulário.
 /// </summary>
 /// <param name="privilégios">Privilégios necessários.</param>
 /// <param name="texto">Texto do botão.</param>
 /// <param name="retornarÀPrimeira">Se deve retornar à primeira base inferior, quando clicado.</param>
 /// <param name="basesInferiores">Tipos que herdam de <c>BaseInferior</c>.</param>
 public ExporBotãoAttribute(Permissão privilégios, string texto, bool retornarÀPrimeira, params Type[] basesInferiores)
 {
     this.permissões = privilégios;
     this.texto = texto;
     this.bases = basesInferiores;
     this.retornarÀPrimeira = retornarÀPrimeira;
 }
        /// <summary>
        /// Valida se usuário atual possui privilégios necessários
        /// utilizando cache.
        /// </summary>
        /// <param name="privilégio">Privilégios necessários.</param>
        /// <returns>Se o usuário atual possui os privilégios necessários.</returns>
        public static bool ValidarPermissão(Permissão privilégio)
        {
            try
            {
                if (privilégio != Permissão.Nenhuma)
                {
                    Usuário usuário;
                    Pessoa.Funcionário funcionário;

                    usuário = Usuários.UsuárioAtual;
                    funcionário = CacheDb.Instância.ObterEntidade(typeof(Pessoa.Funcionário), usuário.Nome) as Pessoa.Funcionário;

                    if ((funcionário.Privilégios & privilégio) == 0)
                        return false;
                }

                return true;
            }
            catch (Exception e)
            {
                try
                {
                    Usuários.UsuárioAtual.RegistrarErro(e);
                }
                catch { }

                return false;
            }
        }
        /// <summary>
        /// Valida se usuário atual possui privilégios necessários
        /// utilizando cache.
        /// </summary>
        /// <param name="privilégio">Privilégios necessários.</param>
        /// <exception cref="PermissãoNegada">
        /// Levanta exceção caso funcionário
        /// não possua privilégios suficientes.
        /// </exception>
        public static void AssegurarPermissão(Permissão privilégio)
        {
            if (privilégio != Permissão.Nenhuma)
            {
                Usuário usuário;
                Pessoa.Funcionário funcionário;

                usuário = Usuários.UsuárioAtual;
                funcionário = CacheDb.Instância.ObterEntidade(typeof(Pessoa.Funcionário), usuário.Nome) as Pessoa.Funcionário;

                if ((funcionário.Privilégios & privilégio) != privilégio)
                    throw new PermissãoNegada(funcionário);
            }
        }
 public void SetPermissãoEdição(Control controle, Permissão valor)
 {
     hashEdição[controle] = valor;
 }
 public void SetPermissãoVisualização(Control controle, Permissão valor)
 {
     hashVisualização[controle] = valor;
 }
Example #6
0
        /// <summary>
        /// Verifica os privilégios associados ao funcionário
        /// e atribui aqueles só para interface gráfica.
        /// </summary>
        private void AdequarPrivilégios()
        {
            if ((privilégios & (Permissão.ConsignadoDestravar | Permissão.ConsignadoRetorno | Permissão.ConsignadoSaída)) > 0)
                privilégios |= Permissão.Consignado;
            else
                privilégios &= ~Permissão.Consignado;

            if ((privilégios & (Permissão.VendasDestravar | Permissão.VendasEditar | Permissão.VendasLeitura)) > 0)
                privilégios |= Permissão.Vendas;
            else
                privilégios &= ~Permissão.Vendas;
        }
Example #7
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;
            }
        }
Example #8
0
        public static bool LiberarRecurso(IWin32Window owner, Permissão privilégios, string recurso, string descrição)
        {
            if (PermissãoFuncionário.ValidarPermissão(privilégios))
                return true;

            return ExigirIdentificação(owner, privilégios, Funcionário.FuncionárioAtual, null, recurso, descrição);
        }
 /// <summary>
 /// Exporta um botão para o formulário.
 /// </summary>
 /// <param name="controlador">Tipo que herda de <c>ControladorBaseInferior</c>.</param>
 /// <param name="privilégios">Privilégios necessários.</param>
 /// <param name="imagem">Imagem do botão.</param>
 /// <param name="texto">Texto do botão.</param>
 /// <param name="retornarÀPrimeira">Se deve retornar à primeira base inferior, quando clicado.</param>
 /// <param name="basesInferiores">Tipos que herdam de <c>BaseInferior</c>.</param>
 public ExporBotãoAttribute(int ordenação, Type controlador, Permissão privilégios, string texto, bool retornarÀPrimeira, params Type[] basesInferiores)
     : this(privilégios, texto, retornarÀPrimeira, basesInferiores)
 {
     this.ordenação = ordenação;
     this.controlador = controlador;
 }