Comments (1)
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)
- Immagini e link nella sezione tutorial sono rotti HOT 4
- Aggiungere link per tornare ad elenco tutorial
- Sistemare link tutorial HOT 1
- Sistemare attribuzione tutorial makey makey
- Aggiungere pagina per donazione 5x1000
- Link Evenbrite per registrazione evento 11 giugno HOT 2
- Supportare contenuti custom nel template per gli eventi
- Link ad Eventbrite per evento in Base
- Widget per Eventbrite Hackathon HOT 1
- Widget per registrazione evento Eventbrite
- Riorganizzazione risorse
- Link ad Eventbrite per evento del 14 gennaio 2017
- Link Eventbrite per evento 18 febbraio.
- Link Evenbrite per Evento Discovery Channel (K2 - Bullismo) HOT 1
- Link Eventbrite per evento 11 marzo HOT 1
- Form "Diventa Mentor" non funziona
- Link Eventbrite evento 6 maggio 2017
- Link evento 16 dicembre 2017 - Google
- 404 error
- Link Eventbrite per Politecnico 13 ottobre
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from coderdojomilano.github.io.