PagesController.php
3.76 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
<?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()
{
$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->authentificationType_ldap)[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();
}
}
}