Commit aec79c69bd4708192fad9c0b94a5329111941efd
1 parent
6aca6d83
Exists in
master
and in
2 other branches
Refactorisation add() et edit() de Materiels + BUGFIX gestionnaire
DESCRIPTION : - Refactorisation des actions add() et edit() de MaterielsController en une seule fonction add_or_edit() car elles étaient très semblables - Gestionnaire de reference : maintenant bien sauvegardé (avant il était perdu...) IMPORTANT : - Pour connaitre la version actuelle, taper "./VERSION" - Pour mettre à jour le code, utiliser ./UPDATE depuis la racine du projet (ne plus se contenter de faire "git pull") (UPDATE fait "git pull" mais il met aussi à jour la BD, seulement si nécessaire) - Pour s'assurer que la version récupérée est stable, taper "./TESTS.sh" (tout doit passer ok) - En cas de problème, taper ./SHOW_LOGS pour voir si les logs d'erreur peuvent aider - Pour que "./TESTS.sh" s'exécute sans "deprecated error", il faut ajouter cette ligne dans la clé 'Error' de votre fichier config/app.php 'Error' => [ ... 'errorLevel' => E_ALL & ~E_USER_DEPRECATED, ... ],
Showing
6 changed files
with
425 additions
and
39 deletions
Show diff stats
README.md
@@ -54,11 +54,15 @@ Logiciel testé et validé sur les configurations suivantes : | @@ -54,11 +54,15 @@ Logiciel testé et validé sur les configurations suivantes : | ||
54 | VERSION ACTUELLE | 54 | VERSION ACTUELLE |
55 | 55 | ||
56 | Date: 25/03/2019 | 56 | Date: 25/03/2019 |
57 | -Version: 2.11.1 | 57 | +Version: 2.11.2 |
58 | Author: EP | 58 | Author: EP |
59 | - Bugfix searchLdap() | 59 | + Refactorisation des actions add() et edit() de MaterielsController + BUGFIX gestionnaire |
60 | 60 | ||
61 | - IMPORTANT: | 61 | + DESCRIPTION : |
62 | + - Refactorisation des actions add() et edit() de MaterielsController en une seule fonction add_or_edit() car elles étaient très semblables | ||
63 | + - Gestionnaire de reference : maintenant bien sauvegardé (avant il était perdu...) | ||
64 | + | ||
65 | + IMPORTANT : | ||
62 | - Pour connaitre la version actuelle, taper "./VERSION" | 66 | - Pour connaitre la version actuelle, taper "./VERSION" |
63 | - Pour mettre à jour le code, utiliser ./UPDATE depuis la racine du projet (ne plus se contenter de faire "git pull") | 67 | - Pour mettre à jour le code, utiliser ./UPDATE depuis la racine du projet (ne plus se contenter de faire "git pull") |
64 | (UPDATE fait "git pull" mais il met aussi à jour la BD, seulement si nécessaire) | 68 | (UPDATE fait "git pull" mais il met aussi à jour la BD, seulement si nécessaire) |
src/Controller/MaterielsController.php
@@ -695,33 +695,399 @@ class MaterielsController extends AppController | @@ -695,33 +695,399 @@ class MaterielsController extends AppController | ||
695 | $this->set('_serialize', [ | 695 | $this->set('_serialize', [ |
696 | 'materiel' | 696 | 'materiel' |
697 | ]); | 697 | ]); |
698 | - } | ||
699 | - | 698 | + } // view |
699 | + | ||
700 | + | ||
700 | /** | 701 | /** |
701 | - * Add method | 702 | + * Add or Edit method (do either add() or edit()) |
703 | + * => Factorisation de add() et edit() | ||
704 | + * (voir aussi https://book.cakephp.org/3.0/en/orm.html) | ||
702 | * | 705 | * |
703 | - * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise. | 706 | + * @param $IS_ADD: True = add ; False = edit |
707 | + * @return \Cake\Network\Response|void Redirects on successful add/edit, renders view otherwise. | ||
704 | */ | 708 | */ |
705 | - public function add($valeurs = null, $erreurs = null) | 709 | + public function add_or_edit($is_add, $id = null, $valeurs = null, $erreurs = null) |
706 | { | 710 | { |
707 | - $materiel = $this->Materiels->newEntity(); | ||
708 | - if ($this->request->is('post')) { | 711 | + $usersTable = TableRegistry::getTableLocator()->get('Users'); |
712 | + | ||
713 | + // ADD | ||
714 | + if ($is_add) { | ||
715 | + $materiel = $this->Materiels->newEntity(); | ||
716 | + } | ||
717 | + // EDIT | ||
718 | + else { | ||
719 | + $materiel = $this->Materiels->get($id, [ | ||
720 | + 'contain' => [] | ||
721 | + ]); | ||
722 | + } | ||
723 | + | ||
724 | + /* SI POST | ||
725 | + * Les données ont été saisies et postées | ||
726 | + * On va donc les sauvegarder | ||
727 | + */ | ||
728 | + if ( | ||
729 | + | ||
730 | + // ADD | ||
731 | + // Nouveau materiel saisi et posted | ||
732 | + ($is_add && $this->request->is('post')) | ||
733 | + | ||
734 | + || | ||
735 | + | ||
736 | + // EDIT | ||
737 | + // materiel modifié et posted | ||
738 | + ( (!$is_add) && $this->request->is(['patch','post','put']) ) | ||
739 | + | ||
740 | + ) { | ||
741 | + | ||
742 | + // (1) On rempli $materiel avec les données de ce materiel | ||
709 | $materiel = $this->Materiels->patchEntity($materiel, $this->request->getData()); | 743 | $materiel = $this->Materiels->patchEntity($materiel, $this->request->getData()); |
710 | - if (in_array($_SESSION['Auth']['User']['sn'][0], TableRegistry::get('Users')->find('list', [ | 744 | + |
745 | + // (2) Si l'utilisateur courant est un "administratif" => le mettre comme gestionnaire du materiel | ||
746 | + // (tout ça pour ça !!! Faudra réduire ce bazarre) | ||
747 | + $current_user_name = $_SESSION['Auth']['User']['sn'][0]; | ||
748 | + if (in_array( | ||
749 | + $current_user_name, | ||
750 | + $usersTable | ||
751 | + ->find('list', [ | ||
752 | + 'keyField' => 'id', | ||
753 | + 'valueField' => 'nom' | ||
754 | + ]) | ||
755 | + ->where([ | ||
756 | + 'role =' => 'Administration' | ||
757 | + ]) | ||
758 | + ->toArray() | ||
759 | + )) { | ||
760 | + $materiel->gestionnaire_id = $usersTable | ||
761 | + ->find() | ||
762 | + ->where([ | ||
763 | + 'nom' => $current_user_name | ||
764 | + ]) | ||
765 | + ->first()->id; | ||
766 | + } | ||
767 | + | ||
768 | + // (3) On l'ajoute en BD, on envoie un email, et on affiche ok sur page accueil | ||
769 | + $action = $is_add ? "ajouté" : "modifié"; | ||
770 | + if ($this->Materiels->save($materiel)) { | ||
771 | + $this->Flash->success(__("Le matériel a bien été $action".".")); | ||
772 | + if ($is_add) { | ||
773 | + $this->sendEmail($materiel); | ||
774 | + $id = $materiel->id; | ||
775 | + } | ||
776 | + /* | ||
777 | + * EDIT | ||
778 | + //En attendant un remaniement complet de la fonction | ||
779 | + //1 = img, doc = 2, mail normal = tout autre argument | ||
780 | + //$this->sendmail($materiel,5); | ||
781 | + */ | ||
782 | + return $this->redirect([ | ||
783 | + 'action' => 'view', | ||
784 | + $id | ||
785 | + ]); | ||
786 | + } else | ||
787 | + $this->Flash->error(__("Le matériel n'a pas pu être $action".".")); | ||
788 | + } // if POST | ||
789 | + | ||
790 | + | ||
791 | + /* SINON (PAS POST) | ||
792 | + * C'est la première fois qu'on vient sur cette vue, | ||
793 | + * donc on va préparer le formulaire de saisie) | ||
794 | + */ | ||
795 | + | ||
796 | + //--- 1) INITIALISATION DE LISTES POUR ASSISTER LA SAISIE (listes de choix proposés) | ||
797 | + | ||
798 | + $surCategories = $this->Materiels->SurCategories->find('list', [ | ||
799 | + 'keyField' => 'id', | ||
800 | + 'valueField' => 'nom', | ||
801 | + 'order' => 'SurCategories.nom', | ||
802 | + // only for add() (was not in edit()) : | ||
803 | + 'conditions' => array( | ||
804 | + 'nom !=' => 'N/A' | ||
805 | + ) | ||
806 | + ]); | ||
807 | + $categories = $this->Materiels->Categories->find('list', [ | ||
808 | + 'keyField' => 'id', | ||
809 | + 'valueField' => 'nom', | ||
810 | + 'order' => 'Categories.nom' | ||
811 | + ]); | ||
812 | + $sousCategories = $this->Materiels->SousCategories->find('list', [ | ||
813 | + 'keyField' => 'id', | ||
814 | + 'valueField' => 'nom', | ||
815 | + 'order' => 'SousCategories.nom' | ||
816 | + ]); | ||
817 | + $groupesThematiques = $this->Materiels->GroupesThematiques->find('list', [ | ||
818 | + 'keyField' => 'id', | ||
819 | + 'valueField' => 'nom', | ||
820 | + 'order' => 'GroupesThematiques.nom' | ||
821 | + ]); | ||
822 | + $groupesMetiers = $this->Materiels->GroupesMetiers->find('list', [ | ||
823 | + 'keyField' => 'id', | ||
824 | + 'valueField' => 'nom', | ||
825 | + 'order' => 'GroupesMetiers.nom' | ||
826 | + ]); | ||
827 | + $organismes = $this->Materiels->Organismes->find('list', [ | ||
828 | + 'keyField' => 'id', | ||
829 | + 'valueField' => 'nom', | ||
830 | + 'order' => 'Organismes.nom' | ||
831 | + ]); | ||
832 | + $sites = $this->Materiels->Sites->find('list', [ | ||
833 | + 'keyField' => 'id', | ||
834 | + 'valueField' => 'nom', | ||
835 | + 'order' => 'Sites.nom' | ||
836 | + ]); | ||
837 | + $designation = $this->Materiels->find('list', [ | ||
838 | + 'keyField' => 'designation', | ||
839 | + 'valueField' => 'designation', | ||
840 | + 'conditions' => array( | ||
841 | + 'designation !=' => '' | ||
842 | + ), | ||
843 | + 'order' => 'designation', | ||
844 | + 'group' => 'designation' | ||
845 | + ]); | ||
846 | + | ||
847 | + // autocomplete + saisie sites | ||
848 | + $lieu_detail = $this->Materiels->find('list', [ | ||
849 | + 'keyField' => 'lieu_detail', | ||
850 | + 'valueField' => 'lieu_detail', | ||
851 | + 'conditions' => array( | ||
852 | + 'lieu_detail !=' => '' | ||
853 | + ), | ||
854 | + 'order' => 'lieu_detail', | ||
855 | + // only for add() (was not in edit()) : | ||
856 | + 'group' => 'lieu_detail' | ||
857 | + ]); | ||
858 | + | ||
859 | + // Liste fournisseurs | ||
860 | + $fournisseurs = $this->Materiels->Fournisseurs->find('list', [ | ||
861 | + 'keyField' => 'id', | ||
862 | + 'valueField' => 'nom', | ||
863 | + 'order' => 'Fournisseurs.nom' | ||
864 | + ]); | ||
865 | + | ||
866 | + // Liste des gestionnaires (admin) | ||
867 | + //$administrateurs = TableRegistry::get('Users')->find('list', [ | ||
868 | + $administrateurs = $usersTable | ||
869 | + ->find('list', [ | ||
870 | + //'keyField' => 'nom', | ||
711 | 'keyField' => 'id', | 871 | 'keyField' => 'id', |
712 | 'valueField' => 'nom' | 872 | 'valueField' => 'nom' |
713 | ]) | 873 | ]) |
714 | - ->where([ | 874 | + ->where([ |
715 | 'role =' => 'Administration' | 875 | 'role =' => 'Administration' |
716 | ]) | 876 | ]) |
717 | - ->toArray())) { | ||
718 | - $gestionnaireID = TableRegistry::get('Users')->find() | ||
719 | - ->where([ | ||
720 | - 'nom' => $_SESSION['Auth']['User']['sn'][0] | ||
721 | - ]) | ||
722 | - ->first()->id; | ||
723 | - $materiel->gestionnaire_id = $gestionnaireID; | 877 | + ->toArray(); |
878 | + | ||
879 | + $domaineresp = $usersTable->find() | ||
880 | + ->select('sur_categorie_id') | ||
881 | + ->where([ | ||
882 | + 'username =' => $this->LdapAuth->user($this->request->getSession() | ||
883 | + ->read('authType'))[0] | ||
884 | + ]) | ||
885 | + ->first()['sur_categorie_id']; | ||
886 | + if ($domaineresp == null) $domaineresp = false; | ||
887 | + | ||
888 | + // EDIT only | ||
889 | + if (! $is_add) { | ||
890 | + | ||
891 | + $designation_edit = $this->Materiels->find('list', [ | ||
892 | + 'keyField' => 'id', | ||
893 | + 'valueField' => 'designation', | ||
894 | + 'conditions' => array( | ||
895 | + 'id =' => $materiel->id | ||
896 | + ) | ||
897 | + ])->toArray(); | ||
898 | + //$designation_edit = $designation_edit->toArray(); | ||
899 | + | ||
900 | + $lieu_detail_edit = $this->Materiels->find('list', [ | ||
901 | + 'keyField' => 'id', | ||
902 | + 'valueField' => 'lieu_detail', | ||
903 | + 'conditions' => array( | ||
904 | + 'id =' => $materiel->id | ||
905 | + ) | ||
906 | + ])->toArray(); | ||
907 | + //$lieu_detail_edit = $lieu_detail_edit->toArray(); | ||
908 | + | ||
909 | + //(EP) TODO: debug ce truc, c'est du grand n'importe nawak ! | ||
910 | + $dom = TableRegistry::get('Materiels')->find() | ||
911 | + ->select('sur_categorie_id') | ||
912 | + ->where([ | ||
913 | + 'id =' => $materiel->id | ||
914 | + ]) | ||
915 | + ->first()['sur_categorie_id']; | ||
916 | + $domaines = TableRegistry::get('Users')->find() | ||
917 | + ->select('sur_categorie_id') | ||
918 | + ->where([ | ||
919 | + 'username =' => $this->LdapAuth->user($this->request->getSession() | ||
920 | + ->read('authType'))[0] | ||
921 | + ]) | ||
922 | + ->first()['sur_categorie_id']; | ||
923 | + $role = TableRegistry::get('Users')->find() | ||
924 | + ->select('role') | ||
925 | + ->where([ | ||
926 | + 'username =' => $this->LdapAuth->user($this->request->getSession() | ||
927 | + ->read('authType'))[0] | ||
928 | + ]) | ||
929 | + ->first()['role']; | ||
930 | + $domaineresp = ($dom == $domaines); | ||
931 | + } // EDIT only | ||
932 | + | ||
933 | + //--- 2) INITIALISATION DE VARIABLES QU'ON VA PASSER A LA VUE (add.ctp ou edit.ctp) | ||
934 | + | ||
935 | + // not used | ||
936 | + //$utilisateurconnect = $usersTable->find('all')->toArray(); | ||
937 | + | ||
938 | + // TODO: code redondant avec edit(), à factoriser | ||
939 | + // HOWTO: https://book.cakephp.org/3.0/en/orm.html | ||
940 | + //$users = TableRegistry::get('LdapConnections')->getListUsers(); | ||
941 | + //$users = TableRegistry::get('LdapConnections')->getUsersWithNameAndEmail(); | ||
942 | + $users_name_and_email = TableRegistry::getTableLocator()->get('LdapConnections')->getUsersWithNameAndEmail(); | ||
943 | + $users_name = array_keys($users_name_and_email); | ||
944 | + $users_option_list = []; | ||
945 | + for ($i = 0; $i < sizeof($users_name); $i ++) { | ||
946 | + // $users_option_list["Etienne Pallier"] = "Etienne Pallier" | ||
947 | + $users_option_list[$users_name[$i]] = $users_name[$i]; | ||
948 | + } | ||
949 | + | ||
950 | + $mail_responsable = $usersTable->find() | ||
951 | + ->select('email') | ||
952 | + ->where([ | ||
953 | + 'username =' => $this->LdapAuth->user($this->request->getSession() | ||
954 | + ->read('authType'))[0] | ||
955 | + ]) | ||
956 | + ->first()['email']; | ||
957 | + | ||
958 | + // ADD only | ||
959 | + if ( $is_add) { | ||
960 | + if (isset($this->request->getAttribute('params')['pass'][0])) { | ||
961 | + $cpMateriel = $this->Materiels->get($this->request->getAttribute('params')['pass'][0]); | ||
962 | + $this->set('cpMateriel', $cpMateriel); | ||
724 | } | 963 | } |
964 | + } | ||
965 | + | ||
966 | + // EDIT only | ||
967 | + else { | ||
968 | + | ||
969 | + if (! empty($materiel->get('nom_responsable'))) { | ||
970 | + //if (! in_array($materiel->get('nom_responsable'), $utilisateurs)) { | ||
971 | + if (! in_array($materiel->get('nom_responsable'), $users_name)) { | ||
972 | + $nom_ancien_responsable = $materiel->get('nom_responsable'); | ||
973 | + $this->set(compact('nom_ancien_responsable')); | ||
974 | + } | ||
975 | + } | ||
976 | + | ||
977 | + // (EP) Fonction utilisée dans la vue, déclarée ici pour éviter les problèmes de tests | ||
978 | + $isReadonlyField = function ($fieldName, $myReadonlyFields) { | ||
979 | + if (! empty($myReadonlyFields) && $myReadonlyFields[0] == '*') { | ||
980 | + $modifiableFields = $myReadonlyFields; | ||
981 | + array_shift($modifiableFields); | ||
982 | + return ! in_array($fieldName, $modifiableFields); | ||
983 | + } | ||
984 | + return in_array($fieldName, $myReadonlyFields); | ||
985 | + }; | ||
986 | + | ||
987 | + $this->set('isReadonlyField', $isReadonlyField); | ||
988 | + $this->set('IS_CREATED', $materiel->status == 'CREATED'); | ||
989 | + $this->set('IS_VALIDATED', $materiel->status == 'VALIDATED'); | ||
990 | + $this->set('IS_ARCHIVED_OR_TOBE', in_array($materiel->status, [ | ||
991 | + 'TOBEARCHIVED', | ||
992 | + 'ARCHIVED' | ||
993 | + ])); | ||
994 | + | ||
995 | + $this->set(compact( | ||
996 | + 'role', | ||
997 | + 'designation_edit', | ||
998 | + 'lieu_detail_edit' | ||
999 | + )); | ||
1000 | + | ||
1001 | + } // EDIT only | ||
1002 | + | ||
1003 | + /* About set and compact : | ||
1004 | + * | ||
1005 | + * The compact (php) function returns an associative array, built by taking the names specified in the input array, | ||
1006 | + * using them as keys, and taking the values of the variables referenced by those names and making those the values. | ||
1007 | + * For example: | ||
1008 | + * $fred = 'Fred Flinstone'; | ||
1009 | + * $barney = 'Barney Rubble'; | ||
1010 | + * $names = compact('fred', 'barney'); | ||
1011 | + * => is equivalent to: $names = array('fred' => 'Fred Flinstone', 'barney' => 'Barney Rubble') | ||
1012 | + * | ||
1013 | + * So when you use compact in conjunction with set, | ||
1014 | + * you're using the single parameter form of the set function, | ||
1015 | + * by passing it an associative array of key-value pairs. | ||
1016 | + * | ||
1017 | + * If you just have one variable you want to set on the view, and you want to use the single parameter form, you must invoke set in the same way: | ||
1018 | + * $variable_to_pass = 'Fred'; | ||
1019 | + * $this->set(compact('variable_to_pass')); | ||
1020 | + * | ||
1021 | + * Otherwise, the two parameter form of set can be used: | ||
1022 | + * $variable_to_pass = 'Fred'; | ||
1023 | + * $this->set('variable_to_pass', $variable_to_pass); | ||
1024 | + * | ||
1025 | + * Both achieve the same thing. | ||
1026 | + */ | ||
1027 | + //$this->set(compact('designation', 'utilisateurconnect', 'users', 'materiel', 'surCategories', 'categories', 'sousCategories', 'groupesThematiques', 'groupesMetiers', 'organismes', 'sites', 'utilisateurs', 'mail_responsable', 'domaineresp', 'lieu_detail', 'fournisseurs')); | ||
1028 | + $this->set(compact( | ||
1029 | + 'materiel', | ||
1030 | + // not used | ||
1031 | + //'utilisateurconnect', | ||
1032 | + 'surCategories', 'categories', 'sousCategories', | ||
1033 | + 'groupesThematiques', 'groupesMetiers', | ||
1034 | + 'organismes', 'sites', | ||
1035 | + 'mail_responsable', | ||
1036 | + 'domaineresp', | ||
1037 | + 'designation', | ||
1038 | + 'lieu_detail', | ||
1039 | + 'fournisseurs', | ||
1040 | + //'utilisateurs', | ||
1041 | + 'users_name_and_email', 'users_option_list', | ||
1042 | + // Gestionnaires (id=>name): | ||
1043 | + 'administrateurs' | ||
1044 | + )); | ||
1045 | + | ||
1046 | + $this->set('_serialize', [ | ||
1047 | + 'materiel' | ||
1048 | + ]); | ||
1049 | + | ||
1050 | + } //add_or_edit() | ||
1051 | + | ||
1052 | + | ||
1053 | + /** | ||
1054 | + * Add method | ||
1055 | + * | ||
1056 | + * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise. | ||
1057 | + */ | ||
1058 | + public function add($valeurs = null, $erreurs = null) { $this->add_or_edit(TRUE, null, $valeurs, $erreurs); } | ||
1059 | + /* | ||
1060 | + { | ||
1061 | + $usersTable = TableRegistry::getTableLocator()->get('Users'); | ||
1062 | + $materiel = $this->Materiels->newEntity(); | ||
1063 | + | ||
1064 | + // Nouveau materiel saisi et posted | ||
1065 | + if ($this->request->is('post')) { | ||
1066 | + // (1) On rempli $materiel avec les données de ce materiel | ||
1067 | + $materiel = $this->Materiels->patchEntity($materiel, $this->request->getData()); | ||
1068 | + // (2) Si l'utilisateur courant est un "administratif" => le mettre comme gestionnaire du materiel | ||
1069 | + // (tout ça pour ça !!! Faudra réduire ce bazarre) | ||
1070 | + $current_user_name = $_SESSION['Auth']['User']['sn'][0]; | ||
1071 | + if (in_array( | ||
1072 | + $current_user_name, | ||
1073 | + $usersTable | ||
1074 | + ->find('list', [ | ||
1075 | + 'keyField' => 'id', | ||
1076 | + 'valueField' => 'nom' | ||
1077 | + ]) | ||
1078 | + ->where([ | ||
1079 | + 'role =' => 'Administration' | ||
1080 | + ]) | ||
1081 | + ->toArray() | ||
1082 | + )) { | ||
1083 | + $materiel->gestionnaire_id = $usersTable | ||
1084 | + ->find() | ||
1085 | + ->where([ | ||
1086 | + 'nom' => $current_user_name | ||
1087 | + ]) | ||
1088 | + ->first()->id; | ||
1089 | + } | ||
1090 | + // (3) On l'ajoute en BD | ||
725 | if ($this->Materiels->save($materiel)) { | 1091 | if ($this->Materiels->save($materiel)) { |
726 | $this->Flash->success(__('Le matériel a bien été ajouté.')); | 1092 | $this->Flash->success(__('Le matériel a bien été ajouté.')); |
727 | $this->sendEmail($materiel); | 1093 | $this->sendEmail($materiel); |
@@ -733,6 +1099,7 @@ class MaterielsController extends AppController | @@ -733,6 +1099,7 @@ class MaterielsController extends AppController | ||
733 | $this->Flash->error(__('Le matériel n\'a pas pu être ajouté.')); | 1099 | $this->Flash->error(__('Le matériel n\'a pas pu être ajouté.')); |
734 | } | 1100 | } |
735 | 1101 | ||
1102 | + // Dans tous les cas (posted ou pas) | ||
736 | $surCategories = $this->Materiels->SurCategories->find('list', [ | 1103 | $surCategories = $this->Materiels->SurCategories->find('list', [ |
737 | 'keyField' => 'id', | 1104 | 'keyField' => 'id', |
738 | 'valueField' => 'nom', | 1105 | 'valueField' => 'nom', |
@@ -794,7 +1161,7 @@ class MaterielsController extends AppController | @@ -794,7 +1161,7 @@ class MaterielsController extends AppController | ||
794 | 'order' => 'designation', | 1161 | 'order' => 'designation', |
795 | 'group' => 'designation' | 1162 | 'group' => 'designation' |
796 | ]); | 1163 | ]); |
797 | - $domaineresp = TableRegistry::getTableLocator()->get('Users')->find() | 1164 | + $domaineresp = $usersTable->find() |
798 | ->select('sur_categorie_id') | 1165 | ->select('sur_categorie_id') |
799 | ->where([ | 1166 | ->where([ |
800 | 'username =' => $this->LdapAuth->user($this->request->getSession() | 1167 | 'username =' => $this->LdapAuth->user($this->request->getSession() |
@@ -803,7 +1170,7 @@ class MaterielsController extends AppController | @@ -803,7 +1170,7 @@ class MaterielsController extends AppController | ||
803 | ->first()['sur_categorie_id']; | 1170 | ->first()['sur_categorie_id']; |
804 | if ($domaineresp == null) | 1171 | if ($domaineresp == null) |
805 | $domaineresp = false; | 1172 | $domaineresp = false; |
806 | - $utilisateurconnect = TableRegistry::getTableLocator()->get('Users')->find('all')->toArray(); | 1173 | + $utilisateurconnect = $usersTable->find('all')->toArray(); |
807 | 1174 | ||
808 | // TODO: code redondant avec edit(), à factoriser | 1175 | // TODO: code redondant avec edit(), à factoriser |
809 | // HOWTO: https://book.cakephp.org/3.0/en/orm.html | 1176 | // HOWTO: https://book.cakephp.org/3.0/en/orm.html |
@@ -820,7 +1187,7 @@ class MaterielsController extends AppController | @@ -820,7 +1187,7 @@ class MaterielsController extends AppController | ||
820 | $users_name = NULL; //unset($users_name); | 1187 | $users_name = NULL; //unset($users_name); |
821 | 1188 | ||
822 | // Ne pas commenter la ligne suivante, on en a besoin dans add.cpt | 1189 | // Ne pas commenter la ligne suivante, on en a besoin dans add.cpt |
823 | - $mail_responsable = TableRegistry::get('Users')->find() | 1190 | + $mail_responsable = $usersTable->find() |
824 | ->select('email') | 1191 | ->select('email') |
825 | ->where([ | 1192 | ->where([ |
826 | 'username =' => $this->LdapAuth->user($this->request->getSession() | 1193 | 'username =' => $this->LdapAuth->user($this->request->getSession() |
@@ -847,7 +1214,8 @@ class MaterielsController extends AppController | @@ -847,7 +1214,8 @@ class MaterielsController extends AppController | ||
847 | $this->set('_serialize', [ | 1214 | $this->set('_serialize', [ |
848 | 'materiel' | 1215 | 'materiel' |
849 | ]); | 1216 | ]); |
850 | - } | 1217 | + } // add() |
1218 | + */ | ||
851 | 1219 | ||
852 | /** | 1220 | /** |
853 | * Edit method | 1221 | * Edit method |
@@ -857,12 +1225,13 @@ class MaterielsController extends AppController | @@ -857,12 +1225,13 @@ class MaterielsController extends AppController | ||
857 | * @return \Cake\Network\Response|void Redirects on successful edit, renders view otherwise. | 1225 | * @return \Cake\Network\Response|void Redirects on successful edit, renders view otherwise. |
858 | * @throws \Cake\Network\Exception\NotFoundException When record not found. | 1226 | * @throws \Cake\Network\Exception\NotFoundException When record not found. |
859 | */ | 1227 | */ |
860 | - public function edit($id = null) | 1228 | + public function edit($id = null) { $this->add_or_edit(FALSE, $id); } |
1229 | + /* | ||
861 | { | 1230 | { |
862 | $materiel = $this->Materiels->get($id, [ | 1231 | $materiel = $this->Materiels->get($id, [ |
863 | 'contain' => [] | 1232 | 'contain' => [] |
864 | ]); | 1233 | ]); |
865 | - if ($this->request->is([ | 1234 | + if ($this->request->is([ |
866 | 'patch', | 1235 | 'patch', |
867 | 'post', | 1236 | 'post', |
868 | 'put' | 1237 | 'put' |
@@ -994,12 +1363,11 @@ class MaterielsController extends AppController | @@ -994,12 +1363,11 @@ class MaterielsController extends AppController | ||
994 | ]) | 1363 | ]) |
995 | ->first()['role']; | 1364 | ->first()['role']; |
996 | 1365 | ||
997 | - /* NUL, franchement faudrait reflechir un peu quand meme, ya des limites !!! | ||
998 | - if ($dom == $domaines) | ||
999 | - $domaineresp = true; | ||
1000 | - else | ||
1001 | - $domaineresp = false; | ||
1002 | - */ | 1366 | + // NUL, franchement faudrait reflechir un peu quand meme, ya des limites !!! |
1367 | + //if ($dom == $domaines) | ||
1368 | + // $domaineresp = true; | ||
1369 | + //else | ||
1370 | + // $domaineresp = false; | ||
1003 | $domaineresp = ($dom == $domaines); | 1371 | $domaineresp = ($dom == $domaines); |
1004 | 1372 | ||
1005 | // TODO: code redondant avec add(), à factoriser | 1373 | // TODO: code redondant avec add(), à factoriser |
@@ -1059,7 +1427,8 @@ class MaterielsController extends AppController | @@ -1059,7 +1427,8 @@ class MaterielsController extends AppController | ||
1059 | $this->set('_serialize', [ | 1427 | $this->set('_serialize', [ |
1060 | 'materiel' | 1428 | 'materiel' |
1061 | ]); | 1429 | ]); |
1062 | - } | 1430 | + } // edit() |
1431 | + */ | ||
1063 | 1432 | ||
1064 | /** | 1433 | /** |
1065 | * Administrer method | 1434 | * Administrer method |
src/Model/Table/LdapConnectionsTable.php
@@ -615,8 +615,10 @@ class LdapConnectionsTable extends AppTable | @@ -615,8 +615,10 @@ class LdapConnectionsTable extends AppTable | ||
615 | // En cas de LDAP anonyme, binding quand même pour vérifier le mot de passe de l'utilisateur. | 615 | // En cas de LDAP anonyme, binding quand même pour vérifier le mot de passe de l'utilisateur. |
616 | // Sans cette ligne, on passe avec n'importe quel password !!! | 616 | // Sans cette ligne, on passe avec n'importe quel password !!! |
617 | if ($user_login && $user_password) | 617 | if ($user_login && $user_password) |
618 | - $ldapbind = ldap_bind($ldapConnection, $this->authenticationType . '=' . $user_login . ',' . $this->baseDn, $user_password) | ||
619 | - or die("Could not bind to LDAP server.". ldap_error($ldapConnection) ); | 618 | + $ldapbind = ldap_bind($ldapConnection, $this->authenticationType . '=' . $user_login . ',' . $this->baseDn, $user_password); |
619 | + // or die("Could not bind to LDAP server: ". ldap_error($ldapConnection) ); | ||
620 | + // (EP) Ne pas faire die() ici car ça stopperait net la mauvaise connexion d'un utilisateur, avec ce message d'erreur | ||
621 | + // Il vaut mieux retourner FALSE et afficher un joli message de refus sur la page d'accueil | ||
620 | /* | 622 | /* |
621 | else { | 623 | else { |
622 | $ldapbind = TRUE; | 624 | $ldapbind = TRUE; |
src/Model/Table/MaterielsTable.php
@@ -101,16 +101,21 @@ class MaterielsTable extends AppTable | @@ -101,16 +101,21 @@ class MaterielsTable extends AppTable | ||
101 | 'foreignKey' => 'fournisseur_id' | 101 | 'foreignKey' => 'fournisseur_id' |
102 | ]); | 102 | ]); |
103 | 103 | ||
104 | - // 9/6/17 EP added : | ||
105 | - $this->belongsTo('Users', [ | ||
106 | - 'foreignKey' => 'gestionnaire_id' | ||
107 | - ]); | ||
108 | // 14/1/19 cake bake auto added: | 104 | // 14/1/19 cake bake auto added: |
109 | /* | 105 | /* |
110 | $this->belongsTo('Gestionnaires', [ | 106 | $this->belongsTo('Gestionnaires', [ |
111 | 'foreignKey' => 'gestionnaire_id' | 107 | 'foreignKey' => 'gestionnaire_id' |
112 | ]); | 108 | ]); |
113 | */ | 109 | */ |
110 | + // 9/6/17 EP added : | ||
111 | + $this->belongsTo('Users', [ | ||
112 | + 'foreignKey' => 'gestionnaire_id' | ||
113 | + ]); | ||
114 | + /* EP TODO: | ||
115 | + update `materiels` set gestionnaire_id = null where gestionnaire_id = 0; | ||
116 | + ALTER TABLE `materiels` | ||
117 | + ADD CONSTRAINT `fk_materiels_gestionnaire_id` FOREIGN KEY (`gestionnaire_id`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; | ||
118 | + */ | ||
114 | $this->belongsTo('Photos', [ | 119 | $this->belongsTo('Photos', [ |
115 | 'foreignKey' => 'photo_id' | 120 | 'foreignKey' => 'photo_id' |
116 | ]); | 121 | ]); |
src/Template/Materiels/add.ctp
@@ -232,6 +232,7 @@ if (isset($cpMateriel)) { | @@ -232,6 +232,7 @@ if (isset($cpMateriel)) { | ||
232 | ]) | 232 | ]) |
233 | ->first(); | 233 | ->first(); |
234 | */ | 234 | */ |
235 | + /* | ||
235 | $administrateurs = TableRegistry::get('Users')->find('list', [ | 236 | $administrateurs = TableRegistry::get('Users')->find('list', [ |
236 | 'keyField' => 'id', | 237 | 'keyField' => 'id', |
237 | 'valueField' => 'nom' | 238 | 'valueField' => 'nom' |
@@ -240,6 +241,7 @@ if (isset($cpMateriel)) { | @@ -240,6 +241,7 @@ if (isset($cpMateriel)) { | ||
240 | 'role =' => 'Administration' | 241 | 'role =' => 'Administration' |
241 | ]) | 242 | ]) |
242 | ->toArray(); | 243 | ->toArray(); |
244 | + */ | ||
243 | 245 | ||
244 | echo $this->Form->control('gestionnaire_id', [ | 246 | echo $this->Form->control('gestionnaire_id', [ |
245 | 'label' => 'Nom du gestionnaire de référence du matériel', | 247 | 'label' => 'Nom du gestionnaire de référence du matériel', |
src/Template/Materiels/edit.ctp
@@ -301,12 +301,15 @@ if ($IS_VALIDATED && $materiel->numero_serie) | @@ -301,12 +301,15 @@ if ($IS_VALIDATED && $materiel->numero_serie) | ||
301 | 'readonly' => true, | 301 | 'readonly' => true, |
302 | 'default' => $mail_responsable | 302 | 'default' => $mail_responsable |
303 | ]); | 303 | ]); |
304 | + | ||
305 | + // (EP) TODO: Pour Javascript only (bidouille sale à éviter...) | ||
304 | $res = TableRegistry::get('Users')->find() | 306 | $res = TableRegistry::get('Users')->find() |
305 | ->where([ | 307 | ->where([ |
306 | 'username' => $username, | 308 | 'username' => $username, |
307 | 'role' => 'Administration' | 309 | 'role' => 'Administration' |
308 | ]) | 310 | ]) |
309 | - ->first(); | 311 | + ->first(); |
312 | + /* | ||
310 | $administrateurs = TableRegistry::get('Users')->find('list', [ | 313 | $administrateurs = TableRegistry::get('Users')->find('list', [ |
311 | 'keyField' => 'nom', | 314 | 'keyField' => 'nom', |
312 | 'valueField' => 'nom' | 315 | 'valueField' => 'nom' |
@@ -315,6 +318,7 @@ if ($IS_VALIDATED && $materiel->numero_serie) | @@ -315,6 +318,7 @@ if ($IS_VALIDATED && $materiel->numero_serie) | ||
315 | 'role =' => 'Administration' | 318 | 'role =' => 'Administration' |
316 | ]) | 319 | ]) |
317 | ->toArray(); | 320 | ->toArray(); |
321 | + */ | ||
318 | echo $this->Form->control('gestionnaire_id', [ | 322 | echo $this->Form->control('gestionnaire_id', [ |
319 | 'label' => 'Nom du gestionnaire de référence du matériel', | 323 | 'label' => 'Nom du gestionnaire de référence du matériel', |
320 | 'empty' => 'Choisir un gestionnaire', | 324 | 'empty' => 'Choisir un gestionnaire', |