Coder Social home page Coder Social logo

Comments (1)

lordkada avatar lordkada commented on May 28, 2024

Integrazione con KvStore.io

Siccome il form scrive dei dati su kvstore.io (il quale poi scatena una email) ho fatto in modo che questo avvenga solamente se il sito è lanciato in "produzione":

JEKYLL_ENV=production jekyll serve

In caso di "sviluppo" il contact.js non viene caricato e quindi non si ottiene alcun effetto tangibile nel cliccare il bottone di submit del form

Sicurezza

Per motivi legati alla sicurezza ho previsto che l'istanza kvstore autorizzi soltanto alcuni "referer" (siti da cui è richiesta l'iniezione del js per scrivere nello storage). Quindi, tanto per intendersi, il tag:

<script src="http://www.kvstore.io/js/public.js?storage_uuid=a26d6629-e365-4dea-8d40-dcf0d1b3a1aa"\>\

dovrà essere contenuto in una pagina html servita da un dominio/sottodominio "coderdojomilano".

Per il momento, visto che siamo ancora in sviluppo pieno e per evitarci problemi inutili, il referer è lasco, ovvero accetta qualunque connessione (quindi anche da localhost). Quando decideremo di andare "live" predisporrò la regex per essere più stringente (appunto, tipo ".*.coderdojomilano.it"). Questo significa che per sviluppare, sarà necessario fare in modo che il dns locale del proprio computer abbia una entry del tipo dev.coderdojomilano.it, altrimenti vi troverete un errore nel log del browser di violazione del referer).

I dati salvati all'interno di KVStore.io sono accessibili attraverso o una combinazione username/password oppure invocando le API ed utilizzando uno specifico access-token.

Per i più curiosi/attenti, l'access-token che viene iniettato dal js all'interno della pagina HTML del visitatore, permette solo di scrivere dati all'interno di KVStore, ma non di leggerli (l'access-token del client js ha addirittura una struttura profondamente diversa da quelli usati normalmente dalle api e contiene degli elementi specifici, quali il timestamp di emissione del token, l'hash del referer ed una firma elettronica)

Processo del contact form

La logica di controllo del form si trova all'interno del file 'assets/js/contacts.js'.
In sintesi, non appena il visitatore clicca il bottone di submit:

  • il form viene validato (plugin jquery validation)
  • i dati del form vengono trasformati in JSON
  • spediti attraverso la funzione kvstoreio( collection, key, value, callback )
  • disabilito il bottone di invio (in modo che non ci siano + richieste dalla stessa pagina)
  • KVStore invia una email per notificare che è stato inserito un nuovo form all'interno dello storage. L'indirizzo email a cui la notifica è inviata è gestita a livello di singola collezione e per il momento le sto ricevendo io. Ancora una volta, quando andremo online, cambierò l'indirizzo di posta per usare uno degli indirizzi istituzionali

nota: KVStore.io funziona per collezioni. Una collezione è come un folder. In questo caso il contact form salva il contenuto (nome, email, messaggio) all'interno della collezione 'contacts'. La chiave è semplicemente un progressivo (ts_ + timestamp). Se dovessimo avere altri form all'interno del sito, sarà sufficiente creare un'altra collection con nome diverso

Documentazione API KVStore.io

Trovate la documentazione delle API qui: https://market.mashape.com/lordkada/kvstore

from coderdojomilano.github.io.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.