Todas as Notícias

Nova Permissão de Segurança

O sistema de permissões de segurança é um mecanismo de autenticação e autorização de usuários. Usuários podem fazer login com as informações contidas no Banco de Dados ou podem usar um provedor de login externo. Os provedores de login externo suportados incluem o Active Directory, OpenID-connect, Facebook, Google, Microsoft Account, Twitter, Github, Certificados digitais e ICP Brasil, podendo também ser personalizado para qualquer provedor de login externo compatível com OAuth 2.0. 

Figura 1 - Acesso a nova janela de permissões de segurança

Modelo de dados das permissões de segurança

Por padrão, o sistema de permissões e segurança armazena informações de usuário em um banco de dados usando o JPA. Para muitos aplicativos, essa abordagem funciona bem. No entanto, você pode preferir usar um mecanismo de persistência ou esquema de dados diferente, tornando o modelo extensível e personalizável.


Diagrama de dados

O modelo de dados das permissões de segurança é representado pelo seguinte diagrama de dados:

Figura 2 - Tabelas geradas junto com o sistema

Tipos de Entidade

O modelo de dados das permissões de segurança consiste dos seguintes tipos de entidade (Figura 2):

Nome da Entidade

Descrição

UserRepresenta um usuário
RoleRepresenta um papel 
LoginRepresenta um login e seu provedor para um usuário
SecurableRepresenta um conjunto de objetos ao qual você quer aplicar controle de acesso
ViewRepresenta um objeto do tipo View ao qual você quer aplicar controle de acesso
RoleSecurableAssocia um conjunto de objetos a um papel, permitindo que todos os usuários contidos em um papel tenham acesso a esse conjunto de objetos

UserSecurable

Associa um conjunto de objetos a um usuário, permitindo que o usuário tenha acesso a esse conjunto de objetos
UserRoleAssocia um usuário a um papel

Relacionamentos dos tipos de entidade

Os tipos de entidade são relacionados entre si das seguintes formas:

  • Cada User pode ter múltiplos Securables associados, e cada Securable pode estar associado a múltiplos Users. Esse relacionamento muitos-para-muitos é representado pela entidade UserSecurable.
  • Cada User pode ter múltiplos Logins associados.
  • Cada User pode ter múltiplos Roles associados, e cada Role pode estar associada a múltiplos Users. Esse relacionamento muitos-para-muitos é representado pela entidade UserRole.
  • Cada Role pode ter múltiplos Securables associados, e cada Securable pode estar associado a múltiplos Roles. Esse relacionamento muitos-para-muitos é representado pela entidade RoleSecurable.
  • Cada Securable pode ter múltiplos Views associados.

Personalizando as permissões de segurança

Por padrão, as permissões de segurança podem ser personalizadas durante o desenvolvimento da aplicação e durante a sua execução.

Durante o desenvolvimento, acesse o menu Projeto → Permissão de segurança (Figura 1).


Tela principal do sistema de permissão de segurança

A tela principal do sistema de permissão de segurança é composta das abas (item 1 figura abaixo) de Permissionáveis (Securable), Grupos (Role) e Usuários (User).



Figura 3 - Configuração dos Permissionáveis

Permissionáveis

Mostra os perfis de permissões do projeto, podendo editar ou adicionar novos perfis. Por padrão, o Cronapp cria automaticamente os perfis: Public, Authenticated e Administrators.

Ao editar um dos permissionáveis (figura 3), é possível editar seu nome (aba Geral), adicionar diversas permissões na camada de view  (aba Visões), definir os grupos de usuários que pertencem a esse perfil (aba Grupo) ou selecionar os usuários individualmente (Usuários),

Grupos

As permissões dadas a um Grupos de acesso serão passadas aos usuários que estão vinculados a esse grupo,

Nas configurações de um grupo é possível: alterar o nome, indicar se o grupo pode ter membros e se o grupo é predefinido. Além disso, a aba Usuários (nas configurações do grupo) permite selecionar os usuários para esse grupo.

Por padrão, o Cronapp possui os grupos Administrators (administradores do sistema), Anonymous Users (usuários não logados) e Authenticated Users (usuários logados).

Usuários

Os usuários cadastrados podem receber permissões específicas ou ser adicionado em grupos.



CRONAPP-165

Página a ser modificada:

Referência Cronapp



O Cronapp adicionou dois novos blocos para utilização de queries nativas. São eles: 

Abrir consulta nativa

Este bloco deve ser usado em consultas: SELECT

Figura 1: Bloco Abrir consulta nativa

Abrir instrução SQL nativa

