JavaScript https://front.id/es es Ecoembes https://front.id/en/portfolio/ecoembes <span class="field field--name-title field--type-string field--label-hidden">Ecoembes</span> <div class="clearfix text-formatted field field--name-field-detail-body field--type-text-long field--label-hidden field__item"><p>Trabajando en nuestro CMS favorito (Drupal) y haciendo uso de diversas tecnologías como Js, Jquery, CSS y Compass, hemos dado soporte a diferentes necesidades de la web en general, como componentes, sliders y gestión de contenidos. Otro reto que asumimos en este sitio, fue la creación de un tema para adaptarlo a una versión móvil. Esto se implementó para que el sitio reconozca el dispositivo desde el que estaba entrando y muestre la versión para computadoras o dispositivos móviles según sea necesario.</p> <p>En el mantenimiento de Ecoembes nos hacemos cargo en las reuniones con el cliente para dar una rápida retroalimentación sobre el impacto de los cambios, de alta prioridad y el plazo de resolución esperado.</p> <p dir="ltr"><a href="http://www.ecoembes.com/en/"><u>www.ecoembes.com/en/</u></a><span>  </span></p></div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/14" typeof="schema:Person" property="schema:name" datatype="">By Casanova</span></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 27/03/2018 - 20:53</span> <div class="field field--name-field-roles field--type-string field--label-hidden field__items"> <div class="field__item">Backend Developer</div> <div class="field__item">Frontend Developer</div> <div class="field__item">QA</div> <div class="field__item">UX</div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-hidden field__items"> <div class="field__item"><a href="/es/taxonomy/term/11" hreflang="es">JavaScript</a></div> <div class="field__item"><a href="/es/taxonomy/term/2" hreflang="es">Drupal</a></div> <div class="field__item"><a href="/es/taxonomy/term/14" hreflang="es">CSS</a></div> <div class="field__item"><a href="/en/taxonomy/term/58" hreflang="en">Drupal 8 / D8</a></div> </div> <div class="field field--name-field-collage-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/2019-03/ecoembes_2.jpg" width="1160" height="2772" alt="Varias piezas y desarrollos realizados para Ecoembes" typeof="foaf:Image" /> </div> Tue, 27 Mar 2018 18:52:17 +0000 Casanova 103 at https://front.id Drinki https://front.id/en/node/100 <span class="field field--name-title field--type-string field--label-hidden">Drinki ES</span> <div class="clearfix text-formatted field field--name-field-detail-body field--type-text-long field--label-hidden field__item"><p>Drinki (que ahora ha cambiado a DUSK) es en realidad un sitio web que promueve un APP para encontrar bares según los gustos del usuario e incluso localiza bares alrededor de los usuarios que tienen ofertas/promociones. Front.id desarrolló el frontend y el backend con Simphony, con integración de wordpress; animaciones y efectos.</p> <p><a href="https://drinki.com"><u>https://drinki.com</u></a><span> </span></p></div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/14" typeof="schema:Person" property="schema:name" datatype="">By Casanova</span></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 27/03/2018 - 20:44</span> <div class="field field--name-field-roles field--type-string field--label-hidden field__items"> <div class="field__item">Backend Developer</div> <div class="field__item">Frontend Developer</div> <div class="field__item">UX</div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-hidden field__items"> <div class="field__item"><a href="/es/taxonomy/term/11" hreflang="es">JavaScript</a></div> <div class="field__item"><a href="/en/taxonomy/term/51" hreflang="en">Theming</a></div> </div> Tue, 27 Mar 2018 18:42:22 +0000 Casanova 100 at https://front.id La Drupalera https://front.id/en/portfolio/la-drupalera <span class="field field--name-title field--type-string field--label-hidden">La Drupalera</span> <div class="clearfix text-formatted field field--name-field-detail-body field--type-text-long field--label-hidden field__item"><p>Para este proyecto desarrollamos un sitio web ligero, limpio y sencillo. Realizamos el diseño y desarrollo de ambos: backend y frontend.</p> <p>También creamos algunos efectos con Parallax, este recurso es muy útil para dar a la web un cierto dinamismo y contrarrestar la planitud. Tampoco debemos olvidar que los dispositivos móviles promueven la verticalidad del diseño web por lo que el efecto de Parallax es más que interesante para añadir valor al tedioso scroll y sorprender al usuario con algo que no se espera.</p> <p><a href="https://www.ladrupalera.com/es">www.ladrupalera.com/es</a></p></div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/14" typeof="schema:Person" property="schema:name" datatype="">By Casanova</span></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 27/03/2018 - 20:35</span> <div class="field field--name-field-roles field--type-string field--label-hidden field__items"> <div class="field__item">Backend Developer</div> <div class="field__item">Frontend Developer</div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-hidden field__items"> <div class="field__item"><a href="/es/taxonomy/term/11" hreflang="es">JavaScript</a></div> <div class="field__item"><a href="/es/taxonomy/term/2" hreflang="es">Drupal</a></div> <div class="field__item"><a href="/en/taxonomy/term/51" hreflang="en">Theming</a></div> </div> <div class="field field--name-field-collage-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/2019-03/Drupalera_2.jpg" width="1160" height="1841" alt="Home page - Parallax effect." typeof="foaf:Image" /> </div> Tue, 27 Mar 2018 18:34:28 +0000 Casanova 97 at https://front.id SIASAR https://front.id/en/portfolio/siasar <span class="field field--name-title field--type-string field--label-hidden">SIASAR</span> <div class="clearfix text-formatted field field--name-field-detail-body field--type-text-long field--label-hidden field__item"><p>Nuestro equipo contribuyó al desarrollo del backend multilingüe personalizable así como al frontend y la aplicación móvil desarrollada con phonegap y JS. Todos los cuestionarios se almacenan en Drupal. Este backend permite a los países personalizar el contenido en función de sus necesidades y de los datos paramétricos nacionales/regionales. Otro componente del sistema se llama GEODashboard y es una aplicación puramente cliente. Todo lo que necesita para funcionar es un servidor de mapas con WMS, WFS y WPS habilitado. La idea detrás de este proyecto es que cualquiera que ya tenga un servidor compatible con OGC puede crear un panel de control simple y agradable con sólo unas pocas líneas de JavaScript.</p> <p>También contribuimos al desarrollo del sitio web <a href="http://www.data.siasar.org"><u>www.data.siasar.org</u></a>. Un hermoso Dashboard dinámico que presenta información comprensible sobre las entidades principales del sistema, desarrollado con tecnologías React y GeoServer. Actualmente seguimos colaborando con el soporte de drupal y recientemente hemos añadido competencias en DevOps y administración de sistemas. Ahora somos responsables de los servidores de la iniciativa Global.</p> <p dir="ltr"><a href="http://www.siasar.org">www.siasar.org</a></p></div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/14" typeof="schema:Person" property="schema:name" datatype="">By Casanova</span></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 27/03/2018 - 20:29</span> <div class="field field--name-field-roles field--type-string field--label-hidden field__items"> <div class="field__item">Backend Developer</div> <div class="field__item">Frontend Developer</div> <div class="field__item">DevOps</div> <div class="field__item">UX</div> <div class="field__item">Project Manager</div> <div class="field__item">QA</div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-hidden field__items"> <div class="field__item"><a href="/es/taxonomy/term/8" hreflang="es">Server</a></div> <div class="field__item"><a href="/es/taxonomy/term/11" hreflang="es">JavaScript</a></div> <div class="field__item"><a href="/en/taxonomy/term/64" hreflang="en">Drupal 7</a></div> <div class="field__item"><a href="/es/taxonomy/term/14" hreflang="es">CSS</a></div> </div> <div class="field field--name-field-collage-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/2019-03/siasar_2.jpg" width="1160" height="2773" alt="Sitio web corporativo y gráficas de datos." typeof="foaf:Image" /> </div> Tue, 27 Mar 2018 18:27:12 +0000 Casanova 96 at https://front.id Paralímpicos https://front.id/en/portfolio/paralimpicos <span class="field field--name-title field--type-string field--label-hidden">Paralímpicos</span> <div class="clearfix text-formatted field field--name-field-detail-body field--type-text-long field--label-hidden field__item"><p>En este proyecto migramos y adaptamos su previo gestor de contenidos basado en asp.net a Drupal. Realizamos un nuevo diseño para el frontend del sitio basado en varios requerimientos específicos solicitados por el cliente. Teniendo en cuenta también las restricciones de accesibilidad (AA y AAA en algunos contenidos) y responsiveness solicitadas.</p> <p>Una vez finalizada la migración, apoyamos al Comité en el diseño y desarrollo de una nueva utilidad en el portal para el envío de boletines mensuales y comunicación corporativa en línea, así como de un nuevo portal de contenidos multimedia. Diseñamos y desarrollamos tanto el backend como el frontend.</p> <p><a href="http://www.paralimpicos.es/">www.paralimpicos.es</a></p></div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/14" typeof="schema:Person" property="schema:name" datatype="">By Casanova</span></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 27/03/2018 - 20:26</span> <div class="field field--name-field-roles field--type-string field--label-hidden field__items"> <div class="field__item">Backend Developer</div> <div class="field__item">Frontend Developer</div> <div class="field__item">UX</div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-hidden field__items"> <div class="field__item"><a href="/es/taxonomy/term/2" hreflang="es">Drupal</a></div> <div class="field__item"><a href="/es/taxonomy/term/11" hreflang="es">JavaScript</a></div> <div class="field__item"><a href="/en/taxonomy/term/51" hreflang="en">Theming</a></div> <div class="field__item"><a href="/es/taxonomy/term/14" hreflang="es">CSS</a></div> </div> <div class="field field--name-field-collage-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/2019-03/paralimpicos_int.jpg" width="1160" height="1608" alt="Sitio web corporativo y detalle del canal TV desarrollado" typeof="foaf:Image" /> </div> Tue, 27 Mar 2018 18:17:31 +0000 Casanova 95 at https://front.id SM Group https://front.id/en/portfolio/sm-group <span class="field field--name-title field--type-string field--label-hidden">Grupo SM</span> <div class="clearfix text-formatted field field--name-field-detail-body field--type-text-long field--label-hidden field__item"><p>En este proyecto, todos los sitios web de WordPress específicos de la región creados por el editor fueron migrados para generar un único portal en Drupal para poder tener el mismo aspecto y conseguir una estrategia multi-sitio, en la que cada sitio corresponde a cada uno de los países donde la marca tiene presencia. En este proyecto trabajamos en nuestro CMS preferido (Drupal) y haciendo uso de tecnologías como Js y CSS para lograr los objetivos solicitados por el cliente.</p> <p><a href="http://www.grupo-sm.com">www.grupo-sm.com</a></p> <p>Desarrollamos un sitio de búsqueda de contenido global específico para la marca: <a href="https://buscaconsm.com.pe/">buscaconsm.com.pe</a></p></div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/14" typeof="schema:Person" property="schema:name" datatype="">By Casanova</span></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 27/03/2018 - 20:17</span> <div class="field field--name-field-roles field--type-string field--label-hidden field__items"> <div class="field__item">Backend Developer</div> <div class="field__item">Frontend Developer</div> <div class="field__item">Project Manager</div> <div class="field__item">Information Architect</div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-hidden field__items"> <div class="field__item"><a href="/es/taxonomy/term/4" hreflang="es">CKEditor</a></div> <div class="field__item"><a href="/es/taxonomy/term/11" hreflang="es">JavaScript</a></div> <div class="field__item"><a href="/es/taxonomy/term/2" hreflang="es">Drupal</a></div> <div class="field__item"><a href="/es/taxonomy/term/14" hreflang="es">CSS</a></div> </div> <div class="field field--name-field-collage-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/2019-03/grupo_sm.jpg" width="1160" height="1608" alt="Busca con SM y sitio web corporatio" typeof="foaf:Image" /> </div> Tue, 27 Mar 2018 18:14:30 +0000 Casanova 94 at https://front.id goCO2free https://front.id/en/portfolio/goco2free <span class="field field--name-title field--type-string field--label-hidden">goCO2free</span> <div class="clearfix text-formatted field field--name-field-detail-body field--type-text-long field--label-hidden field__item"><p>Ayudamos a GoCo2Free a crear una experiencia en línea que educa y anima a las comunidades a rastrear y reducir su huella de carbono de una manera competitiva, pero positiva. </p> <p>Proporcionamos diseño y consultoría de UX para ayudar a agilizar los flujos de usuarios, a la vez que nos centramos en las capacidades del panel de control y el seguimiento. Es una plataforma multidominio, cada dominio pertenece a una ciudad diferente de EE.UU., y cada uno tiene su propio equipo para administrar el sitio. Colaboramos con la agencia Lullabot en este proyecto y actualmente somos el equipo principal de desarrollo.</p> <p><a href="https://www.communityclimate.org"><u>www.communityclimate.org</u></a><span> </span></p></div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/14" typeof="schema:Person" property="schema:name" datatype="">By Casanova</span></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 27/03/2018 - 20:08</span> <div class="field field--name-field-roles field--type-string field--label-hidden field__items"> <div class="field__item">Backend Developer</div> <div class="field__item">Frontend Developer</div> <div class="field__item">UX</div> <div class="field__item">Project Manager</div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-hidden field__items"> <div class="field__item"><a href="/en/taxonomy/term/51" hreflang="en">Theming</a></div> <div class="field__item"><a href="/es/taxonomy/term/2" hreflang="es">Drupal</a></div> <div class="field__item"><a href="/es/taxonomy/term/11" hreflang="es">JavaScript</a></div> <div class="field__item"><a href="/es/taxonomy/term/14" hreflang="es">CSS</a></div> </div> <div class="field field--name-field-collage-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/2019-03/goCO2free.jpg" width="1160" height="1360" alt="Ejemplos de los distintos sitios vinculados a la iniciativa" typeof="foaf:Image" /> </div> Tue, 27 Mar 2018 18:07:17 +0000 Casanova 93 at https://front.id Dolce Gusto Advents Calendar https://front.id/en/portfolio/dolce-gusto-advents-calendar <span class="field field--name-title field--type-string field--label-hidden">Dolce Gusto Calendarios de Adviento</span> <div class="clearfix text-formatted field field--name-field-detail-body field--type-text-long field--label-hidden field__item"><p>A través de js, CSS/SASS hemos creado animaciones, aplicado la capa responsive correspondiente y obviamente el layout de la página de inicio. Creamos la animación principal y el menú interactivo sobre la animación. Utilizamos handlebars para generar componentes HTML independientes y manejables como el día activo, el modal, el modal de los días futuros, etc. Aquí tienes algunos ejemplos de piezas realizadas:</p> <p dir="ltr"><a href="https://www.dolce-gusto.de/neues-premium-design">www.dolce-gusto.de/neues-premium-design</a><span> </span></p> <p dir="ltr"><a href="https://ernaehrungsstudio.nestle.de/adventskalender-gewinnspiel">ernaehrungsstudio.nestle.de/adventskalender-gewinnspiel</a><span> </span></p> <p> </p></div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/es/user/14" typeof="schema:Person" property="schema:name" datatype="">By Casanova</span></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 27/03/2018 - 20:06</span> <div class="field field--name-field-roles field--type-string field--label-hidden field__items"> <div class="field__item">Frontend development</div> <div class="field__item">UX</div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-hidden field__items"> <div class="field__item"><a href="/en/taxonomy/term/51" hreflang="en">Theming</a></div> <div class="field__item"><a href="/es/taxonomy/term/14" hreflang="es">CSS</a></div> <div class="field__item"><a href="/es/taxonomy/term/11" hreflang="es">JavaScript</a></div> </div> <div class="field field--name-field-collage-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/2019-03/dolce-gusto_0.jpg" width="1160" height="1608" alt="Portfolio Dolce Gusto Landing Pages" typeof="foaf:Image" /> </div> Tue, 27 Mar 2018 17:57:36 +0000 Casanova 92 at https://front.id Number.formatCurrency() https://front.id/es/articles/numberformatcurrency <div data-history-node-id="200" class="layout layout--onecol"> <div class="layout__region layout__region--content"> <div class="field field--name-node-title field--type-ds field--label-hidden field__item"> <a href="/es/articles/numberformatcurrency" hreflang="es">Number.formatCurrency()</a> </div> <div class="field field--name-node-submitted-by field--type-ds field--label-hidden field__item">Submitted by <span lang="" about="/es/user/10" typeof="schema:Person" property="schema:name" datatype="">By Capy</span> on Monday, December 30, 2019 - 10:00.</div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>A veces tengo que formatear un número a una moneda en concreto, y debido a que esto se ha vuelto algo común en estos años he decidido crear una función para simplificar esta tarea.</p> <p><strong><em>Number.formatCurrency()</em></strong> Es un <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain">prototype</a>, por lo que simplemente puedes usarlo sobre un número como por ejemplo <strong><em>100000.formatCurrency()</em></strong></p> <p>Admite una serie de argumentos Que permiten controlar el tipo de moneda, si muestra o no el símbolo de la moneda y el idioma en el que quieres el formateo.</p> <p>Sin mas preámbulos, os dejo una pagina con la demo y el repositorio.</p> <p><iframe src="https://frontid.github.io/formatCurrency/" style="border: none; width: 100%; height: 680px;"></iframe></p> <p>Repo: <strong><a href="https://github.com/frontid/formatCurrency">https://github.com/frontid/formatCurrency</a></strong></p> <p>Saludos!</p> </div> </div> </div> Mon, 30 Dec 2019 09:00:00 +0000 Capy 200 at https://front.id Headless drupal: No es oro todo lo que reluce https://front.id/es/articles/headless-drupal-no-es-oro-todo-lo-que-reluce <div data-history-node-id="182" class="layout layout--onecol"> <div class="layout__region layout__region--content"> <div class="field field--name-node-title field--type-ds field--label-hidden field__item"> <a href="/es/articles/headless-drupal-no-es-oro-todo-lo-que-reluce" hreflang="es">Headless drupal: No es oro todo lo que reluce</a> </div> <div class="field field--name-node-submitted-by field--type-ds field--label-hidden field__item">Submitted by <span lang="" about="/es/user/27" typeof="schema:Person" property="schema:name" datatype="">By alvar0hurtad0</span> on Monday, December 17, 2018 - 10:00.</div> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><h2>¿Qué es un drupal desacoplado?</h2> <p>En pocas palabras se trata de tener dos aplicaciones diferentes, una para el front, normalmente con un framework de javascript (vuejs, react, angular...) y otra para el back, que es nuestro drupal.</p> <p>En algunas ocasiones los roles encargados de la edición de contenidos y la administración general de la herramienta, reutilizan la parte de administración de drupal para no tener que hacer toda esa parte en la aplicación de frontend. Si es algo que solo van a ver "los de casa" se puede explicar que hay dos aplicaciones y así nos ahorramos un montón de trabajo.</p> <h2>¿Qué problemas resuelve desacoplar el frontend del backend?</h2> <p>El principal problema que resuelve es la libertad a la hora de utilizar el HTML que los frontend quieran. Es decir, no obligamos a los frontend a utilizar el HTML que nos generan módulos tan útiles (para backend) como views, webform, paragraph, etc. A pesar de que todas las plantillas se pueden sobreescribir, la experiencia nos hace ver que muchos frontend terminan cansados de sobreescribir plantillas hacer preprocess, etc.</p> <p>Con una aplicación desacoplada, todo esto se termina, los frontend hacen toda la aplicación con tecnologías en las que se sienten cómodos (HTML, Javascript y el generrador de CSS de turno) y solo interaccionan con el backend para pedirle los datos a la API. Incluso pueden tener una API que devuelva datos ficticios para hacer todo su trabajo y establecer esa API como "contrato" para que los backend hagan su trabajo a la vez y que nadie dependa de nadie.</p> <p>Otro gran problema que resolvemos es que tenemos mucho más control sobre las URL que publicamos. Seguramente a muchos nos habrá pasado que creamos una taxonomía, o una entidad X para categorizar cosas dentro de un contexto determinado. Las entidades que creamos posiblemente no tengan sentido por si solas, en cambio tenemos una URL pública para poder "ver" ese elemento. Hay muchos mecanismos para que esa URL no sea accesible o simplemente no exista, pero muchas veces nos la dejamos abierta hasta que llega google, la indexa y alguien nos dice "tenemos una página desmaquetada" (OF!).</p> <p>Desacoplando tenemos mucho más control sobre este tipo de cosas, porque hay que crear las rutas.</p> <p>Hay más ventajas, pero la red está llena de charlas y artículos en los que se cuentan las bondades de este sistema y no quiero que este artículo sea uno más.</p> <h2>¿Qué problemas te crea desacoplar el frontend de drupal?</h2> <p>Este tipo de arquitecturas te resuelve unos problemas pero te crea otros, por lo que hay que elegir bien qué problemas podemos afrontar más fácilmente para decantarnos por una opción.</p> <h3>Hay que mantener dos infraestructuras</h3> <p>Esto es sencillo, si tenemos el backend en un dominio y el frontend en otro, tenemos que tener las dos aplicaciones corriendo, posiblemente en dos máquinas y seguramente con dos pilas tecnológicas completamente diferentes.</p> <p>Si nos preocupa el SEO de nuestro frontend tendremos que hacer Server Side Rendering (que la primera respuesta de nuestro frontend venga en HTML ya montado para que los buscadores lo indexen) por lo que el servidor del front estará seguramente sirviendo Node JS, y el de drupal PHP.</p> <p>Esto es trivial si tenemos un buen equipo de sistemas, pero también nos complica los despliegues cuando hay cambio de API si no la estamos versionando muy bien o no tenemos cuidado con la caché para la aplicación de frontend (recuerda que el javascript se cachea en el navegador).</p> <h3>Vamos a echar de menos cosas que nos hace drupal</h3> <ul> <li>Cuando queramos un sitemap.xml de nuestro sitio no nos valdrá con instalar el módulo.</li> <li>Cuando queramos controlar las metatags de nuestros contenidos vamos a tener que montarnos un sistema para inyectarlas correctamente en la aplicación de frontend.</li> <li>Cuando tengamos que generar ficheros descargables, por ejemplo un PDF o un CSV que dependa del usuario validado, el frontend va a tener que hacer de proxy con el fichero que genere el backend, porque nuestra aplicación estará validada en el drupal, pero nuestro navegador no, por lo que no podríamos llamar directamente a una URL de nuestro drupal.</li> <li>La autenticación con nuestra cuenta de google, twitter o facebook, se complica bastante porque los módulos de drupal que hacen que esto sea trivial actúan sobre el dominio donde está drupal.</li> <li>Los famosos mensajes de alerta y notificaciones de drupal, es algo que normalmente no tenemos en cuenta a la hora de estimar, pero ahora es un componente más a realizar.</li> <li>Tenemos que ocuparnos de ocultar enlaces a cosas que no tenemos acceso.</li> <li>... Seguramente más cosas, pero estas son las que yo he echado de menos en los proyectos que he hecho de forma desacoplada.</li> </ul> <h3>Los sistemas de autenticación no son triviales</h3> <p>No son una complicación muy grande, pero hay que tener en cuenta que los sistemas de autenticación seguros no siempre son fáciles de implementar.</p> <p>Por poner un ejemplo, con oAuth2, los token expiran cada poco tiempo y hay que renovarlos.</p> <p>"Pues se renuevan con el token de renovación"</p> <p>Claro, pero hay que tener en cuenta que esto se produce en cualquier momento, y mientras estás renovando el token puede que el usuario haga más peticiones a la API. Tenemos que ser transparentes para que el usuario no note que algo que no tiene por qué entender está ocurriendo ahí dentro.</p> <p>Esto se soluciona con una pequeña cola que se active en el momento en que recibamos un error de token expirado y que se mande de nuevo para que se resuelvan todas las promesas en cuanto lo tengamos renovado.</p> <p>Tiene solución pero es otro problema que nos vamos a encontrar.</p> <h3>Hay que afinar la seguridad de nuestra API</h3> <p>Ahora tenemos una API expuesta al público sobre la que se pueden autenticar los servicios, por lo que hay que configurar bien CORS.</p> <p>También hay que tener en cuenta que de serie no vamos a tener el mecanismo de flood que hace que si un usuario falla varios intentos de autenticación en poco tiempo tenga que esperar un rato para poder hacer login.</p> <h2>TL;DR</h2> <p>Antes de tirarte de cabeza a hacer drupal desacoplado piensa bien a qué vas a renunciar y qué vas a ganar. Puede que no merezca la pena, o puede que si.</p> </div> </div> </div> Mon, 17 Dec 2018 09:00:00 +0000 alvar0hurtad0 182 at https://front.id