PagesController.php
4.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<?php
/**
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @since 0.2.9
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/
namespace App\Controller;
use Cake\Core\Configure;
use Cake\Network\Exception\NotFoundException;
use Cake\View\Exception\MissingTemplateException;
use Cake\ORM\TableRegistry;
/**
* Static content controller
*
* This controller will render views from Template/Pages/
*
* @link http://book.cakephp.org/3.0/en/controllers/pages-controller.html
*/
class PagesController extends AppController
{
/**
*
* @param
* $user
* @return boolean Give authorization for materiels
*/
/*
* // (EP) TODO: ameliorer ca avec des variables globales IS_VALIDATED, IS_ADMIN, ...
* public function isAuthorized($user) {
* $path = func_get_args();
* if($path[0] === null) {
* $path[0] = '';
* }
* $page = $subpage = null;
* if (!empty($path[0])) {
* $page = $path[0];
* }
* if (!empty($path[1])) {
* $subpage = $path[1];
* }
* if ($page == 'tools') {
* // Autoriser seulement à partir du role ADMIN et +
* if ($this->userHasRoleAtLeast('Utilisateur')) {
* return false;
* }
* }
* return true;
* }
*/
/**
* Displays a view
*
* @return void|\Cake\Network\Response
* @throws \Cake\Network\Exception\NotFoundException When the view file could not
* be found or \Cake\View\Exception\MissingTemplateException in debug mode.
*/
public function display()
{
// (EP 21/5/19)
// On ne voit ce message que sur la page "about"
// En effet, les autres pages nécessitant un login,
// on est redirigé sur la page login et donc la methode login() du controleur UsersController
// Du coup, il faut décommenter la ligne "exit" juste après pour voir ce message (évite la redirection).
$this->myDebug("step 2: PagesController.display()");
//exit;
$configuration = $this->confLabinvent;
$path = func_get_args();
if ($path[0] === null) {
$path[0] = '';
}
$this->myDebug($path);
// @todo : faire plus proprement, dans isAuthorized()
// Si l'utilisateur n'est pas connecté, on le redirige vers la page login.ctp
// sauf si l'action demandée est 'about' ou si le mode install est activé
if (! ($this->LdapAuth->user($configuration->ldap_authenticationType)[0]) && $path[0] != 'about' && ! ($configuration->mode_install)) {
return $this->redirect([
'controller' => 'users',
'action' => 'login'
]);
}
$count = count($path);
if (! $count) {
return $this->redirect('/');
}
$page = $subpage = null;
if (! empty($path[0])) {
$page = $path[0];
}
if (! empty($path[1])) {
$subpage = $path[1];
}
// @todo : faire plus proprement, avec isAuthorized()
if ($page == 'tools') {
// Autoriser seulement à partir du role ADMIN et +
// if (! $this->userHasRoleAtLeast('Administration')) {
if (! $this->USER_IS_ADMIN_AT_LEAST()) return $this->redirect('/');
}
if ($page == 'infos') {
// Autoriser seulement SUPERADMIN
if (! $this->USER_IS_SUPERADMIN()) return $this->redirect('/');
}
$this->set(compact('page', 'subpage'));
try {
$this->render(implode('/', $path));
} catch (MissingTemplateException $e) {
if (Configure::read('debug')) {
throw $e;
}
throw new NotFoundException();
}
}
}