-
Notifications
You must be signed in to change notification settings - Fork 3
/
AppController.php
122 lines (97 loc) · 3.68 KB
/
AppController.php
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
<?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\Controller\Controller;
use Cake\Controller\Component\AuthComponent;
use Cake\Event\Event;
use Cake\Network\Exception\NotFoundException;
use Cake\Network\Exception\UnauthorizedException;
/**
* Application Controller
*
* Add your application-wide methods in the class below, your controllers
* will inherit them.
*
* @link http://book.cakephp.org/3.0/en/controllers.html#the-app-controller
*/
class AppController extends Controller {
/**
* Components this controller uses.
*
* Component names should not include the `Component` suffix. Components
* declared in subclasses will be merged with components declared here.
*
* @var array
*/
public $components = [
'Auth' ,
'Flash',
];
protected $_CustomersAutentication = array(
'authenticate'=> [
AuthComponent::ALL => ['userModel' => 'Customers'],
'Form' => [
'fields' => ['username' => 'email', 'password' => 'password']
],
],
'authError'=> 'Área restrita, identifique-se primeiro.',
'sessionKey' => 'Auth.Customer',
'loginAction' => ['controller' => 'customers', 'action' => 'login', 'customer' => true],
'loginRedirect' => '/',
'logoutRedirect' => '/');
protected $_UsersAutentication = array(
'authenticate'=> [
AuthComponent::ALL => ['userModel' => 'Users'],
'Form' => [
'fields' => ['username' => 'email', 'password' => 'password']
],
],
'authError'=> 'Área restrita, identifique-se primeiro.',
'sessionKey' => 'Auth.Admin',
'loginAction' => ['controller' => 'users', 'action' => 'login', 'admin' => true],
'loginRedirect' => '/admin',
'logoutRedirect' => '/admin/login');
public $helpers = ['Form'];
public function beforeFilter(Event $e) {
$name = $this->request->session()->read();
pr($name);
$this->_manageAuthConfigs();
}
protected function isPrefix($prefix)
{
$params = $this->request->params;
return isset($params['prefix']) && $params['prefix'] === $prefix;
}
public function beforeRender(Event $e) {
// set in the view the currentUser
$authUser = !empty($this->Auth->user()) ? $this->Auth->user() : null;
$this->set(['authUser'=>$authUser]);
// set in view the body class
$this->set('bodyClass',
sprintf('%s %s', strtolower($this->name), strtolower($this->name) . '-' . strtolower($this->request->params['action'])));
}
private function _manageAuthConfigs() {
$this->Auth->config($this->_CustomersAutentication);
// if the user admin
if ($this->isPrefix('admin')) {
$this->Auth->config($this->_UsersAutentication);
$this->Auth->allow('login');
} elseif ($this->isPrefix('customer')) {
$this->Auth->deny();
} else {
$this->Auth->allow();
}
}
}