Integrar la autenticación de usuarios en sus aplicaciones Qodly

En el blog de esta semana, nos centraremos en el tema crucial de la autenticación. Para ilustrarlo, utilizaremos el ejemplo de una aplicación diseñada para redactar las evaluaciones anuales del rendimiento de los empleados. Esta aplicación permite a los usuarios acceder de forma segura a sus cuentas autenticándose con su correo electrónico y contraseña.

Aplicación de evaluación de rendimiento

Visión general de la autenticación

La autenticación es la piedra angular de toda aplicación web, ya que garantiza que sólo los usuarios autorizados puedan acceder a información confidencial o realizar acciones específicas. En nuestro ejemplo, el proceso de conexión es simple pero efectivo, demostrando como 4D Qodly Pro maneja la autenticación de manera segura y eficiente.

El proceso de Conexión

El formulario de conexión se encuentra en la página «login» y consiste en:

  • Dos campos de entrada: vinculados al correo electrónico y a la contraseña de la fuente de datos.
  • Un botón «Iniciar sesión»: activa el proceso de autenticación.

 

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.

En Qodly Studio, hay disponibles otras plantillas de formularios predefinidas para la funcionalidad de inicio de sesión en la sección dedicada a las plantillas. Estas plantillas pueden personalizarse para adaptarse a los requisitos específicos de su aplicación.

Función: authentify()

Cuando el usuario hace clic en el botón «Iniciar sesión», se llama a la función «ds.authentify()» con el correo electrónico y la contraseña 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.

La información del usuario, como el correo electrónico y la contraseña, se almacena en la base de datos dentro de la tabla «Employee». En la función «authentify()», se realiza una simple consulta a la base de datos para verificar la información.

A continuación, se muestra un código para ilustrar este proceso:

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("usuario")
Web Form .setMessage("Autenticación correcta")
Else
Web Form .setError("Autenticación fallida")
End if
Else
Web Form .setError("Autenticación fallida")
End if

Gestión de privilegios de usuario

Antes de autenticar un usuario, es vital restringir el acceso a datos y funciones sensibles. Esta seguridad se garantiza mediante la gestión de privilegios.

En primer lugar, tenemos un privilegio denominado «none», que posee todos los derechos sobre la fuente de datos (ds), lo que garantiza un acceso completo a la base de datos. En particular, este privilegio no se asigna a ningún usuario, con lo que se mantiene un entorno seguro. Cuando se conceden derechos a un privilegio, se revocan automáticamente a todos los demás, con lo que se asegura eficazmente el 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

A continuación, añadimos un privilegio llamado «authentify». La opción «Promote» se asigna a la función «ds.authentify()». Esto significa que siempre que se llame a esta función, se aplicará automáticamente el privilegio «authentify».

A continuación, nos aseguramos de que los permisos necesarios para la autenticación se añaden a las clases de datos o a las funciones utilizadas. En nuestro ejemplo, asignamos los permisos «Read» y «Execute» a la clase de datos «Employee».

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 último, activamos la opción «Force login«. Esta opción permite controlar el número de sesiones web abiertas que requieren licencias 4D Client. También puede cerrar la sesión del usuario en cualquier momento para disminuir el número de licencias conservadas.

Este sistema de privilegios multinivel ayuda a prevenir el acceso no autorizado y garantiza un funcionamiento seguro de la aplicación.

Para obtener más información, consulte la entrada de nuestro blog: Forzar el inicio de sesión se convierte en el valor predeterminado para todas las autenticaciones REST.

Añadir una función de DESCONEXión

Para mejorar la experiencia del usuario y la seguridad, es importante ofrecer una opción de cierre de sesión. En nuestro ejemplo:

  • Se coloca un botón de cierre de sesión en la esquina superior derecha de la página «Main».
  • La acción «Logout» se añade a este botón en el 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

Esto permite a los usuarios finalizar su sesión de forma segura, eliminando todo privilegio activo y protegiendo los datos confidenciales.

Pasos siguientes

La autenticación y la gestión de privilegios son fundamentales para crear aplicaciones web seguras. Para profundizar en las capacidades de la autenticación y la gestión de privilegios, consulte los siguientes recursos:

 

Lo animamos a que intente aplicar estos conceptos en sus propias aplicaciones. ¿Tiene preguntas o ideas? Únase al debate en el foro o comparta su opinión en los comentarios a continuación. Esté atento al próximo artículo de nuestra serie.

Vanessa Talbot
• Propietario de producto - Vanessa Talbot llegó al equipo de 4D Program en junio de 2014. Como Propietario de producto, está a cargo de escribir las historias de los usuarios y luego traducirlas a especificaciones funcionales. Su papel es también asegurarse de que la implementación de la funcionalidad entregada cumpla con las necesidades del cliente. Desde su llegada, ha trabajado en la definición de funcionalidades claves en 4D. Ha trabajado en la mayoría de las nuevas funcionalidades de multi hilo apropiativo y también en un tema muy complejo: la nueva arquitectura para la aplicación engined. Vanessa es licenciada por Telecom Saint-Etienne. Comenzó su carrera en el Instituto de Investigación Criminal como desarrolladora del departamento audiovisual. También ha trabajado en medios de comunicación y en el ámbito médico como experta en soporte técnico, producción y documentación de nuevas funcionalidades.