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":
 {
 }
}


:: 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...