Forums / Discussions / Adding custom security policy limitations to your modules

Tuesday 25 May 2010 7:45:00 am - 6 replies

» Read full tutorial

Introduction

This tutorial will show you how to deal with custom security policy limitations for your modules. Once read, you will be able to fully take advantage of the granularity in eZ Publish's security and access control system.

Author Message

Carlos Revillo

Tuesday 25 May 2010 10:27:23 am

Wonderful tutorial!

André R.

Tuesday 25 May 2010 1:34:35 pm

Greate article!

But I didn't get the eZJSCore example, the whole point of hasAccessToLimitation() is to not have to deal with limitations yourself. Without limitations you can just as well use "$user->hasAccessTo( $module, $function )" and "fetch( 'user', 'has_access_to', ... )".

phpdoc (1.1 and up):

/**
     * Check access to a specific module/function with limitation values.
     * See eZ Publish documentation on more info on module, function and
     * limitation values. Example: a user can have content/read permissions
     * but it can be limited to a specific limitation like a section, a node
     * or node tree. 1.x limitation: returns false if one of provided values
     * don't match but ignores limitations not specified in $limitations.
     *
     * @param string $module
     * @param string $function
     * @param array|null $limitations A hash of limitation keys and values
     * @param bool Lets you get some additional debug information if set to true, useful while developing.
     * @return bool
     */
    public static function hasAccessToLimitation( $module, $function, $limitations = null, $debug = false )

http://svn.projects.ez.no/ezjscore/trunk/packages/ezjscore_extension/ezextension/ezjscore/autoloads/ezjscaccesstemplatefunctions.php

eZ Online Editor 5: http://projects.ez.no/ezoe || eZJSCore (Ajax): http://projects.ez.no/ezjscore || eZ Publish EE http://ez.no/eZPublish/eZ-Publish-Enterprise-Subscription
@: http://twitter.com/andrerom

Gaetano Giunta

Friday 28 May 2010 12:23:28 am

Great tutorial!

One thing that is not universally known: you can set up a set of policies of which at least one has to be matched to give access to a view, as well as defining a set of policies all of which have to be matched:

$ViewList = array(
    'at_least_one' => array(
        'functions' => array( 'func1 or func2' ) ),
    'both' => array(
      'functions' => array( 'func1', 'func2' ) ) );

$FunctionList = array(
    'func1' => array(),
    'func2' => array(),
);

Principal Consultant International Business
Member of the Community Project Board

H-Works Agency

Wednesday 24 November 2010 2:57:03 am

Very valuable tut.

But is there a way to implement access control for a whole module without having to insert hasAccessTo in every views ?

Thanx in advance

EZP is Great

Jérôme Vieilledent

Wednesday 24 November 2010 5:22:57 am

If you want to implement the finest granularity of the access control, I guess not. You really need to check the limitations access in every views.

H-Works Agency

Wednesday 24 November 2010 6:00:47 am

Ok great Jérôme thanx a lot.

EZP is Great

You must be logged in to post messages in this topic!