Integrar a autenticação do utilizador nas suas aplicações Qodly

No blogue desta semana, vamos centrar-nos no tópico crucial da autenticação. Para ilustrar a nossa discussão, utilizaremos o exemplo de uma aplicação concebida para escrever avaliações anuais de desempenho para os empregados. Esta aplicação permite que os utilizadores acessem de forma segura às suas contas, autenticando com o seu e-mail e palavra-passe.

Aplicação de avaliação de desempenho

Visão geral da autenticação

A autenticação é uma pedra angular de qualquer aplicação Web, garantindo que apenas os utilizadores autorizados podem aceder a informações sensíveis ou executar acções específicas. Em nosso exemplo, o processo de login é simples mas efetivo, demonstrando como 4D Qodly Pro lida com a autenticação de forma segura e eficiente.

O Processo de Login

O formulário de login está localizado na página “login” e consiste de:

  • Dois campos de entrada: ligados ao email e à password dos recursos de dados.
  • Um botão “Sign in” (Entrar): aciona o processo de autenticação.

 

This is a login page for a "Performance Review" system. The design is split into two sections:
* Left Side (Red Background)
        Displays the Performance Review title with an icon of a building and a person.

* Right Side (White Background)
        Contains a "Welcome!" message.
        Two input fields for Email and Password, with the password field having an eye icon to toggle visibility.
        A "Forgot your password?" link.
        A red "Sign in" button for user authentication.

No Qodly Studio, estão disponíveis outros modelos de formulários pré-construídos para a funcionalidade de início de sessão na seção de modelos dedicada. Estes modelos podem ser personalizados de acordo com os requisitos específicos da sua aplicação.

Função: authentify()

Quando o utilizador clica no botão “Iniciar sessão”, a função “ds.authentify()” é chamada com o e-mail e a palavra-passe como parâmetros.

The OnClick function in this UI is set up to authenticate a user when they click a button. Here’s how it works:
1. Event Trigger
* The function is executed onClick of the button.
2. Function Call
* Calls an exposed function named ds.authentify, which likely handles authentication.
3. Parameters Passed
* email (Text) → Taken from the page input.
* password (Text) → Also taken from the page input.
* pageName (set to "app") → Likely specifies which page or context the authentication is for.
4. Result Handling
* The function returns a result (Text), which could be used to verify if authentication was successful.

As informações do utilizador, como o e-mail e a palavra-passe, são armazenadas na base de dados, na tabela “Employee”. Na função “authentify()”, é efetuada uma consulta simples da base de dados para verificar as informações.

Segue-se um código para ilustrar este processo:

exposed Function authentify($email: Text; $password: Text) : Text
$employee :=This.Employee.query("Email = :1"; $email).first()
If ($employee#Null)
If (Verify password hash($password; $employee.Password))
Session.setPrivileges("user")
Web Form .setMessage("Authentication successful")
Else
Web Form .setError("Authentication failed")
End if
Else
Web Form .setError("Authentication failed")
End if

Gerir os privilégios do utilizador

Antes de autenticar um utilizador, é vital restringir o acesso a dados e funções sensíveis. Esta segurança é garantida pela gestão de privilégios.

Primeiro, temos um privilégio denominado “none” (nenhum), que possui todos os direitos sobre a fonte de dados (ds), garantindo um acesso abrangente à base de dados. Este privilégio não é atribuído a nenhum utilizador, mantendo assim um ambiente seguro. Quando são concedidos direitos a um privilégio, estes são automaticamente revogados de todos os outros, protegendo efetivamente o sistema.

This screenshot shows a privilege management interface where a set of permissions are assigned to a data source (ds).
Read: Allowed
Create: Allowed
Update: Allowed
Delete: Allowed
Execute: Allowed

De seguida, adicionámos um privilégio chamado “authentify” (autenticar). A permissão “promover” é atribuída à função “ds.authentify()”. Isto significa que sempre que esta função é chamada, o privilégio “authentify” é automaticamente aplicado.

De seguida, garantimos que as permissões necessárias para a autenticação são adicionadas à classe de dados ou funções relevantes em utilização. No nosso exemplo, atribuímos as permissões “Read” (Ler) e “Execute” (Executar) à classe de dados “Employee” (Funcionário).

Assigned permissions to ds.authentify
Read: Enabled
Create: Disabled
Update: Disabled
Delete: Disabled
Execute: Disabled
Promote: Enabled

Assigned permissions to Employee
Read: Enabled
Create: Disabled
Update: Disabled
Delete: Disabled
Execute: Enabled
Promote: Disabled

Por fim, ativamos a opção “Forçar início de sessão“. Essa opção permite controlar o número de sessões web abertas que requerem licenças 4D Client. Também pode fazer logout do utilizador a qualquer momento para diminuir o número de licenças retidas.

Esse sistema de privilégios multicamadas ajuda a prevenir acesso não autorizado e garante a operação segura da aplicação.

Para saber mais, consulte a nossa publicação no blogue: Forçar login se torna padrão para todas as autenticações REST.

Adicionando um recurso de logout

Para melhorar a experiência e a segurança do usuário, é importante fornecer uma opção de logout. No nosso exemplo:

  • Um botão Logout é colocado no canto superior direito da página “Principal”.
  • A ação “logout” é adicionada a este botão no evento “On Click”.

 

Assigned permissions to ds.authentify
Read: Enabled
Create: Disabled
Update: Disabled
Delete: Disabled
Execute: Disabled
Promote: Enabled

Assigned permissions to Employee
Read: Enabled
Create: Disabled
Update: Disabled
Delete: Disabled
Execute: Enabled
Promote: Disabled

Isso permite que os utilizadores terminem a sua sessão de forma segura, eliminando quaisquer privilégios ativos e protegendo dados sensíveis.

Próximos passos

A autenticação e a gestão de privilégios são fundamentais para criar aplicações Web seguras. Para explorar melhor os recursos de autenticação e gerenciamento de privilégios, consulte os seguintes recursos:

 

Encorajamo-lo a tentar implementar estes conceitos nas suas próprias aplicações. Tem dúvidas ou ideias? Participe na discussão no fórum ou partilhe a sua opinião nos comentários abaixo. Fique atento ao próximo artigo da nossa série!

Vanessa Talbot
• Proprietário do produto - Vanessa Talbot entrou ao time 4D Program em Junho de 2014 como Proprietária do Produto e está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Desde sua chegada, trabalhou na definição de funcionalidades chaves em 4D. Trabalhou na maioria das novas funcionalidades multithread preemptivo e também em um tema muito complexo: a nova arquitetura para a aplicação engined. Vanessa é formada pela Telecom Saint-Etienne. Começou sua carreira no Instituto de Investigação Criminal como desenvolvedora do departamento audiovisual. Também trabalhou em meios de comunicação e no âmbito médico como especialista em assistência técnica, produção e documentação de novas funcionalidades.