Este bloco deve ser usado quando a instrução SQL for um INSERT, UPDATE ou DELETE.

Figura 2: Bloco Abrir instrução SQL nativa

Ambos os blocos possuem os seguintes parâmetros:

  1. Entidade: Entidade definida e existente no Cronapp.
  2. Consulta SQL: Instrução SQL nativa a ser executada pelo bloco.
  3. Parâmetros para consulta: Os parâmetros presentes na instrução SQL deve possuir dois-pontos (caractere :) antes de qualquer palavra, sendo este parâmetro opcional. Ex. :unidade

CRONAPP-1020

Página a ser modificada:

Database

Um novo mecanismo de customização de templates foi adicionado à árvore de recursos. Trata-se do item Arquivos de Template. Esses arquivos são todos os templates que o Cronapp usa para gerar arquivos, camadas de dados e CRUDs. Ao abrir um arquivo e modificá-lo, você estará customizando um determinado template e o Cronapp passará usar ele ao invés do padrão de fábrica. O novo item aparece conforme imagem abaixo: 


Figura 1 - Arquivos usados para customização de templates


Para customizar a forma como Cronapp gera os formulários de CRUD, duplique a pasta Arquivos de Template/files/crud/angular_crud_view e depois insira um novo nome ao template, editando o arquivo templates.properties. Veja as imagens abaixo:


Figura 2 - Edição das propriedades do Templates


No exemplo acima, o template do CRUD fica no arquivo __FileName__.view.ftl. Esse arquivo segue um padrão do FreeMarker para definição de templates. Veja imagem a baixo:


Figura 3 - Arquivo do template do CRUD


Os arquivos de template ficam com uma cor diferente dos demais. A cor laranja significa que o template está com o padrão de fábrica e a branca, que ele foi customizado. Para voltar alguma parte ao padrão de fábrica, basta excluir o arquivo ou pasta customizada. Para voltar todo o conteúdo para o padrão de fábrica, exclua a pasta Arquivos de Template.

Existem duas subpastas entro de Arquivos do template, são elas

  • files: onde ficam os templates de arquivos gerais como formulários, cruds, etc e
  • data-layer: armazena os templates de geração dos arquivos java da camada de dados.


O Cronapp disponibilizou um plugin que permite exportar métricas da aplicação para serem usadas por serviços de terceiros, como o Prometheus por exemplo. 

Para usar esta funcionalidade, basta abrir um projeto e ir no Menu Plugin → Adicionar novo plugin.

Figura 1 - Opção Adicionar novo Plugin


Com a janela de listagens de Plugins aberta, selecione a opção General e clique em Avançar.

Figura 2 - Janela de Categorias de Plugins


Na tela a seguir, procure pelo plugin Cronapp APM (ou digite o termo na barra de pesquisa e aperte enter), selecione o plugin e clique em Avançar e logo em seguida em Finalizar.

Figura 3 - Plugin Cronapp APM


O plugin será instalado e será exibida uma janela informando das alterações causadas pelo plugin ao projeto.


Figura 4 - Sumário de alterações


Após a instalação do plugin, é necessário acessar a  opção de Permissão de segurança do projeto e dar permissão à URL de acesso do plugin, que fica no endereço /actuator (recomenda-se inicialmente configurar a permissão authenticated). 

Figura 5 - Permissão de acesso a URL de métricas


