Skip to content

Commit 98ed0a0

Browse files
committed
Added support for local permissions
1 parent c5e3ce4 commit 98ed0a0

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# CakePHP specific files #
22
##########################
33
/config/app_local.php
4+
/config/permissions_local.php
45
/config/.env
56
/logs/*
67
/tmp/*

config/permissions.php

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,10 @@
99
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
1010
*/
1111

12+
use Cake\Http\ServerRequest;
13+
use Cake\Utility\Hash;
14+
1215
/*
13-
* IMPORTANT:
14-
* This is an example configuration file. Copy this file into your config directory and edit to
15-
* setup your app permissions.
16-
*
1716
* This is a quick roles-permissions implementation
1817
* Rules are evaluated top-down, first matching rule will apply
1918
* Each line define
@@ -49,7 +48,10 @@
4948
],
5049
*/
5150

52-
return [
51+
/*
52+
* Default permissions
53+
*/
54+
$permissions = [
5355
'CakeDC/Auth.permissions' => [
5456
//RouterOS devices access to configuration script
5557
[
@@ -128,8 +130,8 @@
128130
'plugin' => null,
129131
'controller' => 'AppUsers',
130132
'action' => 'resetOneTimePasswordAuthenticator',
131-
'allowed' => function (array $user, $role, \Cake\Http\ServerRequest $request) {
132-
$userId = \Cake\Utility\Hash::get($request->getAttribute('params'), 'pass.0');
133+
'allowed' => function (array $user, $role, ServerRequest $request) {
134+
$userId = Hash::get($request->getAttribute('params'), 'pass.0');
133135
if (!empty($userId) && !empty($user)) {
134136
return $userId === $user['id'];
135137
}
@@ -290,3 +292,17 @@
290292
],
291293
],
292294
];
295+
296+
/*
297+
* Load local permissions if exists
298+
*/
299+
$localPermissionsFile = CONFIG . 'permissions_local.php';
300+
if (file_exists($localPermissionsFile)) {
301+
$localPermissions = include $localPermissionsFile;
302+
if (is_array($localPermissions)) {
303+
// merge permissions - local first in order
304+
$permissions = array_merge_recursive($localPermissions, $permissions);
305+
}
306+
}
307+
308+
return $permissions;

0 commit comments

Comments
 (0)