Commit d33c46e7 authored by Daniel Caillibaud's avatar Daniel Caillibaud

Merge branch 'master' into feature/fulltext-search

parents a6c0a360 f9784f1e

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

......@@ -2,9 +2,10 @@
.vim
.idea
# on utilise yarn, npm possible mais son lock restera local
/package-lock.json
node_modules
# on utilise pnpm, yarn ou npm possible mais le lock restera local
/package-lock.json
/yarn.lock
# logs
*.log
......@@ -24,9 +25,11 @@ package.local-extras.json
# trucs qui peuvent traîner à la racine (pm2 qui tourne…)
/*.pid
# répertoire des plugins
# fichiers générés par app/plugins/buildSrc.js au build
/app/plugins/package.json
/app/plugins/displays.js
/app/plugins/editors.js
/app/plugins/icons.js
/app/plugins/package-lock.json
/app/plugins/yarn.lock
/app/plugins/shrinkwrap.yaml
/app/plugins/generatedDisplays.js
/app/plugins/generatedEditors.js
/app/plugins/icons.js
Changelog
=========
v 1.0.x
-------
Breaking Changes :
- config.sesatheques doit désormais être sous forme de tableau d'objets {baseId, baseUrl, apiToken} (apiToken est facultatif, mais nécessaire si on veut cloner des ressources privées de cette Sésathèque)
Installation
============
Après avoir récupéré le [projet](https://github.com/Sesamath/sesatheque) depuis Github,
Après avoir récupéré le [projet](https://framagit.org/Sesamath/sesatheque) depuis framagit,
choisissez le cas correspondant à votre environnement :
Installation sans Docker
......@@ -12,11 +12,11 @@ Installation sans Docker
- copier app/_private.example en app/_private
- modifier app/_private/config.js pour mettre les accès mongo (si open bar la config de base doit suffire). Vous pouvez surcharger n'importe quel paramètre de configuration de app/config.js
- si vous utilisez pm2, modifier éventuellement app/_private/pm2App.json5 pour le chemin des logs pm2
- installer les dépendances (avec `npm install` ou `yarn install`)
- lancer l'appli avec au choix
- `node app/index.js`
- `npm start` (lancera l'appli avec pm2 s'il est installé)
- `./script/run` (ajouter -h pour voir les options)
- installer les dépendances avec `pnpm install` (ou `npm install` ou `yarn install`, mais postinstall utilise pnpm)
- lancer l'appli avec au choix
- `node app/index.js`
- `npm start` (lancera l'appli avec pm2 s'il est installé)
- `./script/run` (ajouter -h pour voir les options)
Il est pratique d'ajouter dans votre $PATH les chemins `./node_modules/.bin` et `./scripts`, en ajoutant par ex
`PATH="$PATH:./node_modules/.bin:./scripts"` à votre ~/.bashrc
......
......@@ -69,6 +69,12 @@ Regarder le contenu du dossier script pour voir la liste des tâches automatisé
Il y a aussi le dossier tasks avec les tâches d'import (à priori spécifique à l'instance sesatheque de Sésamath)
Tests
-----
`npm run test:all` lance tous les tests localement, pour les lancer dans le conteneur docker il faut
créer un fichier `_private/.testOnDocker` (vide, son contenu est ignoré) et lancer les tests avec `npm test`
Documentation
-------------
......
var path = require('path')
// prendre le même contenu que config.js et l'adapter pour une 2e Sésathèque
// sur le port 3002 dans la doc
/**
* Nos paramètres locaux, dont connexion à la base de données, que l'on conserve hors git,
* dans un fichier js (et pas json) pour pouvoir mettre des commentaires
*
* Il contient toutes les clés utilisées ou utilisables, certaines sont initialisées ici
* avec leur valeur par défaut. Les clés obligatoires sont mentionnées
*
* Ce fichier devrait pouvoir être copié tel quel dans _private et fonctionner avec docker-compose.yml
* (après avoir complété les champs obligatoires)
*
* Pour une paire de sesatheques global/private (avec docker-compose-for-sesalab.yml)
* prendre les js de _private.exemple-docker-sesamath
*/
module.exports = {
application: {
// utilisé en préfixe des message de log et dans qq messages
name: 'sesatheque commune', // OBLIGATOIRE
// identifiant de cette sésathèque, utilisé pour les rid des ressources créées ici
baseId: 'localhost3002', // OBLIGATOIRE
baseUrl: 'http://localhost:3002/', // OBLIGATOIRE
// pour les envois de notification (du système)
mail: '', // OBLIGATOIRE
// utilisé par le SSO (sesasso-bibli et sesalab-sso), prod|dev
staging: 'dev', // OBLIGATOIRE
// délai de conservation en cache, peut être élevé car on change l'url à chaque publication de version
staticMaxAge: '7d',
maintenance: {
lockFile: '_private/maintenance.lock',
message: 'Application en maintenance, merci d’essayer de nouveau dans quelques instants',
staticDir: '_private/maintenance'
}
},
// pour redis, prefix obligatoire
$cache: {
redis: {
prefix: 'commun'
}
},
// connexion mongoDb, pour lassi, à préciser
$entities: {
database: {
host: 'localhost',
port: '27017',
name: 'commun',
user: '',
password: '',
// cf http://mongodb.github.io/node-mongodb-native/2.2/api/MongoClient.html#connect
options: {
poolSize: 10,
reconnectTries: 1800 // 1/2h avec le reconnectInterval à 1000ms par défaut
}
}
},
// options pour les middlewares
$rail: {
cookie: {
// à préciser avec une chaîne aléatoire complexe
key: '' // OBLIGATOIRE
},
session: {
// à préciser avec une chaîne aléatoire complexe
secret: '' // OBLIGATOIRE
}
},
// ça c'est pour node qui va lancer l'appli, utilisé par lassi
$server: {
hostname: 'localhost',
// port d'écoute de nodeJs, on peut indiquer ici un autre port ici que celui de baseUrl
// (si y'a un proxy, ou par ex pour cli.js qui en mettra un autre)
port: 3002
},
/* pour modifier le comportement par défaut on peut préciser ici qq overrides,
cf app/config.js pour les valeurs par défaut
par ex pour empêcher un formateur de créer des groupes ou des ressources ici on peut mettre ça */
components: {
personne: {
roles: {
formateur: {create: false, createGroupe: false}
}
}
},
// les logs
logs: {
dir: path.join(__dirname, '../logs'),
// le module log utilise des channels, on peut en exclure ici
debugExclusions: ['cache'],
perf: 'perf.log'
},
// noCache:true,
// les modules à précharger avant bootstrap, ici pour fonctionner avec un sesalab
extraModules: ['sesalab-sso'],
// les dépendances à ajouter au composant principal, en premier
// extraDependenciesFirst : ['sesasso-bibli'],
// et en dernier
// suivant extraModules
extraDependenciesLast: ['sesalab-sso'],
// éventuels tokens utilisables par une autre appli pour poster sur notre api
apiTokens: [
],
// éventuelle liste d'ip hors lan autorisées à utiliser un token
apiIpsAllowed: [
],
// urls absolues des sésathèques utilisées par nos ressources
// (pour les alias d'une sesatheque dans une autre, mis par ex par un sesalab)