Merge branch 'develop' of github.com:cerebrate-project/cerebrate into develop

cli-modification-summary
Sami Mokaddem 2022-01-26 14:54:03 +01:00
commit 74e95855bd
No known key found for this signature in database
GPG Key ID: 164C473F627A06FA
5 changed files with 51 additions and 15 deletions

View File

@ -110,6 +110,7 @@ class AppController extends Controller
} }
unset($user['password']); unset($user['password']);
$this->ACL->setUser($user); $this->ACL->setUser($user);
$this->Navigation->genBreadcrumbs($user);
$this->request->getSession()->write('authUser', $user); $this->request->getSession()->write('authUser', $user);
$this->isAdmin = $user['role']['perm_admin']; $this->isAdmin = $user['role']['perm_admin'];
if (!$this->ParamHandler->isRest()) { if (!$this->ParamHandler->isRest()) {

View File

@ -277,9 +277,29 @@ class ACLComponent extends Component
$this->user = $user; $this->user = $user;
} }
public function getUser(): User public function getUser(): ?User
{ {
return $this->user; if (!empty($this->user)) {
return $this->user;
}
return null;
}
public function canEditUser(User $currentUser, User $user): bool
{
if (empty($user) || empty($currentUser)) {
return false;
}
if (!$currentUser['role']['perm_admin']) {
if (!$currentUser['role']['perm_org_admin']) {
return false;
} else {
if ($currentUser['organisation_id'] !== $user['organisation_id']) {
return false;
}
}
}
return true;
} }
/* /*

View File

@ -1,7 +1,7 @@
<?php <?php
namespace BreadcrumbNavigation; namespace BreadcrumbNavigation;
require_once(APP . 'Controller' . DS . 'Component' . DS . 'Navigation' . DS . 'base.php'); require_once(APP . 'Controller' . DS . 'Component' . DS . 'Navigation' . DS . 'base.php');
class UsersNavigation extends BaseNavigation class UsersNavigation extends BaseNavigation
{ {
@ -24,17 +24,21 @@ class UsersNavigation extends BaseNavigation
$bcf = $this->bcf; $bcf = $this->bcf;
$request = $this->request; $request = $this->request;
$passedData = $this->request->getParam('pass'); $passedData = $this->request->getParam('pass');
$this->bcf->addLink('Users', 'view', 'UserSettings', 'index', function ($config) use ($bcf, $request, $passedData) { $currentUser = $this->currentUser;
if (!empty($passedData[0])) { $ownUser = (!empty($passedData[0]) && $passedData[0] === $currentUser['id']);
$user_id = $passedData[0]; if ($ownUser) {
$linkData = [ $this->bcf->addLink('Users', 'view', 'UserSettings', 'index', function ($config) use ($bcf, $request, $passedData, $currentUser) {
'label' => __('Account settings', h($user_id)), if (!empty($passedData[0])) {
'url' => sprintf('/users/settings/%s', h($user_id)) $user_id = $passedData[0];
]; $linkData = [
return $linkData; 'label' => __('Account settings', h($user_id)),
} 'url' => sprintf('/users/settings/%s', h($user_id))
return []; ];
}); return $linkData;
}
return [];
});
}
$this->bcf->addLink('Users', 'view', 'UserSettings', 'index', function ($config) use ($bcf, $request, $passedData) { $this->bcf->addLink('Users', 'view', 'UserSettings', 'index', function ($config) use ($bcf, $request, $passedData) {
if (!empty($passedData[0])) { if (!empty($passedData[0])) {
$user_id = $passedData[0]; $user_id = $passedData[0];

View File

@ -5,6 +5,7 @@ class BaseNavigation
{ {
protected $bcf; protected $bcf;
protected $request; protected $request;
public $currentUser;
public function __construct($bcf, $request) public function __construct($bcf, $request)
{ {
@ -12,8 +13,13 @@ class BaseNavigation
$this->request = $request; $this->request = $request;
} }
public function setCurrentUser($currentUser)
{
$this->currentUser = $currentUser;
}
public function addRoutes() {} public function addRoutes() {}
public function addParents() {} public function addParents() {}
public function addLinks() {} public function addLinks() {}
public function addActions() {} public function addActions() {}
} }

View File

@ -10,5 +10,10 @@ class Organisation extends AppModel
protected $_accessible = [ protected $_accessible = [
'*' => true, '*' => true,
'id' => false, 'id' => false,
'created' => false
];
protected $_accessibleOnNew = [
'created' => true
]; ];
} }