Documentation technique

Version 11 (Etienne Pallier, 06/02/2016 04:14 pm)

1 1 Etienne Pallier
h1. Documentation technique
2 1 Etienne Pallier
3 1 Etienne Pallier
4 3 Etienne Pallier
Cette page décrit les différents concepts techniques utilisés dans le projet.
5 3 Etienne Pallier
6 1 Etienne Pallier
7 5 Etienne Pallier
[ [[Labinvent_nouvelle_version|Retour au sommmaire]] ]
8 4 Etienne Pallier
9 4 Etienne Pallier
10 4 Etienne Pallier
11 3 Etienne Pallier
12 1 Etienne Pallier
{{toc}}
13 1 Etienne Pallier
14 1 Etienne Pallier
---
15 1 Etienne Pallier
16 1 Etienne Pallier
h2. LIENS UTILES
17 1 Etienne Pallier
18 1 Etienne Pallier
* HOWTO Format Redmine Wiki : http://www.redmine.org/projects/redmine/wiki/FrRedmineWikiFormatting
19 1 Etienne Pallier
20 1 Etienne Pallier
* [[Installation|Page wiki pour l'installation]]
21 1 Etienne Pallier
22 1 Etienne Pallier
* Version majeure en cours (2.1): https://projects.irap.omp.eu/versions/101
23 1 Etienne Pallier
24 1 Etienne Pallier
* Liste complète des évolutions: https://gitlab.irap.omp.eu/epallier/labinvent/commits/master
25 1 Etienne Pallier
26 1 Etienne Pallier
* Browse files (gitlab): https://gitlab.irap.omp.eu/epallier/labinvent/tree/master
27 1 Etienne Pallier
28 1 Etienne Pallier
* Inventirap 1.3 (prod): https://inventirap.irap.omp.eu
29 1 Etienne Pallier
30 1 Etienne Pallier
* Inventirap 1.3 (test): https://inventirap-test.irap.omp.eu/
31 1 Etienne Pallier
32 1 Etienne Pallier
* CakePhp:
33 1 Etienne Pallier
34 1 Etienne Pallier
 * ROADMAP: https://github.com/cakephp/cakephp/wiki
35 1 Etienne Pallier
 * Forum cakephp: http://discourse.cakephp.org
36 1 Etienne Pallier
 * Quickstart tutorial: http://book.cakephp.org/3.0/en/quickstart.html
37 1 Etienne Pallier
 * Bookmarker tutorial: https://github.com/cakephp/bookmarker-tutorial
38 1 Etienne Pallier
 * Cakephp CRUD: https://github.com/FriendsOfCake/crud
39 1 Etienne Pallier
40 1 Etienne Pallier
---
41 1 Etienne Pallier
42 1 Etienne Pallier
h2. Schéma de la base de données (v2.0.0)
43 1 Etienne Pallier
44 1 Etienne Pallier
45 1 Etienne Pallier
{{thumbnail(BDD_IRAP.png, size=300, title=Pyros data model)}}
46 1 Etienne Pallier
47 1 Etienne Pallier
---
48 1 Etienne Pallier
49 1 Etienne Pallier
50 1 Etienne Pallier
51 9 Etienne Pallier
h2. Gestion des mails de management
52 1 Etienne Pallier
53 1 Etienne Pallier
* L'envoi de mail en local est réalisé grace à une adresse créer pour labinvent et donc le protocole d'envoi est défini dans app.php, lors de l'envoi d'un mail il faut utiliser le transport 'gmail' en local.
54 1 Etienne Pallier
> Mail : labinvent2@gmail.com / Mot De Passe : cakephp3
55 1 Etienne Pallier
56 1 Etienne Pallier
* Pour changer de mail et de transport, il faut aller dans la section Email/Transport de app.php, remplacer l'adresse et son mot de passe, puis il faut définir un protocole d'envoi compatible avec l'adresse mail rentré précédemment.
57 1 Etienne Pallier
58 9 Etienne Pallier
h2. Tests (Mise en place et éxécution)
59 9 Etienne Pallier
60 1 Etienne Pallier
* CakePHP permet aussi de gérer les tests facilement et de générer leurs squelettes avec la commande "bake".
61 1 Etienne Pallier
--> Pour commencer il faut récupérer phpunit (https://phpunit.de/), si la version de PHP est inférieur à 5.6, il faut télécharger le phpunit.phar compatible avec PHP, sinon il faut prendre la derniere version (compatible avec PHP7 également).
62 1 Etienne Pallier
--> Il faut configurer une base de donnée pour les tests dans "app.php"
63 1 Etienne Pallier
<pre>
64 1 Etienne Pallier
Commande génération test (se placer à la racine du projet ./labinvent) : 
65 1 Etienne Pallier
66 1 Etienne Pallier
bin/cake bake test "type_src" "nom_table"
67 1 Etienne Pallier
68 1 Etienne Pallier
"type_src" correspond à Controller, Table, Entity, Form, Helper, Fixture...
69 1 Etienne Pallier
</pre>
70 1 Etienne Pallier
71 1 Etienne Pallier
72 9 Etienne Pallier
73 10 Etienne Pallier
h2. LDAP
74 1 Etienne Pallier
75 1 Etienne Pallier
* Pour le développement, j'utilise openLDAP pour avoir un LDAP et y connecter Labinvent2, pour gérer openLDAP, j'utilise l'outil de configuration phpLDAPadmin.
76 1 Etienne Pallier
--> J'utilise une VM oû les outils d'openLDAP sont déja installés et configurés.
77 1 Etienne Pallier
--> Il suffit de récupérer la machine virtuelle prête à l'emploi, et de lui attribuer manuellement une adresse IP libre (en général x.x.x.253/254) et son masque 
78 1 Etienne Pallier
--> Aller sur une autre machine (physique ou virtuelle), et taper l'adresse ip défini précédement dans un navigateur
79 1 Etienne Pallier
--> Vous accéderez à une page de gestion (phpLdapAdmin)
80 1 Etienne Pallier
--> ATTENTION -> Votre PC doit être branché en filaire pour que la machine virtuelle soit accessible
81 1 Etienne Pallier
> https://www.turnkeylinux.org/openldap
82 1 Etienne Pallier
83 1 Etienne Pallier
84 1 Etienne Pallier
85 10 Etienne Pallier
h2. Gestion des ACL (droits des utilisateurs selon leur profil)
86 9 Etienne Pallier
87 9 Etienne Pallier
* CakePHP3 n'intègre plus un composant pour un gérer les ACLs, un plugin est à disposition pour remplacer ce composant, hélas il n'est pas stable, et le fait qu'il utilise la base de données ralenti les applications, car le composant effectue beaucoup de requêtes.
88 9 Etienne Pallier
89 1 Etienne Pallier
* De plus, il est conseillé pour des autorisations basiques d'utiliser la fonction isAuthorized($user) dans les controller.
90 1 Etienne Pallier
91 1 Etienne Pallier
* Dans labinvent2, on utilise la fonction isAuthorized($user), qui définit les choses que les utilisateurs connecté peuvent faire et donne tous les droits au Super-Admin dans AppContoller.php.
92 1 Etienne Pallier
Puis, dans chaque controller la fonction est redéclarer, on définit les actions possible pour chaque rôle.
93 1 Etienne Pallier
94 1 Etienne Pallier
* Procédure ajout d'une fonctionnalité 
95 1 Etienne Pallier
- On ajoute la fonctionnalité dans le controller
96 1 Etienne Pallier
- Si la fonctionnalité est accessible par tout le monde, il faut l'ajouter dans le isAuthorized($user) de l'AppController
97 1 Etienne Pallier
- Sinon il faut ajouter la condition lié à l'action dans la fonction isAuthorized($user) du controller correspondant (1ère fonction de tous les controllers)
98 1 Etienne Pallier
- Enfin lorsque vous réalisez la vue correspondante, il faut cacher les champs/boutons de votre fonctionnalité en fonction de vos droits, une variable "$role" est accessible dans toutes les vues, ainsi qu'une variable "$username" (nom de l'utilisateur, pas le login) pour tester la proriété d'un objet dans une vue.
99 1 Etienne Pallier
100 11 Etienne Pallier
h2. Autres remarques
101 1 Etienne Pallier
102 1 Etienne Pallier
103 9 Etienne Pallier
* Mode debug personnalisé : 
104 1 Etienne Pallier
> Faire $this->myDebug($var) dans un controlleur pour afficher le contenu de la variable si mode debug personnalisé actif, à condition que le mode debug soit activé.
105 1 Etienne Pallier
106 1 Etienne Pallier
> Voir : http://book.cakephp.org/3.0/fr/development/testing.html
107 1 Etienne Pallier
108 1 Etienne Pallier
* Pour charger une librairie (ex : phpqrcode, ...)
109 1 Etienne Pallier
> Voir : http://book.cakephp.org/3.0/fr/core-libraries/app.html#charger-les-fichiers-de-vendor
110 1 Etienne Pallier
111 9 Etienne Pallier
* Pour créer les fichiers pdf d'entrée et de sortie, on utilise fpdf 1.8.1, on pourrait utiliser le plugin développé pour CakePHP3.
112 1 Etienne Pallier
> Voir : https://github.com/FriendsOfCake/CakePdf
113 1 Etienne Pallier
114 1 Etienne Pallier
* Pour le JavaScript, le JS Helper a été retiré 
115 1 Etienne Pallier
> Voir : http://book.cakephp.org/3.0/fr/appendices/3-0-migration-guide.html#jshelper