Com a permissão devidamente configurada, basta rodar o projeto e acessar o endereço <URL do projeto>/actuator (Ex.: https://app-14-174-27917.ide.cronapp.io).

Figura 6 - Tela de métricas e links para métricas mais específicas


O Cronapp disponibilizou mais um novo evento "Ao Gerar Erro" (On Error) nas fontes de dados, cujo o objetivo é tratamento de erros de qualquer natureza durante o processo de manipulação de dados de uma Fonte de Dados. 

O novo evento entra na lista na aba de eventos, conforme a figura abaixo:


Depois de escolhido um bloco, qualquer erro gerado na manipulação da fonte de dados será enviado para esse bloco. Caso o desenvolvedor queria manipular o erro e enviar um outro, basta lançar um nova exceção. Veja o exemplo abaixo:


O evento pode receber os seguintes argumentos:

  • primaryKey: primeira chave primária da fonte;
  • primaryKeys: lista com todas as chaves primárias da fonte;
  • entityName: nome da entidade;
  • eventName: nome do evento (onError);
  • data: objeto da entidade manipulado; 
  • exception: objeto da exceção;
  • exceptionMessage: mensagem da exceção;


Autenticação via Single Sign-On

Para utilizar a nova opção de autenticação via Single Sign-On, basta selecionar a opção SSO no combo de Tipo de Autenticação que aparece na segunda página ao criar um novo projeto. 


Figura 1 - Opção SSO no combo de Tipos de Autenticação

Figura 1 - Opção SSO no combo de Tipos de Autenticação.


Com o projeto já criado, localize o arquivo application.properties no projeto, navegando nas pastas src/main/resources e abra o arquivo clicando duas vezes sobre ele.


Figura 2 - Arquivo application.properties na árvore de arquivos.


Ao executar o passo anterior, será aberta uma tela para preenchimento de alguns campos necessários para o funcionamento da autenticação via Single Sign-On.


Figura 3 - Janela de Configurações do Projeto

Abaixo estão os campos da janela Configurações do Projeto

  • ID do Cliente: O ID do cliente encontrado nas configurações do provedor de autenticação SSO.
  • Segredo do Cliente: O segredo do cliente encontrado nas configurações do provedor de autenticação SSO.
  • URI do Token de Acesso: URI do provedor OAuth que fornece o token de acesso para a aplicação.
  • URI de Autorização do Usuário: URI para o qual o usuário será redirecionado, se for necessário, para autorizar o acesso ao recurso.
  • URI de Informações do Usuário: URI para obter detalhes atuais do usuário.


O Cronapp liberou o suporte a campos do tipo rowversion (Versão) que trata edições concorrentes de um mesmo registro. 

ROWVERSION é um tipo de dados que expõe números binários exclusivos, gerados automaticamente, em um banco de dados. Rowversion geralmente é usado como um mecanismo de registro de versão para linhas de tabela. O tamanho de armazenamento é de 8 bytes. O tipo de dados rowversion é apenas um número que aumenta e não preserva uma data nem hora. 

Nas opções de campos de uma entidade, temos um novo tipo chamado Versão. Veja a figura abaixo:

Figura 1 - Novo tipo "Versão"


Após escolhido o tipo Versão (como na figura acima), o Cronapp vai tratar a edição concorrente dessa entidade. Um registro (formulário) não poderá ser modificado caso ele já tenha sido modificado por outro meio após o início da edição atual. Exemplo: uma pessoa inicia a edição de um registro de um cadastro e, ao mesmo tempo, outra pessoa também inicia a edição desse mesmo registro. Apenas quem salvar primeiro terá sucesso e o outro receberá uma mensagem de erro informando que o registro foi modificado por outro usuário.

Observação: o cache de consultas, ao gerar a camada de persistência no diagrama de dados, deve ser desativado para que o suporte a ROWVERSION funcione corretamente. Veja a figura 2:


Figura 2 - Sempre desative o cache de consulta ao usar o tipo versão



CRONAPP-935

Página a ser modificada

Diagrama


Suporte a Versionamento de Entidades

Implementada nova opção no diagrama para marcar Coluna de Versão, gerando entidades com uma coluna para versionamento.  


Figura 1: Coluna de Versão

Requisitos para a coluna de versão:

  1. Não pode ser Chave.
  2. Deve possuir um dos seguintes tipos: Inteiro, Inteiro Longo, ou Data e Hora com Fuso.
  3. Deve permitir Nulo e Inserção.

Entidades com uma Coluna de Versão marcada apresentam os seguintes comportamentos:

  1. A inserção/incremento ocorrem de forma automática da coluna.
  2. A atualização de um ou mais campos de um registro é bloqueada, exceto quando o número da versão permanece inalterado. Neste caso, o campo utilizado para versionamento é incrementado automaticamente.

Exemplo de Entidade "Empresa" com coluna de versionamento:

Figura 2: Entidade com Coluna de Versão gerada automaticamente.

Figura 3: Mensagem de erro ao tentar atualizar o registro passando uma versão diferente.



CRONAPP-935

Página a ser alterada:

Diagrama

Uma nova opção foi disponibilizada para os usuários do Cronapp em que um bloco pode ser disponibilizado externamente através de um WebService SOAP. 

Para isso, uma nova opção foi disponibilizada nas configurações de bloco. Veja a imagem a seguir: 


Ao marcar a opção, o bloco estará listado no serviços expostos pela aplicação, através do endereço https://<url da aplicação>/services/. Ao acessar esse endereço, os serviços são listados como na imagem abaixo:


Clicando no link do serviço, é possível ver o WSDL do serviço e importá-lo em alguma outra aplicação. 

Observação: assim como um WebService REST, as permissões de segurança afetam diretamente o serviço. Um WebService  SOAP é trafegado via POST, logo a permissão "Permite Inserir" é a que deve ser usada para ele. 




CRONAPP-974

Página a ser modificada:


Para utilizar o componente Árvore, basta arrastar o mesmo para dentro de uma view web. 


Figura 1 - Botão e componente na tela de edição visual web


Após adicionar à view, a janela de opções do componente será aberta.


Figura 2 - Janela de configurações da Treeview


Abaixo estão os campos da janela Opções da Árvore:

  • Fonte de dados: Selecionar/Adicionar uma Fonte de dados.
  • Campo de texto: Informar qual o campo que deverá ser utilizado para exibir o texto.
  • Campo de auto relacionamento: Informar qual o campo de auto relacionamento.
  • Obter valor do campo como: Selecionar como deve ser obtido o valor do campo.
    • Esse campo permite obter o valor como Objeto ou Chaves.


Figura 3 - Resultado da Árvore após configuração



CRONAPP-932

Página a ser modificada:

  

Agora é possível inserir, de forma low-code, imagens no componente visual Cartão, permitindo ainda mais sua personalização. 

Figura 1 - Seleção de imagem no componente "Cartão"

O Cronapp adicionou suporte nativo a auditoria em logs de entidades, fontes de dados e blocos de programação. Isso significa que clientes poderão facilmente auditar uso de recursos do seu sistema.

Na primeira versão, três tipos de recursos estão habilitados a serem auditados. São eles: 

Entidades

Ao editar uma entidade, a opção de Auditoria em Log é apresentada:

 

Blocos

Ao entrar nas configurações de um bloco:

Fonte de Dados

Ao editar uma fonte de dados:


O log de auditoria é gravado, por padrão, na entidade AuditLog, através a Fonte de Dados "Auditoria em Log".



Também foi disponibilizado uma view simples para consultar os logs no menu administrativo de uma aplicação criada com o Cronapp:


Para mais detalhes sobre o sistema de log do Cronapp, acesse Log de Auditoria.



CRONAPP-906

Documento a ser alterado:

Log de Auditoria

Os gráficos são recursos utilizados para representar um fenômeno que possa ser mensurado, quantificado ou ilustrado de forma mais ou menos lógica, se expressando de forma simples e amigável para o usuário. Muito utilizados em sistemas com variação dinâmica, como Dashboards. 

Criamos um tutorial passo a passo mostrando como gerar e editar gráficos no Cronapp, acesse esse conteúdo em  Criando gráficos dinâmicos.


Foi implementado o componente de Captcha em projetos Web. Para utilizar o componente corretamente é necessário seguir os seguintes passos abaixo: 

Figura 1 - Registro de um novo site com reCAPTCHA


  • Após criar a sua conta, ir em Configurações e obter a chave do site (Figura 2) nas chaves de reCAPTCHA:


Figura 2 - Chaves de reCaptcha


  • Por firm, arrastar o novo componente de Captcha na IDE e configurar (colar) a Chave do Site na tela de Login. 
    • Obs: O atributo Tamanho é opcional. Caso o usuário tenha habilitado o reCaptcha invisível, o valor deve ser invisible (Figura 3).

Figura 3. Componente de Captcha no editor

  • Pronto! O componente de captcha já está habilitado:

Figuras 4 - Componente de Captcha do tipo caixa de seleção em execução na tela de login


Figuras 5 - Componente de Captcha do tipo selo de reCaptcha invisível em execução na tela de login



Conteúdo a ser alterado:

Configuração do Captcha

Cronapp BPMN

O Cronapp BPMN é uma estrutura baseada em Java que suporta BPMN para fluxo de trabalho e automação de processos. Essa Funcionalidade está dividida em 3 partes: 

Mecanismo de processo

O mecanismo de processo é uma biblioteca Java responsável pela execução de processos e fluxos de trabalho do BPMN 2.0. Ele possui um núcleo POJO leve e usa um banco de dados relacional para persistência.

Modelador

Ferramenta de modelagem para workflows compatíveis com BPMN 2.0

Aplicações WEB

API REST

A API REST permite que você use o mecanismo de processo de um aplicativo remoto ou JavaScript.

Tasklist

É um aplicativo da Web para gerenciamento de fluxo de trabalho humano e tarefas do usuário, permite aos participantes do processo inspecionar suas tarefas de fluxo de trabalho e navegar de formulários de tarefas para trabalhar nas tarefas e fornecer entrada de dados.

Cockpit

Um aplicativo da Web para monitoramento e operações de processos que permite procurar instâncias de processos, inspecionar seu estado e reparar instâncias quebradas.

Admin

Um aplicativo da web que permite gerenciar usuários, grupos e autorizações.



QAIBT-1302