Commit 9548fc99 authored by Olivier Valette's avatar Olivier Valette
Browse files

Initial commit

parents
/vendor/
/node_modules/
/var/
Dockerfile
/.idea
/.web-server-pid
/app/config/parameters.yml
/build/
/phpunit.xml
/var/*
!/var/cache
/var/cache/*
!var/cache/.gitkeep
!/var/logs
/var/logs/*
!var/logs/.gitkeep
!/var/sessions
/var/sessions/*
!var/sessions/.gitkeep
!var/SymfonyRequirements.php
/vendor/
/web/bundles/
/web/assets/
/web/media/
/web/uploads/
/node_modules/
.php_cs.cache
busters.json
app/Resources/AppBundle/graphql/schema.yml
[submodule "common/datatourisme/webapp-bundle"]
path = common/datatourisme/webapp-bundle
url = ../webapp-bundle
[submodule "common/datatourisme/visual-query-editor"]
path = common/datatourisme/visual-query-editor
url = ../visual-query-editor
[submodule "common/datatourisme/ontology-js"]
path = common/datatourisme/ontology-js
url = ../ontology-js
<?php
$finder = PhpCsFixer\Finder::create()
->exclude('var')
->exclude('vendor')
->exclude('node_modules')
->exclude('common')
->in(array(__DIR__));
return PhpCsFixer\Config::create()
->setRules(array(
'@Symfony' => true
))
->setFinder($finder);
\ No newline at end of file
CHANGELOG
===================
Ce fichier est basé sur [Keep a Changelog](http://keepachangelog.com/)
et le projet utilise [Semantic Versioning](http://semver.org/).
## [1.7.2] - 2022-01-26
- Mise en place de la commande d'expiration des comptes utilisateurs
### Modifications
- Mise à jour du template public
## [1.7.1] - 2020-12-07
### Modifications
- Mise à jour du template public
## [1.7.0] - 2020-10-15
### Ajout
- Nouvel assistant de création de flux
## [1.6.1] - 2020-07-02
### Modifications
- Flux : préselection du format par défaut dans le champs Format initial
## [1.6.0] - 2020-06-24
### Ajout
- Ajout des format bundle JSON et XML
- Mise à jour des dépendances : visual-query-editor
- Refactor des pages d'aide CONSTRUCT et SELECT
## [1.5.5] - 2020-02-25
### Modifications
- Ajout d'un timeout de 2 minutes sur l'éditeur de requête visuelle
## [1.5.4] - 2020-01-30
### Modifications
- Mise à jour des dépendances : visual-query-editor
## [1.5.3] - 2020-01-28
### Modifications
- Mise à jour des dépendances : visual-query-editor et datatourisme/api
## [1.5.2] - 2020-01-10
### Ajout
- Ajout d'une notification de bienvenu présentant l'ensemble des outils disponibles à l'utilisateur
## [1.5.0] - 2019-12-12
### Ajout
- Dashboard d'accueil avec accès à discourse
- Commandes de nettoyage
- Les application peuvent maintenant être supprimées
## [1.4.3] - 2019-10-01
### Modifications
- Mise à jour de la dépendance webapp-bundle
- Mise à jour de l'adresse datatourisme.fr vers https://info.datatourisme.gouv.fr
## [1.4.2] - 2019-01-23
### Correction
- La table de prévisualisation des résultats de requête est maintenant responsive
## [1.4.1] - 2019-01-15
### Modifications
- Mise à jour de la dépendance webapp-bundle
### Ajout
- Ajout du lien vers l'espace support
## [1.4.0] - 2019-01-14
### Modifications
- Mise à jour des IRI des ontologies DATAtourisme
### Ajout
- Ajout de commandes de maintenance
## [1.3.5] - 2018-11-14
### Ajout
- Ajout d'une route publique vers les CGU (/fr/cgu.pdf)
## [1.3.4] - 2018-10-30
### Fixes
- Ajout d'une exception de sécurité pour l'api d'ontologie
- Un flux data.gouv.fr n'est jamais désactivé
## [1.3.3] - 2018-09-25
### Ajout
- Ajout du support de l'authentification SSO pour Discourse
### Modifications
- Mise à jour des dépendances composer
## [1.3.2] - 2018-07-13
### Fixes
- Hotfixes
## [1.3.1] - 2018-07-12
### Ajout
- Ajout de la version EN des CGU
## [1.3.0] - 2018-06-20
### Ajout
- Traduction intégrale de l'application en anglais
## [1.2.2] - 2018-06-07
### Modifications
- Les langues non disponibles sont grisées dans le formulaire de flux
## [1.2.1] - 2018-06-04
### Ajout
- La liste des langues est maintenant disponible dans la configuration
d'un flux
- La liste des langues est transmise au worker
## [1.2.0] - 2018-05-16
### Ajout
- Les applications sont maintenant éditables
- Export des comptes diffuseurs en CSV
### Modifications
- Suppression de l'entité Organization
- OrganizationType devient UserType
- Suppression de champs (fonction, téléphone, adresse)
- Ajout de champs (Code postal, Pays)
- Suppression du mode DEMO
## [1.1.3] - 2018-05-10
### Modifications
- Mise à jour de la dépendance datatourisme-webappbundle
## [1.1.2] - 2018-03-28
### Modifications
- Mise à jour de la dépendance "visual query editor"
## [1.1.1] - 2018-03-23
### Modifications
- L'utilisateur peut maintenant télécharger le dernier flux généré sans avoir à reprogrammer la génération du flux
### Correction
- Erreur 500 lors de l'utilisation du filtre Utilisateur dans la liste des flux
## [1.1.0] - 2018-03-16
### Ajout
- Ajout du format HDT
### Correction
- Affichage correct des erreurs
## [1.0.8] - 2018-03-14
### Ajout
- Ajout du droit de substitution d'authentification pour ROLE_SUPER_ADMIN
## [1.0.7] - 2018-03-13
### Correction
- Mise à jour de semgraphql (1.1.7)
## [1.0.6] - 2018-03-12
### Ajout
- Lien vers la liste des flux sur le profil utilisateur
### Correction
- Hotfix : mise à jour de semgraphql
## [1.0.5] - 2018-03-01
### Correction
- Hotfix : mise à jour de semgraphql
## [1.0.4] - 2018-03-01
### Correction
- Hotfix : le cache de graphQL est maintenant stocké dans le dossier cache de Symfony
## [1.0.3] - 2018-03-01
### Modifications
- Symfony 3.4
- webapp-bundle 1.0
## [1.0.2] - 2018-03-01
### Modifications
- Mise à jour de la dépendance semgraphql
## [1.0.1] - 2018-02-07
### Corrections
- Hotfix : Gérérer -> Générer
## [1.0.0] - 2018-01-18
### Ajouts
- Rôles / droits
- Implémentation du rôle "Super administrateur"
- Implémentation du rôle "Administrateur"
- Implémentation du rôle "Réutilisateur"
- Implémentation du rôle "Réutilisateur validé"
- Implémentation du rôle "Réutilisateur certifié"
- Authentification
- Procédure d'enregistrement
- Procédure d'authentification
- Procédure de récupération de mot de passe
- Procédure d'acceptation des conditions d'utilisation
- Procédure de déconnexion
- Gestion du profil
- Modification du profil utilisateur
- Modification des informations de la société
- Renseignement de la clé API data.gouv.fr
- Administration des utilisateurs
- Liste des utilisateurs
- Modification des utilisateurs
- Blocage d'un utilisateur
- Validation d'un utilisateur
- Certification d'un utilisateur
- Création d'un nouvel administrateur
- Suppression d'un utilisateur
- Application
- Liste des applications
- Ajout d'une application
- Génération de la clé API
- Consultation de la clé API
- Flux
- Liste des flux
- Ajout d'un flux
- Modification d'un flux
- Liste des téléchargements des données du flux
- Sélection du jeu de donnée data.gouv.fr pour exporter les données du flux
- Editeur expert pour les requêtes SPARQL
- Export CSV des téléchargements pour les administrateurs
- Téléchargement manuel des données du flux
- Téléchargement des données du flux via le webservice
- Demander la première génération des données du flux
- Tests Behat/Mink pour l'ensemble des fonctionnalités
- Ajout d'une notification aux administrateurs lors de l'inscription d'un utilisateur
### Modifications
- Ajouts de nouveaux types d'organisations
- Le choix d'un type d'entreprise intervient maintenant à l'inscription, est est facultative
- Plus d'indication d'adresse mail utilisée lors de l'inscription
FROM php:7.2-apache-buster
ENV TZ=Europe/Paris
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# install deps
RUN apt update -y \
&& apt install -y git wget unzip postgresql-client libcurl4-openssl-dev libpq-dev libpng-dev gpg libjpeg-dev locales libxslt-dev acl
# php extensions
RUN docker-php-ext-configure gd --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) curl gd pdo_pgsql opcache xsl intl zip
# locale
RUN echo "fr_FR.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen
ENV LANG fr_FR.UTF-8
ENV LANGUAGE fr_FR:fr
ENV LC_ALL fr_FR.UTF-8
# apache config
ENV APACHE_DOCUMENT_ROOT=/var/www/html/web
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
# RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
RUN a2enmod rewrite
# php config
RUN mv $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini \
&& sed -i 's/max_execution_time = .*/max_execution_time = 300/' $PHP_INI_DIR/php.ini \
&& sed -i 's/max_input_time = .*/max_input_time = 60/' $PHP_INI_DIR/php.ini \
&& sed -i 's/memory_limit = .*/memory_limit = 128M/' $PHP_INI_DIR/php.ini \
&& sed -i 's/post_max_size = .*/post_max_size = 64M/' $PHP_INI_DIR/php.ini \
&& sed -i 's/upload_max_filesize = .*/upload_max_filesize = 64M/' $PHP_INI_DIR/php.ini \
&& sed -i 's/max_file_uploads = .*/max_file_uploads = 20/' $PHP_INI_DIR/php.ini \
&& sed -i 's/max_input_vars = .*/max_input_vars = 3000/' $PHP_INI_DIR/php.ini \
&& sed -i 's/variables_order = .*/variables_order = EGPCS/' $PHP_INI_DIR/php.ini
# install composer
COPY --from=composer:1.7 /usr/bin/composer /usr/bin/composer
# install node 9 & yarn manager
RUN curl -sL https://deb.nodesource.com/setup_9.x | bash - \
&& apt-get install nodejs=9.11.2-1nodesource1 -y \
&& npm install -g yarn gulp
# set workdir
WORKDIR /var/www/html
# install dependencies
COPY composer.* ./
ADD app/AppKernel.php app/
ADD app/AppCache.php app/
ADD common/datatourisme/webapp-bundle common/datatourisme/webapp-bundle
RUN composer install \
--ignore-platform-reqs \
--no-interaction \
--no-scripts \
--prefer-dist
# # we cannot do that :(
# COPY package*.json yarn.lock ./
# RUN yarn
# copy source
COPY . .
RUN yarn install
# composer postscript
RUN mkdir var
RUN composer run-script --timeout=0 post-install-cmd
# RUN gulp
RUN gulp
# set default permissions for /var/www/html/var
RUN setfacl -dR -m u:www-data:rwX var
RUN setfacl -R -m u:www-data:rwX var
\ No newline at end of file
This diff is collapsed.
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
<?php
/*
* This file is part of the DATAtourisme project.
* 2022
* @author Conjecto <contact@conjecto.com>
* SPDX-License-Identifier: GPL-3.0-or-later
* For the full copyright and license information, please view the LICENSE file that was distributed with this source code.
*/
use Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache;
class AppCache extends HttpCache
{
}
<?php
/*
* This file is part of the DATAtourisme project.
* 2022
* @author Conjecto <contact@conjecto.com>
* SPDX-License-Identifier: GPL-3.0-or-later
* For the full copyright and license information, please view the LICENSE file that was distributed with this source code.
*/
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = [
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
new Symfony\Bundle\MonologBundle\MonologBundle(),
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
// vendors
new Knp\Bundle\PaginatorBundle\KnpPaginatorBundle(),
new Lexik\Bundle\FormFilterBundle\LexikFormFilterBundle(),
new Liip\ImagineBundle\LiipImagineBundle(),
new Knp\DoctrineBehaviors\Bundle\DoctrineBehaviorsBundle(),
new Knp\Bundle\MenuBundle\KnpMenuBundle(),
new Hautelook\AliceBundle\HautelookAliceBundle(),
new Leezy\PheanstalkBundle\LeezyPheanstalkBundle(),
new Shivas\VersioningBundle\ShivasVersioningBundle(),
new JMS\I18nRoutingBundle\JMSI18nRoutingBundle(),
new JMS\TranslationBundle\JMSTranslationBundle(),
new Craue\FormFlowBundle\CraueFormFlowBundle(),
// app
new Datatourisme\Bundle\WebAppBundle\DatatourismeWebAppBundle(),
new AppBundle\AppBundle(),
];
if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
if ('dev' === $this->getEnvironment()) {
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
$bundles[] = new Symfony\Bundle\WebServerBundle\WebServerBundle();
}
}
return $bundles;
}
public function getRootDir()
{
return __DIR__;
}
public function getCacheDir()
{
return dirname(__DIR__).'/var/cache/'.$this->getEnvironment();
}
public function getLogDir()
{
return dirname(__DIR__).'/var/logs';
}
public function registerContainerConfiguration(LoaderInterface $loader)
{
$loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');
}
}
{#
# This file is part of the DATAtourisme project.
# @author Conjecto <contact@conjecto.com>
# 2022
# SPDX-License-Identifier: GPL-3.0-or-later
# For the full copyright and license information, please view the LICENSE file that was distributed with this source code.
#}
{% extends '@DatatourismeWebApp/public_layout.html.twig' %}
{% block title %}Une erreur est intervenue: {{ status_text }}{% endblock %}
{% block body_classes %}http-error http-error-{{ status_code }}{% endblock %}
{% block content %}
<section class="row">
<div class="col-sm-12">
<div class="blankslate blankslate-spacious">
<h3>Ooopss !</h3>
<p>{% block message %}
Le serveur a rencontré une erreur <code>{{ status_code }} {{ status_text }}</code>
{% endblock %}</p>
<a href="{{ path('homepage') }}">Revenir à l'accueil</a>
</div>
</div>
</section>
{% endblock %}
{#
# This file is part of the DATAtourisme project.
# @author Conjecto <contact@conjecto.com>
# 2022
# SPDX-License-Identifier: GPL-3.0-or-later
# For the full copyright and license information, please view the LICENSE file that was distributed with this source code.
#}
{% extends 'TwigBundle:Exception:error.html.twig' %}
{% block title %}La page demandée n'existe pas !{% endblock %}
{% block message %}
La page demandée n'existe pas ou a été déplacée.
{% endblock %}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
/*
* This file is part of the DATAtourisme project.
* 2022
* @author Conjecto <contact@conjecto.com>
* SPDX-License-Identifier: GPL-3.0-or-later
* For the full copyright and license information, please view the LICENSE file that was distributed with this source code.
*/
"use strict";
var $ = require("jquery");
var CodeMirror = window.CodeMirror = require('codemirror');
require("codemirror/mode/javascript/javascript");
require("codemirror/mode/xml/xml");
require("codemirror/mode/turtle/turtle");
require("codemirror/mode/sparql/sparql");
$.fn.initComponents.add(function(dom) {
$('[data-codemirror]', dom).each(function() {
var $this = $(this),
$code = $this.html(),
$unescaped = $('<div/>').html($code).text();
var language = $this.data('codemirror');
$this.empty();
var e = CodeMirror(this, {
value: $unescaped,
matchBrackets: true,
autoCloseBrackets: true,
mode: language,
lineWrapping: true,
readOnly: true
});
//editor.setSize('100%', 100)
setTimeout(function () {
e.refresh();
setTimeout(function () { e.refresh(); }, 100); // call it twice to avoid extra spaces
}, 200);
});
});
\ No newline at end of file
/*
* This file is part of the DATAtourisme project.
* 2022
* @author Conjecto <contact@conjecto.com>
* SPDX-License-Identifier: GPL-3.0-or-later
* For the full copyright and license information, please view the LICENSE file that was distributed with this source code.
*/