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 18 2025 11:34:36
Script start
Timing: Jan 18 2025 11:34:36
Module start 'layout'
Timing: Jan 18 2025 11:34:36
Module start 'content'
Timing: Jan 18 2025 11:34:36
Module end 'content'
Timing: Jan 18 2025 11:34:36
Script end

Main resources:

Total runtime0.1973 sec
Peak memory usage4,096.0000 KB
Database Queries86

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0070 589.6172152.6563
Module start 'layout' 0.00700.0031 742.273439.5078
Module start 'content' 0.01010.1856 781.7813851.7031
Module end 'content' 0.19570.0016 1,633.484422.3984
Script end 0.1973  1,655.8828 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00331.6710160.0002
Check MTime0.00140.7018160.0001
Mysql Total
Database connection0.00130.645210.0013
Mysqli_queries0.115658.5677860.0013
Looping result0.00100.4890840.0000
Template Total0.165683.920.0828
Template load0.00190.971020.0010
Template processing0.163782.959720.0818
Template load and register function0.00060.298610.0006
states
state_id_array0.00150.772920.0008
state_identifier_array0.00150.765830.0005
Override
Cache load0.00160.8099300.0001
Sytem overhead
Fetch class attribute name0.00170.8545110.0002
Fetch class attribute can translate value0.00040.211050.0001
class_abstraction
Instantiating content class attribute0.00000.0101120.0000
XML
Image XML parsing0.00251.244250.0005
General
dbfile0.00221.1041370.0001
String conversion0.00000.005640.0000
Note: percentages do not add up to 100% because some accumulators overlap

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1node/view/full.tplforum_topic/full.tplextension/community_design/design/suncana/override/templates/forum_topic/full.tplEdit templateOverride template
7content/datatype/view/ezxmltext.tpl<No override>extension/community_design/design/suncana/templates/content/datatype/view/ezxmltext.tplEdit templateOverride template
8content/datatype/view/ezxmltags/paragraph.tpl<No override>extension/ezwebin/design/ezwebin/templates/content/datatype/view/ezxmltags/paragraph.tplEdit templateOverride template
5content/datatype/view/ezimage.tpl<No override>extension/sevenx/design/simple/templates/content/datatype/view/ezimage.tplEdit templateOverride template
2content/datatype/view/ezxmltags/literal.tpl<No override>extension/community/design/standard/templates/content/datatype/view/ezxmltags/literal.tplEdit templateOverride template
1content/datatype/view/ezxmltags/link.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/link.tplEdit templateOverride template
1print_pagelayout.tpl<No override>extension/community/design/community/templates/print_pagelayout.tplEdit templateOverride template
 Number of times templates used: 25
 Number of unique templates used: 7

Time used to render debug report: 0.0001 secs