Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/cakephp/acl/src/Auth/BaseAuthorize.php
<?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
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
 */
namespace Acl\Auth;

use
Cake\Auth\BaseAuthorize as ParentAuthorize;
use
Cake\Controller\ComponentRegistry;
use
Cake\Http\ServerRequest;
use
Cake\Utility\Inflector;

/**
 * Base authorization adapter for other adapter of this plugin.
 */
abstract class BaseAuthorize extends ParentAuthorize
{

   
/**
     * Default config for authorize objects.
     *
     * - `actionPath` - The path to ACO nodes that contains the nodes for
     *    controllers. Used as a prefix
     *    when calling $this->action();
     * - `actionMap` - Action -> crud mappings. Used by authorization objects that
     *    want to map actions to CRUD roles.
     * - `userModel` - Model name that ARO records can be found under.
     *    Defaults to 'User'.
     *
     * @var array
     */
   
protected $_defaultConfig = [
       
'actionPath' => null,
       
'actionMap' => [
           
'index' => 'read',
           
'add' => 'create',
           
'edit' => 'update',
           
'view' => 'read',
           
'delete' => 'delete',
           
'remove' => 'delete'
       
],
       
'userModel' => 'Users'
   
];

   
/**
     * Get the action path for a given request. Primarily used by authorize objects
     * that need to get information about the plugin, controller, and action being invoked.
     *
     * @param \Cake\Http\ServerRequest $request The request a path is needed for.
     * @param string $path Path
     * @return string The action path for the given request.
     */
   
public function action(ServerRequest $request, $path = '/:plugin/:prefix/:controller/:action')
    {
       
$plugin = empty($request->getParam('plugin')) ? null : preg_replace('/\//', '\\', Inflector::camelize($request->getParam('plugin'))) . '/';
       
$prefix = empty($request->getParam('prefix')) ? null : Inflector::camelize($request->getParam('prefix')) . '/';
       
$path = str_replace(
            [
':controller', ':action', ':plugin/', ':prefix/'],
            [
Inflector::camelize($request->getParam('controller')), $request->getParam('action'), $plugin, $prefix],
           
$this->_config['actionPath'] . $path
       
);
       
$path = str_replace('//', '/', $path);

        return
trim($path, '/');
    }

   
/**
     * Maps crud actions to actual action names. Used to modify or get the current
     * mapped actions.
     *
     * Create additional mappings for a standard CRUD operation:
     *
     * {{{
     * $this->Auth->mapActions(['create' => ['add', 'register']);
     * }}}
     *
     * Or equivalently:
     *
     * {{{
     * $this->Auth->mapActions(['register' => 'create', 'add' => 'create']);
     * }}}
     *
     * Create mappings for custom CRUD operations:
     *
     * {{{
     * $this->Auth->mapActions([range' => 'search']);
     * }}}
     *
     * You can use the custom CRUD operations to create additional generic
     * permissions that behave like CRUD operations. Doing this will require
     * additional columns on the permissions lookup. For example if one wanted an
     * additional search CRUD operation one would create and additional column
     * '_search' in the aros_acos table. One could create a custom admin CRUD
     * operation for administration functions similarly if needed.
     *
     * @param array $map Either an array of mappings, or undefined to get current values.
     * @return mixed Either the current mappings or null when setting.
     * @see AuthComponent::mapActions()
     */
   
public function mapActions(array $map = [])
    {
        if (empty(
$map)) {
            return
$this->_config['actionMap'];
        }
        foreach (
$map as $action => $type) {
            if (
is_array($type)) {
                foreach (
$type as $typedAction) {
                   
$this->_config['actionMap'][$typedAction] = $action;
                }
            } else {
               
$this->_config['actionMap'][$action] = $type;
            }
        }
    }
}