En este ejemplo comparto cómo agregar un rol de usuario luego de un registro exitoso en nuestro sitio permitiendole al usuario elegir el rol en el formulario de registro.
- Debemos elegir el evento “Form submit” y completar “Restrict by form ID” con “user-register-form” y “Restrict by entity type ID” con “user”. De esta manera el evento sólamente es ejecutado en el formulario de registro solamente.
- Ahora debemos ejecutar una acción que cambie el usuario actual por uno con mayores privilegios. En nuestro evento “Form submit” el usuario que está ejecutando ese evento, es el usuario anónimo, por lo tanto, este usuario no tiene permisos para asignar roles. Entonces, para poder asignar los roles, tenemos que ejecutar la acción “User: switch current account”. Y poner en “User ID (UID)” el valor de un usuario con suficientes permisos para asignar un rol, en mi caso simplemente voy a usar el usuario “1” que es el administrador principal del sitio. Una buena práctica sería crear un usuario con permisos limitados para asignar roles, ya que el usuario 1 tiene permisos muy elevados.
- En mi formulario de registro agregué un nuevo campo llamado “Role_ID_selected” que le permite al usuario elegir un rol. En mi condición, pregunto qué valor tiene ese campo utilizando Compare two scalar values completando “First value” con “[form:values:Role_ID_selected]” y “Second value” con “store_owner” o “content_editor”.
- En el último paso ejecutamos la acción Add a role to the selected users eligiendo el rol correspondiente en cada caso y en el campo “Entity” escribir “user” que hace referencia al usuario anónimo que está ejecutando el evento.

Ahora si vamos a /admin/people vemos los usuarios registrados con los roles correspondientes.

Cómo agregar un campo extra al formulario de registro de usuario usando ECA?
En el ejemplo anterior usé un campo llamado “Role_ID_selected” que es un campo que agregué en el mismo modelo de ECA.
- Para poder hacerlo debemos elegir el evento Build Form y en el campo “Restrict by form ID” completar “user-register-form” para que el único formulario que cambiemos sea el de registro de usuario.
- Ahora agregamos la acción Form: add options field y completamos “Field name” como “Role ID selected” y en “Options” ponemos “content_editor:Content Editor,store_owner:Store Owner” que son las opciones que queremos que el campo tenga. Deben estar separadas por coma y el primer valor es el valor en crudo y el segundo es lo que se ve en pantalla.

Y así es como se ve nuestro formulario luego de guardar nuestro modelo:
