Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/croogo/croogo/Acl/src/Model/Behavior/UserAroBehavior.php
<?php

namespace Croogo\Acl\Model\Behavior;

use
Cake\Cache\Cache;
use
Cake\Core\Configure;
use
Cake\Event\Event;
use
Cake\ORM\Behavior;
use
Cake\ORM\Entity;
use
Cake\ORM\Table;
use
Cake\ORM\TableRegistry;

/**
 * UserAro Behavior
 *
 * @category Behavior
 * @package  Croogo.Acl.Model.Behavior
 * @version  1.0
 * @author   Fahad Ibnay Heylaal <contact@fahad19.com>
 * @license  http://www.opensource.org/licenses/mit-license.php The MIT License
 * @link     http://www.croogo.org
 */
class UserAroBehavior extends Behavior
{

   
/**
     * Setup
     */
   
public function initialize(array $config)
    {
       
$this->_setupMultirole($this->_table);
    }

   
/**
     * Enable Multiple Role, dynamically bind User Habtm Role
     */
   
protected function _setupMultirole(Table $model)
    {
        if (!
Configure::read('Access Control.multiRole')) {
            return;
        }
       
$model->belongsToMany('Roles', [
           
'className' => 'Croogo/Users.Roles',
           
'saveStrategy' => 'replace',
        ]);
    }

   
/**
     * afterSave
     *
     * @param Model $event
     * @param bool $entity
     * @return void
     */
   
public function afterSave(Event $event, Entity $entity)
    {
       
// update ACO alias
       
if (!empty($entity->username)) {
           
$model = $event->getSubject();
           
$arosTable = TableRegistry::get('Aros');

           
$ref = ['model' => $model->getAlias(), 'foreign_key' => $entity->id];
           
$node = $model->node($ref);
           
$aro = $node->firstOrFail();

           
$aro->alias = $entity->username;

           
$arosTable->save($aro);
        }
       
Cache::clearGroup('acl', 'permissions');
    }

   
/**
     * afterDelete
     */
   
public function afterDelete(Event $event)
    {
       
Cache::clearGroup('acl', 'permissions');
    }
}