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!

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.

eZ debug

Timing: Jan 28 2025 22:00:06
Script start
Timing: Jan 28 2025 22:00:06
Module start 'layout'
Timing: Jan 28 2025 22:00:06
Module start 'content'
Timing: Jan 28 2025 22:00:06
Module end 'content'
Timing: Jan 28 2025 22:00:06
Script end

Main resources:

Total runtime0.0177 sec
Peak memory usage2,048.0000 KB
Database Queries3

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0054 593.2031152.0625
Module start 'layout' 0.00540.0033 745.265636.6563
Module start 'content' 0.00870.0073 781.9219103.2422
Module end 'content' 0.01600.0017 885.164137.9922
Script end 0.0176  923.1563 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.002111.8549140.0001
Check MTime0.00095.2205140.0001
Mysql Total
Database connection0.00095.065410.0009
Mysqli_queries0.002816.010530.0009
Looping result0.00000.095710.0000
Template Total0.00137.610.0013
Template load0.00105.619410.0010
Template processing0.00031.961210.0003
Override
Cache load0.00073.890110.0007
General
dbfile0.002815.643880.0003
String conversion0.00000.029740.0000
Note: percentages do not add up to 100% because some accumulators overlap

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1print_pagelayout.tpl<No override>extension/community/design/community/templates/print_pagelayout.tplEdit templateOverride template
 Number of times templates used: 1
 Number of unique templates used: 1

Time used to render debug report: 0.0001 secs