Skip to content

Commit

Permalink
Authentification basé sur des emails (#10)
Browse files Browse the repository at this point in the history
* Mise en place d'un routing côté client

* Mise en place du store et des actions

* Taille de la machine du cronjob explicite

* Tout est en place pour envoyer un email de connexion
  • Loading branch information
DavidBruant authored May 20, 2024
1 parent c32c756 commit 8cdb256
Show file tree
Hide file tree
Showing 20 changed files with 611 additions and 331 deletions.
3 changes: 2 additions & 1 deletion cron.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{
"jobs": [
{
"command": "0 2 * * * node outils/sync-démarches-simplifiées.js"
"command": "0 2 * * * node outils/sync-démarches-simplifiées.js",
"size": "S"
}
]
}
9 changes: 7 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,18 @@
<meta name="description" content=" ">
<meta name="viewport" content="width=device-width, initial-scale=1">

<link id="especes-data" rel="preload" as="fetch" href="./data/liste_especes.csv" crossorigin="anonymous">
<link id="activites-data" rel="preload" as="fetch" href="./data/activités.csv" crossorigin="anonymous">
<link id="methodes-data" rel="preload" as="fetch" href="./data/méthodes.csv" crossorigin="anonymous">
<link id="transports-data" rel="preload" as="fetch" href="./data/transports.csv" crossorigin="anonymous">

<link crossorigin="anonymous" rel="stylesheet" href="./style/bootstrap-reset-4.6.2.css">
<link crossorigin="anonymous" rel="stylesheet" href="./style/better-css-defaults.css">
<link crossorigin="anonymous" rel="stylesheet" href="./style/layout.css">

<link crossorigin="anonymous" rel="stylesheet" href="./build/bundle-suivi.css">
<link crossorigin="anonymous" rel="stylesheet" href="./build/rollup-bundle-pitchou.css">

<script src="./build/bundle-suivi.js" type="module" crossorigin="anonymous"></script>
<script src="./build/rollup-bundle-pitchou.js" type="module" crossorigin="anonymous"></script>
</head>
<body>
<main>
Expand Down
36 changes: 34 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 5 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,16 @@
},
"dependencies": {
"@fastify/static": "^7.0.1",
"baredux": "github:DavidBruant/baredux#v1.0.8",
"d3-fetch": "^3.0.1",
"date-fns": "^3.6.0",
"db-migrate": "^0.11.14",
"db-migrate-pg": "^1.5.2",
"fastify": "^4.26.2",
"knex": "^3.1.0",
"ky": "^1.2.2",
"page": "^1.11.6",
"pg": "^8.11.5",
"db-migrate": "^0.11.14",
"db-migrate-pg": "^1.5.2"

"remember": "github:DavidBruant/remember#v1.0.2"
}
}
18 changes: 3 additions & 15 deletions rollup.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,25 +37,13 @@ const plugins = ({cssOutput}) => ([

export default [
{
input: 'scripts/front-end/saisie-especes.js',
input: 'scripts/front-end/main.js',
output: {
sourcemap: true,
format: 'es',
file: 'build/bundle-saisie-especes.js'
file: 'build/rollup-bundle-pitchou.js'
},
plugins: plugins({cssOutput: 'bundle-saisie-especes.css'}),
watch: {
clearScreen: false
}
},
{
input: 'scripts/front-end/suivi.js',
output: {
sourcemap: true,
format: 'es',
file: 'build/bundle-suivi.js'
},
plugins: plugins({cssOutput: 'bundle-suivi.css'}),
plugins: plugins({cssOutput: 'rollup-bundle-pitchou.css'}),
watch: {
clearScreen: false
}
Expand Down
31 changes: 0 additions & 31 deletions saisie-especes.html

This file was deleted.

4 changes: 4 additions & 0 deletions scripts/commun/constantes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export const authorizedEmailDomains = new Set([
'developpement-durable.gouv.fr',
'beta.gouv.fr'
])
31 changes: 31 additions & 0 deletions scripts/front-end/actions/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
//@ts-check

import store from '../store.js';
import remember from 'remember'

const PITCHOU_SECRET_STORAGE_KEY = 'secret-pitchou'

export function init(){

return remember(PITCHOU_SECRET_STORAGE_KEY)
.then(secret => {
if(secret){
// @ts-ignore
store.mutations.setSecret(secret)
}
})
}

export async function secretFromURL(){
const secret = new URLSearchParams(location.search).get("secret")

if(secret){
const newURL = new URL(location.href)
newURL.searchParams.delete("secret")

history.replaceState(null, "", newURL)
store.mutations.setSecret(secret)

return remember(PITCHOU_SECRET_STORAGE_KEY, secret)
}
}
33 changes: 33 additions & 0 deletions scripts/front-end/components/LoginViaEmail.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<script>
/** @type {Set<string>} */
export let authorizedEmailDomains
/** @type {(email: string) => Promise<void>} */
export let envoiEmailConnexion
let email;
</script>


<h1>Connexion par email</h1>

<p>Saisissez votre adresse email ici et vous recevrez un email avec un lien secret pour vous connecter à Pitchou.</p>
<p>⚠️ Seules les adresses emails venant d'un de ces domaine peuvent recevoir un lien de connexion :
{#each [...authorizedEmailDomains] as authorizedEmailDomain, i}
{#if i !== 0} ,&nbsp; {/if}
<code class="hostname">{authorizedEmailDomain}</code>
{/each}
</p>

<form on:submit|preventDefault={() => envoiEmailConnexion(email)}>
<input autocomplete="email" type="email" bind:value={email}>
<button>Obtenir un lien de connexion par email</button>
</form>


<style lang="scss">
code.hostname{
white-space: nowrap;
}
</style>
8 changes: 5 additions & 3 deletions scripts/front-end/components/SuiviInstructeur.svelte
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
<script>
import '../../types/database/public/Dossier.js'
/** @type {Dossier[]} */
/** @type {import('../../types/database/public/Dossier.js').Dossier[]} */
export let dossiers = []
console.log('dossiers', dossiers)
</script>

<nav>
<a href="/saisie-especes">Saisie espèces</a>
</nav>

<h1>Suivi instructeur</h1>

<table>
Expand Down
Loading

0 comments on commit 8cdb256

Please sign in to comment.