29 de junio de 2018

:: Alfresco. Añadir check para mostrar la clave en el login

Es habitual -en muchos formularios de control de acceso (login)- que exista la posibilidad de que el usuario marque un check para mostrar la clave que ha insertado.
De esta manera, describiremos a continuación cómo podemos implementar esta característica.

1.- Localizamos el fichero: "login.get.html.ftl" ubicado en: "tomcat\webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\components\guest"


2.- Copiamos el fichero anterior en la siguiente ubicación: "\tomcat\shared\classes\alfresco\web-extension\site-webscripts\org\alfresco\components\guest"
En caso de que no exista alguna de las carpetas, será necesario crearlas.


3.- En el fichero que hemos copiado, llevamos a cabo las siguientes modificaciones:
Añadimos el check que nos permitirá mostrar la clave insertada.

<@markup id="form">
         <form id="${el}-form" accept-charset="UTF-8" method="post" action="${loginUrl}" class="form-fields login ${edition}">
            <@markup id="fields">
            <input type="hidden" id="${el}-success" name="success" value="${successUrl?replace("@","%40")?html}"/>
            <input type="hidden" name="failure" value="${failureUrl?replace("@","%40")?html}"/>
            <div class="form-field">
               <label for="${el}-username">${msg("label.username")}</label><br/>
               <input type="text" id="${el}-username" name="username" maxlength="255" value="<#if lastUsername??>${lastUsername?html}</#if>" />
            </div>
            <div class="form-field">
               <label for="${el}-password">${msg("label.password")}</label><br/>
               <input type="password" id="${el}-password" name="password" maxlength="255" />
            </div>
   <div class="form-field">
    <input type="checkbox" id="showpassword" onclick="showPassword('${el}-password')"/>
    <label for="showpassword"> Mostrar clave</label><br/>
   </div>
            </@markup>
            <@markup id="buttons">
            <div class="form-field">
               <input type="submit" id="${el}-submit" class="login-button" value="${msg("button.login")}"/>
            </div>
            </@markup>
         </form>
      </@markup>

Añadiremos el checkbo y mensaje correspondiente.

4.- En este mismo fichero, insertamos la función javascript encargada de mostrar o no la clave insertada por el usuario.

function showPassword(id)
   {
    var elemento = document.getElementById(id);
    if (elemento.type === "password") {
     elemento.type = "text";
    } else {
     elemento.type = "password";
    }
   }



Tras reiniciar el servicio de Alfresco, nos aparecerá el formulario de login modificado, con la posibilidad de mostrar o no la clave.

25 de junio de 2018

:: Alfresco. Crear página de login

La prueba de concepto que vamos a realizar consistirá en crear una página de login personalizada, para nuestro gestor documental Alfresco. En nuestro caso, para la versión: 5.2.


Los pasos a seguir son los descritos a continuación:

1.- En el fichero "share-config-custom.xml" ubicado en: "tomcat\shared\classes\alfresco\web-extension" añadimos las siguientes líneas


<alfresco-config>
    <config evaluator="string-compare" condition="WebFramework">
    <web-framework>
    <defaults>
    <page-type>
       <id>login</id>
       <page-instance-id>netic360-login</page-instance-id>
    </page-type>
    </defaults>
    </web-framework>
    </config>
 </alfresco-config>


2.- En la siguiente ubicación: "tomcat\shared\classes\alfresco\web-extension\site-data\pages" crearemos un fichero al que podemos llamar: "netic360-login.xml" con el siguiente contenido:


<page>
   <template-instance>netic360-login</template-instance>
   <authentication>none</authentication>
</page>


El nivel de autenticación de la página que hemos creado debe ser: "None" para que podamos acceder, ya que de lo contrario, se le solicitaría al usuario un login previo.

3.- En la siguiente ubicación: "tomcat\shared\classes\alfresco\web-extension\site-data\template-instances" crearemos un fichero al que denominaremos: "netic360-login.xml" con el siguiente contenido:


<template-instance>
   <template-type>netic360/netic360-login</template-type>
</template-instance>


4.- En la siguiente ubicación: "tomcat\shared\classes\alfresco\web-extension\templates\netic360" crearemos un fichero al que denominaremos: "netic360-login.ftl" con el siguiente contenido:


<html>
   <head>
      <title>NeTIC360 Login</title>
   </head>
   <body>
      <h2>NeTIC360 Login</h2>  
      <form id="loginform" accept-charset="UTF-8" method="post" action="${url.context}/page/dologin">
         Username: <input type="text" id="username" name="username"/><br>
         Password: <input type="password" id="password" name="password"/><br>
         <input type="submit" id="btn-login" />
      </form>
   </body>
</html>


Reiniciaremos el servicio de Alfresco y accederemos al gestor documental para comprobar el nuevo login.

20 de junio de 2018

:: Alfresco. Modificar el ancho de la columna "Mis ficheros"

