6.3 KiB
netig.net
À faire
- traduire le message Rodauth « Please login to continue » ;
- limiter le spam sur
/contact/send; - afficher les recettes et les dépenses sur la page d'accueil ;
- gérer les accès aux services selon la situation des membres ;
- traiter les demandes de démission et de suppression des comptes.
Développement
Dépendances
Installer les dépendances :
bundle install
Variables d'environnement
Créer un fichier .env à la racine du projet :
RACK_ENV=development
SESSION_SECRET=...
RODAUTH_HMAC_SECRET=...
RODAUTH_DOMAIN=netig.net
BASE_URL=http://[::1]:9292
SMTP_PASSWORD='...'
Générer SESSION_SECRET et RODAUTH_HMAC_SECRET avec :
openssl rand -hex 64
Utiliser une valeur différente pour chaque secret. Les valeurs contenant
#, des espaces ou des caractères interprétés spécialement peuvent être
entourées d'apostrophes simples.
Le fichier .env est chargé automatiquement en développement par
config/boot.rb. Ce fichier est chargé par netig.rb et directement
par les scripts de bin/ qui ont besoin de la configuration.
Ne pas versionner le fichier .env.
Base de données
En développement, la base est créée par défaut dans :
db/development.sqlite3
Ce chemin peut être remplacé par la variable d'environnement
DATABASE_PATH. Un chemin relatif est résolu à partir du répertoire
de lib/database.rb, et non du répertoire courant.
Créer ou mettre à jour la base de données :
bundle exec ruby bin/migrate
Serveur
Démarrer le serveur de développement depuis la racine du projet :
bundle exec puma
Puma charge automatiquement config.ru, qui démarre l'application.
Ouvrir la page de création de compte :
http://[::1]:9292/create-account
Les personnes physiques et les personnes morales peuvent créer un compte.
La création du compte crée également une fiche dans members. L'adresse
électronique doit être vérifiée avant de pouvoir se connecter.
Espaces utilisateurs
Après avoir vérifié son adresse électronique, chaque personne connectée accède à son espace personnel :
http://[::1]:9292/account
Cet espace permet notamment de consulter sa situation d'adhésion et de formuler une demande d'adhésion à l'association.
Les membres du Noyau disposent également d'un accès à la gestion de l'association :
http://[::1]:9292/noyau
Cet espace permet notamment de consulter les demandes d'adhésion, de les accepter ou de les refuser, et de consulter les comptes de l'association.
Les demandes en attente sont accessibles à l'adresse :
http://[::1]:9292/noyau/memberships
La consultation et la gestion de l'association sont réservées aux membres du Noyau.
Initialisation du Noyau
Pour ajouter une personne au Noyau, utiliser le script :
bundle exec ruby bin/add-core-member adresse@example.net
Le compte doit exister, son adresse électronique doit être vérifiée
et la fiche membre doit correspondre à une personne physique.
Une adhésion au statut accepted doit également déjà exister
dans memberships.
Le script ne crée ni le compte ni l'adhésion. Il attribue uniquement la qualité de membre du Noyau à une fiche membre qui remplit ces conditions. Il doit être exécuté séparément pour chaque personne.
Les demandes d'adhésion sont formulées depuis l'espace personnel
(/account) et examinées par le Noyau depuis l'espace de gestion
de l'association (/noyau/memberships).
Pour constituer le premier Noyau, les adhésions des personnes désignées doivent être enregistrées comme acceptées avant l'utilisation du script.
Les statuts prévoient un Noyau composé d'au moins trois personnes physiques.
Shell interactif
Ouvrir un shell interactif avec l'application chargée :
bundle exec irb -r ./netig.rb
netig.rb charge également config/boot.rb : les variables du fichier
.env sont donc disponibles en développement.
Production
En production, les variables d'environnement sont fournies au conteneur
par Docker Compose. Le service doit définir RACK_ENV=production et
transmettre le fichier d'environnement avec env_file.
Exemple de configuration :
services:
netig:
env_file:
- .env
environment:
RACK_ENV: production
La variable définie dans environment prend le dessus sur une éventuelle
valeur de RACK_ENV présente dans .env.
Le fichier .env de production doit notamment contenir :
DATABASE_PATH=../db/netig.sqlite3
SESSION_SECRET=...
RODAUTH_HMAC_SECRET=...
RODAUTH_DOMAIN=netig.net
BASE_URL=https://netig.net
SMTP_PASSWORD='...'
Générer SESSION_SECRET et RODAUTH_HMAC_SECRET avec :
openssl rand -hex 64
Utiliser des secrets propres à la production et ne pas versionner le fichier contenant ces variables.
Base de données
La base de production est stockée dans :
db/netig.sqlite3
Le chemin ../db/netig.sqlite3 est relatif au répertoire de
lib/database.rb. Il désigne donc le dossier db/ à la racine du
projet, dans le conteneur.
Le dossier db/ doit être conservé entre les déploiements, monté sur
un stockage persistant et accessible en écriture par l'utilisateur
qui exécute Puma. Il doit également être inclus dans les sauvegardes.
Créer ou mettre à jour la base dans le conteneur applicatif, avec les mêmes variables d'environnement et le même stockage persistant que l'application, avant de démarrer la nouvelle version :
docker compose run --rm netig bundle exec ruby bin/migrate
Cette commande suppose que le service Compose s'appelle netig.
Initialisation du premier Noyau
Chaque personne désignée pour siéger au Noyau doit d'abord créer un
compte depuis le site et vérifier son adresse électronique. Sa fiche
membre doit également disposer d'une adhésion au statut accepted.
Pour chaque personne, exécuter dans le conteneur applicatif :
docker compose run --rm netig \
bundle exec ruby bin/add-core-member adresse@example.net
Cette commande suppose que le service Compose s'appelle netig.
Elle ne crée pas l'adhésion : elle vérifie qu'elle existe et qu'elle
est acceptée, puis attribue la qualité de membre du Noyau.
Les statuts prévoient un Noyau composé d'au moins trois personnes physiques.