25 de mayo de 2020

:: Liferay. Tema del que heredamos

A la hora de crear un tema en Liferay, podemos indicarle aquel del que heredamos, mediante la propiedad siguiente, definida en el fichero: build.xml


<property name="theme.parent" value="_styled" />

20 de mayo de 2020

:: Modificar "label" de un formulario desde Javascript

Como prueba de concepto, modificaremos el literal que aparece en el login de un portal web.
En lugar de:
    Dirección de correo:
    Contraseña:

Debe aparecer:
    Email:
    Contraseña:

El código javascript necesario es el siguiente:

var labels = document.getElementsByTagName('label');
for (var i = 0; i < labels.length; i++) {
    if (labels[i].htmlFor == '_58_login') {
labels[i].innerText="Email"
}
}

15 de mayo de 2020

:: Modo oscuro en Chrome

Únicamente a modo de prueba de concepto, para habilitar el modo oscuro en nuestro navegador Chrome, escribiremos en la barra de direcciones:

chrome://flags/enable-force-dark

Una vez en esta página de configuración, habilitaremos el modo oscuro.

12 de mayo de 2020

:: Liferay. Login contra LDAP no funciona


El comportamiento en nuestro portal de Liferay era que los usuarios no podían validarse a pesar de que estos habían sido correctamente importados desde el LDAP.
A la hora de la validación, no se obtenía ningúnmensaje en el log  y unicamente el login en el portal fallaba. 
Habilitamos las trazas siguientes:com.liferay.portal.security.auth.LDAPAuth
Tras habilitar las trazas, el error obtenido en el log era este:
09:19:37,676 DEBUG [ajp-bio-8009-exec-38][LDAPAuth:176] Failed to bind to the LDAP server with 
userDN CN=xxxxxx,OU=xxxxxxx, OU=xxxxx, DC=xxxxxx, DC=LOCAL and password xxxxxxxxxx
javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C090442, comment: AcceptSecurityContext error, data 531, v3839_] [Sanitized]
        at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3087)
        at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:3033)
        at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2835)
        at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2749)
        at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:316)


Para obtener el motivo del fallo en el proceso de login, debemos buscar:
AcceptSecurityContext error, data 531


El motivo por el que los usuarios no pueden loguearse es debido a una restricción impuesta en el propio LDAP:49 / 531 RESTRICTED_TO_SPECIFIC_MACHINES Indicates an Active Directory (AD) AcceptSecurityContext data error that is logon failure caused because the user is not permitted to log on from this computer. Returns only when presented with a valid username and valid password credential.

Más información sobre posibles errores:
https://docs.servicenow.com/bundle/helsinki-platform-administration/page/administer/reference-pages/reference/r_LDAPErrorCodes.html

8 de mayo de 2020

:: Liferay. Cómo determinar el idioma seleccionado desde un script

Como prueba de concepto utilizaremos un script para mostrar la política de cookies en un portal Liferay, en función del idioma seleccionado por el usuario o en el que figura en las preferencias de presentación.

En las páginas del sitio web > javascript insertaremos el script AUI necesario, pudiendo distinguir el idioma mediante la llamada al siguiente método:

themeDisplay.getLanguageId();

De esta manera, podríamos tener algo similar a lo siguiente:
 
var idioma=themeDisplay.getLanguageId();

var txtDescripcion="Lorem ipsum dolor sit amet.";
var txtAceptar="Aceptar";
var txtEnlace="Más información";

if("en_EN"==idioma){
	txtDescripcion="Lorem ipsum dolor sit amet.";
	txtAceptar="Ok";
	txtEnlace="More information";
}
 
 

4 de mayo de 2020

:: Unidades em

En desarrollo web es habitual utilizar unidades "em", para especificar el tamaño de las fuentes utilizadas, ¿pero de dónde viene esta unidad y cuál es su significado?

El em es una unidad que tiene su origen en el diseño tipográfico y equivale al espacio que ocupa el ancho de una letra "M" de un determinado cuerpo y alfabeto.

:: Cookies de nuestra página web. ¿Para qué sirve cada una?

A menudo una pregunta que nos hacen es qué cookies se están utilizando en mi página y para qué sirven. Para ver las cookies, podemos selecci...