Como prueba de concepto, necesitamos modificar el ancho de la columna de la izquierda donde aparece el menú, en el apartado: "Mis ficheros"


Para llevar a cabo este cambio (Alfresco 5.2), buscaremos el siguiente fichero:

"\tomcat\webapps\share\WEB-INF\classes\alfresco\templates\org\alfresco\myfiles.ftl"


<script type="text/javascript">//<![CDATA[</p>
<p>
new Alfresco.widget.Resizer("Repository").setOptions({</p>
<p>
initialWidth: 225  <= Valor a modificar</p>
<p>
});</p>
<p>
//]]></script>



De todas formas se podría sobrescribir este comportamiento con una nueva plantilla ".ftl" siguiendo las buenas prácticas (carpeta "\tomcat\shared").

15 de junio de 2018

:: Operadores de Google. Un repaso

A la hora de realizar búsquedas en Google podemos hacer uso de determinados operadores que pueden sernos de utilidad.

site:dominio
Nos muestra todas las páginas indexadas para un dominio especificado

site:dominio filetype:pdf
Nos muestra los documentos pdf indexados, para un dominio especificado

allintexto:texto
Busca una cadena de texto dentro un dominio especificado

allintitle:texto
Busca una cadena de texto dentro del título de una página web

allinurl:texto
Busca una cadena de texto dentro de la url

inurl:texto
Buscar una dena de texto en la url

author:texto
Busca contenido cuyo author es el especificado

cache:dominio
Nos muestra la relación de páginas que se encuentran indexadas en la caché

link:dominio
Busca enlaces que apunten al dominio especificado

related:dominio
Nos muestra todas las páginas relacionadas con el dominio especificado

Más información: https://www.exploit-db.com/google-hacking-database/

10 de junio de 2018

:: Alfresco. Script para asignar un workflow

La prueba de concepto consiste en asociar un workflow de revisión a los documentos que se suben a una determinada carpeta.
Para ello, sobre esta carpeta, definiremos una regla de contenido de forma que se ejecute el script especificado.

El contenido del script "crear_workflow.js" podría ser algo similar a lo siguiente:


function createAdvancedWorkflow(docNode) {
   logger.system.out("Dentro de la función");
   var workflow = actions.create("start-workflow");
   workflow.parameters.workflowName = "activiti$activitiReview";
   logger.system.out("workflow:"+workflow);
   workflow.parameters["bpm:workflowDescription"] = "Revisa por favor este documento: "+docNode.name;
   logger.system.out("Descripcion");
   workflow.parameters["bpm:assignee"] = people.getPerson("usr1"); // TODO: not hard coded, this is testing
   logger.system.out("Asignado");

   //var futureDate = new Date();
   //futureDate.setDate(futureDate.getDate() + 3);
   //workflow.parameters["bpm:workflowDueDate"] = futureDate; 
   logger.system.out("Antes de salir");
   workflow.execute(docNode);
}

function main() {
       var docNode = search.findNode(document.nodeRef); 
       var name = document.name;
       logger.system.out("Documento:"+name);

       createAdvancedWorkflow(docNode);

}
main();


4 de junio de 2018

:: Alfresco .Consultar los grupos a los que pertenece un usuario (Tip)

Una forma sencilla de obtener los grupos a los que pertenece un usuario de Alfresco, es realizando la siguiente llamada:




http://localhost:8181/alfresco/s/api/people/USUARIO?groups=true

Tendremos que sustituir el literal: "USUARIO" por el nombre de usuario que deseemos consultar.

La respuesta que obtendremos será algo similar a lo siguiente:

{
 "url": "\/alfresco\/s\/api\/people\/usr3",
 "userName": "usr3",
 "enabled": true,
 "firstName": "usr3",
 "lastName": "",
 "jobtitle": null,
 "organization": null,
 "organizationId": null, 
 "location": null,
 "telephone": null,
 "mobile": null,
 "email": "gis@asac.as",
 "companyaddress1": null,
 "companyaddress2": null,
 "companyaddress3": null,
 "companypostcode": null,
 "companytelephone": null,
 "companyfax": null,
 "companyemail": null,
 "skype": null,
 "instantmsg": null,
 "userStatus": null,
 "userStatusTime": null,
 "googleusername": null,
 "quota": -1,
 "sizeCurrent": 0,
 "emailFeedDisabled": false,
 "persondescription": null,
 "authorizationStatus": null,
 "isDeleted": false,
 "isAdminAuthority": false
,
 "capabilities":
 {
  "isAdmin":
  false
    ,"isMutable":
  true
    ,"isGuest":
  false
   },
 "groups": [
 {
  "itemName": "GROUP_Contabilidad",
  "displayName": "Contabilidad"
 }],
 "immutability":
 {
 }
}


:: Liferay. Script para ir al inicio de la página

En diversos temas de apariencia es necesario contar un enlace que permita al usuario realizar un scroll al inicio de la página. Este comport...