Skip to content
Snippets Groups Projects
Commit 5dac33b6 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Merge branch 'develop'

parents cfb09d21 cec2b6b3
Branches
Tags
No related merge requests found
Pipeline #5180 failed
Showing
with 5122 additions and 1941 deletions
vendor/ vendor/
.idea .idea
.DS_Store
stages:
- tests
- publish
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- vendor/
#unit-tests:
# stage: tests
# script:
# - composer install --no-interaction --no-suggest --no-progress
# - php vendor/bin/phpunit --coverage-text=coverage.txt --colors=never
# artifacts:
# paths:
# - coverage.txt
update-satis:
stage: publish
script:
- update-satis
###########################################################################################
#
# Image pour le dev.
#
###########################################################################################
ARG PHP_VERSION
FROM unicaen-dev-php${PHP_VERSION}-apache
LABEL maintainer="Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr>"
WORKDIR /app
ENV APACHE_CONF_DIR=/etc/apache2 \
PHP_CONF_DIR=/etc/php/${PHP_VERSION}
## Installation de packages requis.
RUN apt-get update -qq && \
apt-get install -y \
sqlite3 \
php${PHP_VERSION}-pdo-sqlite
RUN pecl install ast && \
echo "extension=ast.so" > ${PHP_CONF_DIR}/cli/conf.d/ast.ini
# Nettoyage
RUN apt-get autoremove -y && apt-get clean && rm -rf /tmp/* /var/tmp/*
# Symlink apache access and error logs to stdout/stderr so Docker logs shows them
RUN ln -sf /dev/stdout /var/log/apache2/access.log
RUN ln -sf /dev/stdout /var/log/apache2/other_vhosts_access.log
RUN ln -sf /dev/stderr /var/log/apache2/error.log
# Configuration Apache et FPM
ADD docker/apache-ports.conf ${APACHE_CONF_DIR}/ports.conf
ADD docker/apache-site.conf ${APACHE_CONF_DIR}/sites-available/app.conf
ADD docker/apache-site-ssl.conf ${APACHE_CONF_DIR}/sites-available/app-ssl.conf
ADD docker/fpm/pool.d/app.conf ${PHP_CONF_DIR}/fpm/pool.d/app.conf
ADD docker/fpm/conf.d/app.ini ${PHP_CONF_DIR}/fpm/conf.d/app.ini
RUN a2ensite app app-ssl && \
service php${PHP_VERSION}-fpm reload
# Squelette d'application Unicaen
## Build et lancement du container Docker
$ docker-compose up --build -d
## Installation des dépendances PHP :
$ docker-compose run skeleton-application composer install
## Module Demo
Le module démo fournit une base de données de démonstration permettant d'avoir une authentification locale
qui fonctionne.
Jetez un oeil à la base de données de démo présente dans le module 'Demo' :
$ docker-compose run skeleton-application sqlite3 module/Demo/data/db/demo.sqlite ".schema"
Interrogez la table `user` pour vérifier la présence de l'utilisateur local `demo`, exemple :
$ docker-compose run skeleton-application sqlite3 module/Demo/data/db/demo.sqlite "select * from user;"
## Configuration du projet
- Renommez `config/autoload/local.php.dist` en `local.php`.
- Copiez dans votre dossier `config/autoload` les fichiers de configuration locaux et globaux `.dist`
des bibliothèques utilisées sans leur extension `.dist` :
```bash
cp vendor/unicaen/app/config/unicaen-app.global.php.dist config/autoload/unicaen-app.global.php
cp vendor/unicaen/app/config/unicaen-app.local.php.dist config/autoload/unicaen-app.local.php
cp vendor/unicaen/auth/config/unicaen-auth.global.php.dist config/autoload/unicaen-auth.global.php
cp vendor/unicaen/auth/config/unicaen-auth.local.php.dist config/autoload/unicaen-auth.local.php
cp vendor/unicaen/code/config/unicaen-code.global.php.dist config/autoload/unicaen-code.global.php
```
- Le cas échéant, reportez-vous aux docs des modules concernés pour adapter ces fichiers de configuration à vos besoins :
- [unicaen/app](https://git.unicaen.fr/lib/unicaen/app)
- [unicaen/auth](https://git.unicaen.fr/lib/unicaen/auth)
- [unicaen/code](https://git.unicaen.fr/lib/unicaen/code)
## Test de l'application
Théoriquement, l'application devrait être accessible à l'adresse [https://localhost:8843](https://localhost:8843).
Le port utilisé dépend des redirections configurées dans le fichier [docker-compose.yml](docker-compose.yml).
reports/
# check-compat
Tester la compatibilité des bibliothèques `unicaen/*` avec une version précise de PHP.
## PHP 7.0
```bash
docker run \
--rm \
-v ${PWD}:/app \
--workdir /app \
unicaen-dev-php7.0-apache \
./bin/check-compat.sh 7.0
```
## PHP 7.1
```bash
docker run \
--rm \
-v ${PWD}:/app \
--workdir /app \
unicaen-dev-php7.0-apache \
./bin/check-compat.sh 7.1
```
## PHP 7.2
```bash
docker run \
--rm \
-v ${PWD}:/app \
--workdir /app \
unicaen-dev-php7.0-apache \
./bin/check-compat.sh 7.2
```
## PHP 7.3
```bash
docker run \
--rm \
-v ${PWD}:/app \
--workdir /app \
unicaen-dev-php7.0-apache \
./bin/check-compat.sh 7.3
```
#!/usr/bin/env bash
[[ -z $1 ]] && echo "Veuillez spécifier les versions de PHP désirées (ex: 7.1 7.2 7.3)." && exit 1
DIR=$(cd `dirname $0` && pwd)
DIRNAME=$(basename ${DIR})
cd ${DIR}/..
versions=$1
phpcs="./vendor/bin/phpcs"
libdir="./vendor/unicaen"
outdir="./${DIRNAME}/reports"
mkdir -p ${outdir} #&& rm -rf ${outdir}/*
for path in ${libdir}/*
do
dirname=$(basename -- "$path")
for ver in "$1"
do
reportpath="${outdir}/compat-unicaen-${dirname}-${ver}.txt"
echo "Processing '${path}' against PHP version ${ver}"
echo "=> reporting into '${reportpath}'"
${phpcs} \
-p \
--standard=PHPCompatibility \
--runtime-set testVersion ${ver} \
--report-full=${reportpath} \
${path}
done
done
#!/usr/bin/env bash
DIR=$(cd `dirname $0` && pwd)
cd ${DIR}/..
v=7.0 ; docker build --rm -t skeleton-app-${v} -f Dockerfile-${v} .
v=7.0 ; docker rm -f skeleton-app-${v}-container
v=7.0 ; docker run -d -p 8070:80 -p 8470:443 -v ${PWD}/composer.json:/app/composer.json -v ${PWD}/.phan:/app/.phan --name skeleton-app-${v}-container skeleton-app-${v}
v=7.0 ; docker exec skeleton-app-${v}-container composer update --no-suggest --optimize-autoloader
v=7.1 ; docker build --rm -t skeleton-app-${v} -f Dockerfile-${v} .
v=7.1 ; docker rm -f skeleton-app-${v}-container
v=7.1 ; docker run -d -p 8071:80 -p 8471:443 -v ${PWD}/composer.json:/app/composer.json -v ${PWD}/.phan:/app/.phan --name skeleton-app-${v}-container skeleton-app-7.1
v=7.1 ; docker exec skeleton-app-${v}-container composer update --no-suggest --optimize-autoloader
v=7.2 ; docker build --rm -t skeleton-app-${v} -f Dockerfile-${v} .
v=7.2 ; docker rm -f skeleton-app-${v}-container
v=7.2 ; docker run -d -p 8072:80 -p 8472:443 -v ${PWD}/composer.json:/app/composer.json -v ${PWD}/.phan:/app/.phan --name skeleton-app-${v}-container skeleton-app-${v}
v=7.2 ; docker exec skeleton-app-${v}-container composer update --no-suggest --optimize-autoloader
v=7.3 ; docker build --rm -t skeleton-app-${v} -f Dockerfile-${v} .
v=7.3 ; docker rm -f skeleton-app-${v}-container
v=7.3 ; docker run -d -p 8073:80 -p 8473:443 -v ${PWD}/composer.json:/app/composer.json -v ${PWD}/.phan:/app/.phan --name skeleton-app-${v}-container skeleton-app-${v}
v=7.3 ; docker exec skeleton-app-${v}-container composer update --no-suggest --optimize-autoloader
# analyse des modules unicaen/* :
# v=7.0 ; docker exec skeleton-app-$v-container vendor/bin/phan --config-file .phan/config-unicaen.php --target-php-version $v > /tmp/phan-unicaen-$v.log
# v=7.1 ; docker exec skeleton-app-$v-container vendor/bin/phan --config-file .phan/config-unicaen.php --target-php-version $v > /tmp/phan-unicaen-$v.log
# v=7.2 ; docker exec skeleton-app-$v-container vendor/bin/phan --config-file .phan/config-unicaen.php --target-php-version $v > /tmp/phan-unicaen-$v.log
# v=7.3 ; docker exec skeleton-app-$v-container vendor/bin/phan --config-file .phan/config-unicaen.php --target-php-version $v > /tmp/phan-unicaen-$v.log
# analyse des vendors :
# v=7.0 ; docker exec skeleton-app-$v-container vendor/bin/phan --config-file .phan/config-vendor.php --target-php-version $v > /tmp/phan-vendor-$v.log
# v=7.1 ; docker exec skeleton-app-$v-container vendor/bin/phan --config-file .phan/config-vendor.php --target-php-version $v > /tmp/phan-vendor-$v.log
# v=7.2 ; docker exec skeleton-app-$v-container vendor/bin/phan --config-file .phan/config-vendor.php --target-php-version $v > /tmp/phan-vendor-$v.log
# v=7.3 ; docker exec skeleton-app-$v-container vendor/bin/phan --config-file .phan/config-vendor.php --target-php-version $v > /tmp/phan-vendor-$v.log
#!/usr/bin/env bash
[[ -z $1 ]] && echo "Veuillez spécifier la version de PHP désirée (ex: 7.1)." && exit 1
DIR=$(cd `dirname $0` && pwd)
DIRNAME=$(basename ${DIR})
cd ${DIR}/..
version=$1
# conversion de la version spécifiée au format PHP_VERSION_ID, ex: "7.2" devien "70200"
a=(${version//./ })
PHP_VERSION_ID=$((a[0]*10000+a[1]*100+a[2]))
phpcs="./vendor/bin/phpcs"
libdir="./vendor/unicaen"
outdir="./${DIRNAME}/reports"
mkdir -p ${outdir} #&& rm -rf ${outdir}/*
for path in ${libdir}/*
do
dirname=$(basename -- "$path")
reportpath="${outdir}/phpcs-unicaen-${dirname}-${version}.txt"
echo "Processing '${path}' against PHP version ${version} (PHP_VERSION_ID=${PHP_VERSION_ID})"
echo "=> reporting into '${reportpath}'"
${phpcs} \
-p \
--standard=ruleset.xml \
--runtime-set php_version ${PHP_VERSION_ID} \
--report-full=${reportpath} \
${path}
done
...@@ -8,14 +8,37 @@ ...@@ -8,14 +8,37 @@
} }
], ],
"require": { "require": {
"unicaen/app": "^1.2", "unicaen/app": "dev-zf-3.x",
"unicaen/auth": "^1.2" "unicaen/auth": "dev-zf-3.x",
"unicaen/bjy-authorize": "dev-zf-3.x",
"unicaen/faq": "dev-zf-3.x",
"unicaen/import": "dev-zf-3.x",
"unicaen/ldap": "dev-zf-3.x",
"unicaen/leocarte": "dev-zf-3.x",
"unicaen/oracle": "^1.2"
}, },
"require-dev": { "require-dev": {
"unicaen/code": "^1.0",
"zendframework/zend-test": ">=2.3", "zendframework/zend-test": ">=2.3",
"phpunit/PHPUnit": ">=3.7", "phpunit/phpunit": ">=3.7",
"zendframework/zend-developer-tools": ">=1.0" "zendframework/zend-developer-tools": ">=1.0",
"unicaen/php-compat": "dev-master"
},
"scripts": {
"post-install-cmd": [
"mkdir -p data/DoctrineORMModule/Proxy ; chmod -R 777 data/DoctrineORMModule/Proxy"
]
},
"autoload": {
"psr-4": {
"Application\\": "module/Application/src"
},
"files": [
"module/Application/Module.php"
]
},
"autoload-dev": {
"psr-4": {
"ApplicationTest\\": "module/Application/test"
}
} }
} }
Source diff could not be displayed: it is too large. Options to address this: view the blob.
<?php <?php
$modules = [ $modules = [
'ZfcBase', 'DoctrineModule', 'DoctrineORMModule', 'ZfcUser', 'ZfcUserDoctrineORM', 'Zend\Cache',
'BjyAuthorize', 'AssetManager', 'Zend\Filter',
'UnicaenApp', 'UnicaenAuth', 'Zend\Form',
'Zend\Hydrator',
'Zend\I18n',
'Zend\InputFilter',
'Zend\Log',
'Zend\Mail',
'Zend\Mvc\Console',
'Zend\Mvc\I18n',
// 'Zend\Mvc\Plugin\FilePrg',
'Zend\Mvc\Plugin\FlashMessenger',
// 'Zend\Mvc\Plugin\Identity',
'Zend\Mvc\Plugin\Prg',
'Zend\Navigation',
'Zend\Paginator',
'Zend\Router',
'Zend\Session',
'Zend\Validator',
'DoctrineModule',
'DoctrineORMModule',
'ZfcUser',
'BjyAuthorize',
'UnicaenApp',
'UnicaenAuth',
'Application', 'Application',
'Demo',
]; ];
$applicationEnv = getenv('APPLICATION_ENV') ?: 'production'; $applicationEnv = getenv('APPLICATION_ENV') ?: 'production';
if ('development' === $applicationEnv) { if ('development' === $applicationEnv) {
$modules[] = 'ZendDeveloperTools'; $modules[] = 'ZendDeveloperTools';
$modules[] = 'UnicaenCode'; // $modules[] = 'UnicaenCode';
} }
$moduleListenerOptions = [ $moduleListenerOptions = [
......
*local.php
About this directory:
=====================
By default, this application is configured to load all configs in
`./config/autoload/{,*.}{global,local}.php`. Doing this provides a
location for a developer to drop in configuration override files provided by
modules, as well as cleanly provide individual, application-wide config files
for things like database connections, etc.
<?php <?php
return array( return [
'view_manager' => array( 'view_manager' => [
'display_not_found_reason' => false, 'display_not_found_reason' => true,
'display_exceptions' => false, 'display_exceptions' => true,
), ],
); ];
<?php
/**
* Configuration globale du module UnicaenApp.
*
* Copiez ce fichier dans le répertoire "config/autoload" de l'application,
* enlevez l'extension ".dist" et adaptez son contenu à vos besoins.
*/
use Zend\Session\Storage\SessionArrayStorage;
use Zend\Session\Validator\HttpUserAgent;
use Zend\Session\Validator\RemoteAddr;
return [
'unicaen-app' => [
/**
* Informations concernant cette application
*/
'app_infos' => [
'nom' => "NomDeVotreApplication",
'desc' => "Description succincte de votre application",
'version' => "0.0.1",
'date' => "07/11/2017",
'contact' => ['mail' => "dsi.applications@unicaen.fr", /*'tel' => "01 02 03 04 05"*/],
'mentionsLegales' => "http://www.unicaen.fr/acces-direct/mentions-legales/",
'informatiqueEtLibertes' => "http://www.unicaen.fr/acces-direct/informatique-et-libertes/",
],
/**
* Période d'exécution de la requête de rafraîchissement de la session utilisateur, en millisecondes.
*/
'session_refresh_period' => 0, // 0 <=> aucune requête exécutée
/**
* Paramètres de fonctionnement LDAP.
*/
'ldap' => [
'dn' => [
'UTILISATEURS_BASE_DN' => 'ou=people,dc=unicaen,dc=fr',
'UTILISATEURS_DESACTIVES_BASE_DN' => 'ou=deactivated,dc=unicaen,dc=fr',
'GROUPS_BASE_DN' => 'ou=groups,dc=unicaen,dc=fr',
'STRUCTURES_BASE_DN' => 'ou=structures,dc=unicaen,dc=fr',
],
'filters' => [
'LOGIN_FILTER' => '(supannAliasLogin=%s)',
'UTILISATEUR_STD_FILTER' => '(|(uid=p*)(&(uid=e*)(eduPersonAffiliation=student)))',
'CN_FILTER' => '(cn=%s)',
'NAME_FILTER' => '(cn=%s*)',
'UID_FILTER' => '(uid=%s)',
'NO_INDIVIDU_FILTER' => '(supannEmpId=%08s)',
'AFFECTATION_FILTER' => '(&(uid=*)(eduPersonOrgUnitDN=%s))',
'AFFECTATION_CSTRUCT_FILTER' => '(&(uid=*)(|(ucbnSousStructure=%s;*)(supannAffectation=%s;*)))',
'LOGIN_OR_NAME_FILTER' => '(|(supannAliasLogin=%s)(cn=%s*))',
'MEMBERSHIP_FILTER' => '(memberOf=%s)',
'AFFECTATION_ORG_UNIT_FILTER' => '(eduPersonOrgUnitDN=%s)',
'AFFECTATION_ORG_UNIT_PRIMARY_FILTER' => '(eduPersonPrimaryOrgUnitDN=%s)',
'ROLE_FILTER' => '(supannRoleEntite=[role={SUPANN}%s][type={SUPANN}%s][code=%s]*)',
'PROF_STRUCTURE' => '(&(eduPersonAffiliation=teacher)(eduPersonOrgUnitDN=%s))',
'FILTER_STRUCTURE_DN' => '(%s)',
'FILTER_STRUCTURE_CODE_ENTITE' => '(supannCodeEntite=%s)',
'FILTER_STRUCTURE_CODE_ENTITE_PARENT' => '(supannCodeEntiteParent=%s)',
],
],
],
//
// Session configuration.
//
'session_config' => [
// Session cookie will expire in 1 hour.
'cookie_lifetime' => 60*60*1,
// Session data will be stored on server maximum for 30 days.
'gc_maxlifetime' => 60*60*24*30,
],
//
// Session manager configuration.
//
'session_manager' => [
// Session validators (used for security).
'validators' => [
RemoteAddr::class,
// Erreur rencontrée avec ce validateur lorsqu'on passe en "Version pour ordinateur" sur un téléphone Android :
// `Fatal error: Uncaught Zend\Session\Exception\RuntimeException: Session validation failed
// in /var/www/app/vendor/zendframework/zend-session/src/SessionManager.php on line 162`
//HttpUserAgent::class,
]
],
//
// Session storage configuration.
//
'session_storage' => [
'type' => SessionArrayStorage::class
],
];
<?php
/**
* UnicaenAuth Global Configuration
*
* If you have a ./config/autoload/ directory set up for your project, you can
* drop this config file in it and change the values as you wish.
*/
$settings = [
/**
* Configuration de l'authentification locale.
*/
'local' => [
/**
* Affichage ou non du formulaire d'authentification avec un compte local.
*/
'enabled' => true,
],
/**
* Configuration de l'authentification LDAP.
*/
'ldap' => [
/**
* Affichage ou non du formulaire d'authentification via l'annuaire LDAP.
* NB: en réalité cela permet aussi l'authentification avec un compte local.
*/
'enabled' => false,
],
/**
* Flag indiquant si l'utilisateur authenitifié avec succès via l'annuaire LDAP doit
* être enregistré/mis à jour dans la table des utilisateurs de l'appli.
*/
'save_ldap_user_in_database' => false,
'enable_privileges' => true,
'entity_manager_name' => 'doctrine.entitymanager.orm_default', // nom du gestionnaire d'entités à utiliser
/**
* Attribut LDAP utilisé pour le username des utilisateurs
* A personnaliser au besoin
*/
//'ldap_username' => 'supannaliaslogin',
];
$config = [
'unicaen-auth' => $settings,
'bjyauthorize' => [
/* this module uses a meta-role that inherits from any roles that should
* be applied to the active user. the identity provider tells us which
* roles the "identity role" should inherit from.
*
* for ZfcUser, this will be your default identity provider
*/
'identity_provider' => 'UnicaenAuth\Provider\Identity\Chain',
/* role providers simply provide a list of roles that should be inserted
* into the Zend\Acl instance. the module comes with two providers, one
* to specify roles in a config file and one to load roles using a
* Zend\Db adapter.
*/
'role_providers' => [
/**
* Fournit les rôles issus de la base de données éventuelle de l'appli.
* NB: si le rôle par défaut 'guest' est fourni ici, il ne sera pas ajouté en double dans les ACL.
* NB: si la connexion à la base échoue, ce n'est pas bloquant!
*/
'UnicaenAuth\Provider\Role\DbRole' => [],
/**
* Fournit le rôle correspondant à l'identifiant de connexion de l'utilisateur.
* Cela est utile lorsque l'on veut gérer les habilitations d'un utilisateur unique
* sur des ressources.
*/
'UnicaenAuth\Provider\Role\Username' => [],
],
],
'zfcuser' => [
/**
* Classe de l'entité représentant un utilisateur authentifiable.
* Décommenter pour spécifier une autre classe que celle par défaut (\UnicaenAuth\Entity\Db\User).
* NB: la classe spécifiée doit hériter de \UnicaenAuth\Entity\Db\AbstractUser.
*/
//'user_entity_class' => \Application\Entity\Db\Utilisateur::class, // exemple
/**
* Enable registration
* Allows users to register through the website.
* Accepted values: boolean true or false
*/
'enable_registration' => false,
],
];
if ($settings['enable_privileges']) {
$privileges = [
'unicaen-auth' => [
/**
* Classes représentant les entités rôle et privilège.
* - Entité rôle : héritant de \UnicaenAuth\Entity\Db\AbstractRole ou implémentant \UnicaenAuth\Entity\Db\RoleInterface.
* - Entité privilège : héritant de \UnicaenAuth\Entity\Db\AbstractPrivilege ou implémentant \UnicaenAuth\Entity\Db\PrivilegeInterface.
*
* Valeurs par défaut :
* - 'role_entity_class' : 'UnicaenAuth\Entity\Db\Role'
* - 'privilege_entity_class' : 'UnicaenAuth\Entity\Db\Privilege'
*/
'role_entity_class' => 'UnicaenAuth\Entity\Db\Role',
'privilege_entity_class' => 'UnicaenAuth\Entity\Db\Privilege',
],
'bjyauthorize' => [
'resource_providers' => [
/**
* Le service Privilèges peut aussi être une source de ressources,
* si on souhaite tester directement l'accès à un privilège
*/
'UnicaenAuth\Service\Privilege' => [],
],
'rule_providers' => [
'UnicaenAuth\Provider\Rule\PrivilegeRuleProvider' => [],
],
'guards' => [
'UnicaenAuth\Guard\PrivilegeController' => [
[
'controller' => 'UnicaenAuth\Controller\Droits',
'action' => ['index'],
'privileges' => [
\UnicaenAuth\Provider\Privilege\Privileges::DROIT_ROLE_VISUALISATION,
\UnicaenAuth\Provider\Privilege\Privileges::DROIT_PRIVILEGE_VISUALISATION,
],
],
[
'controller' => 'UnicaenAuth\Controller\Droits',
'action' => ['roles'],
'privileges' => [\UnicaenAuth\Provider\Privilege\Privileges::DROIT_ROLE_VISUALISATION],
],
[
'controller' => 'UnicaenAuth\Controller\Droits',
'action' => ['privileges'],
'privileges' => [\UnicaenAuth\Provider\Privilege\Privileges::DROIT_PRIVILEGE_VISUALISATION],
],
[
'controller' => 'UnicaenAuth\Controller\Droits',
'action' => ['role-edition', 'role-suppression'],
'privileges' => [\UnicaenAuth\Provider\Privilege\Privileges::DROIT_ROLE_EDITION],
],
[
'controller' => 'UnicaenAuth\Controller\Droits',
'action' => ['privileges-modifier'],
'privileges' => [\UnicaenAuth\Provider\Privilege\Privileges::DROIT_PRIVILEGE_EDITION],
],
],
],
],
'navigation' => [
// The DefaultNavigationFactory we configured uses 'default' as the sitemap key
'default' => [
// And finally, here is where we define our page hierarchy
'home' => [
'pages' => [
'droits' => [
'label' => 'Droits d\'accès',
'title' => 'Gestion des droits d\'accès',
'route' => 'droits',
'resource' => \UnicaenAuth\Guard\PrivilegeController::getResourceId('UnicaenAuth\Controller\Droits', 'index'),
'pages' => [
'roles' => [
'label' => "Rôles",
'title' => "Gestion des rôles",
'route' => 'droits/roles',
'resource' => \UnicaenAuth\Guard\PrivilegeController::getResourceId('UnicaenAuth\Controller\Droits', 'roles'),
'withtarget' => true,
],
'privileges' => [
'label' => "Privilèges",
'title' => "Gestion des privilèges",
'route' => 'droits/privileges',
'resource' => \UnicaenAuth\Guard\PrivilegeController::getResourceId('UnicaenAuth\Controller\Droits', 'privileges'),
'withtarget' => true,
],
],
],
],
],
],
],
];
} else {
$privileges = [];
}
return array_merge_recursive($config, $privileges);
\ No newline at end of file
<?php
$settings = [
'view-dirs' => [getcwd() . '/code'],
'template-dirs' => [getcwd() . '/code/template'],
'generator-output-dir' => '/tmp/UnicaenCode',
'namespaces' => [
'services' => [
'Application',
],
'forms' => [
'Application\Form',
],
'hydrators' => [
'Application\Hydrator',
],
'entities' => [
'Application\Entity\Db',
],
],
];
return [
'unicaen-code' => $settings,
];
\ No newline at end of file
version: '2'
services:
skeleton-application:
image: skeleton-application-image
container_name: skeleton-application-container
build:
context: .
args:
PHP_VERSION: 7.0
ports:
- "8880:80"
- "8843:443"
volumes:
- .:/app
working_dir: /app
Listen 80
Listen 443
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment