Forums / Developer / Assign roles dynamically on login

Assign roles dynamically on login

Author Message

Sergei Chusmah

Thursday 17 April 2008 1:41:26 am

I'd like to know which is the best way to assign roles to users from php code.

I've created a custom loginhandler, and depending on the password the user types on login, they should be assigned to a role or other.

I think one way is to assign the user to a group which has the role needed, but this involves the publishing of a new version of the user object (is there another way?) Something like this (code from the ldap login handler):

                   if ( $defaultUserPlacement != $parentNodeID )
                    {
                        $newVersion =& $contentObject->createNewVersion();
                        $newVersion->assignToNode( $defaultUserPlacement, 1 );
                        $newVersion->removeAssignment( $parentNodeID );
                        $newVersionNr = $newVersion->attribute( 'version' );
                        include_once( 'lib/ezutils/classes/ezoperationhandler.php' );
                        $operationResult = eZOperationHandler::execute( 'content', 'publish', array( 'object_id' => $userID,
                                                                                                     'version' => $newVersionNr ) );
                    }

But this doesn't seem to be working for me... maybe I misplaced a object id for a node id or something... does anyone know if this is the correct approach?

Is there a way for assigning roles directly (without changing the user's group)?

Many thanks. (BTW I'm using 3.6)

Nicolas Lescure

Thursday 17 April 2008 4:13:51 am

You're right. Move the user in the user group which has the role you need. When you move it, you don't have to publish another version of the user.

Use this :

eZContentObjectTreeNodeOperations::move( $userObject->mainNodeID(), $GroupNodeId )

It should work.

eZ debug

Timing: Jan 31 2025 04:21:17
Script start
Timing: Jan 31 2025 04:21:17
Module start 'content'
Timing: Jan 31 2025 04:21:17
Module end 'content'
Timing: Jan 31 2025 04:21:17
Script end

Main resources:

Total runtime0.1506 sec
Peak memory usage2,048.0000 KB
Database Queries141

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0052 587.9531180.8281
Module start 'content' 0.00520.0082 768.781393.9141
Module end 'content' 0.01340.1371 862.6953523.7969
Script end 0.1506  1,386.4922 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00312.0599200.0002
Check MTime0.00130.8450200.0001
Mysql Total
Database connection0.00070.450810.0007
Mysqli_queries0.103268.50231410.0007
Looping result0.00130.85531390.0000
Template Total0.136790.810.1367
Template load0.00080.534610.0008
Template processing0.135990.227410.1359
Override
Cache load0.00060.385110.0006
Sytem overhead
Fetch class attribute can translate value0.00050.308710.0005
XML
Image XML parsing0.00020.139510.0002
General
dbfile0.00996.6022200.0005
String conversion0.00000.002730.0000
Note: percentages do not add up to 100% because some accumulators overlap

CSS/JS files loaded with "ezjscPacker" during request:

CacheTypePacklevelSourceFiles
CSS0extension/community/design/community/stylesheets/ext/jquery.autocomplete.css
extension/community_design/design/suncana/stylesheets/scrollbars.css
extension/community_design/design/suncana/stylesheets/tabs.css
extension/community_design/design/suncana/stylesheets/roadmap.css
extension/community_design/design/suncana/stylesheets/content.css
extension/community_design/design/suncana/stylesheets/star-rating.css
extension/community_design/design/suncana/stylesheets/syntax_and_custom_tags.css
extension/community_design/design/suncana/stylesheets/buttons.css
extension/community_design/design/suncana/stylesheets/tweetbox.css
extension/community_design/design/suncana/stylesheets/jquery.fancybox-1.3.4.css
extension/bcsmoothgallery/design/standard/stylesheets/magnific-popup.css
extension/sevenx/design/simple/stylesheets/star_rating.css
extension/sevenx/design/simple/stylesheets/libs/fontawesome/css/all.min.css
extension/sevenx/design/simple/stylesheets/main.v02.css
extension/sevenx/design/simple/stylesheets/main.v02.res.css
JS0extension/ezjscore/design/standard/lib/yui/3.17.2/build/yui/yui-min.js
extension/ezjscore/design/standard/javascript/jquery-3.7.0.min.js
extension/community_design/design/suncana/javascript/jquery.ui.core.min.js
extension/community_design/design/suncana/javascript/jquery.ui.widget.min.js
extension/community_design/design/suncana/javascript/jquery.easing.1.3.js
extension/community_design/design/suncana/javascript/jquery.ui.tabs.js
extension/community_design/design/suncana/javascript/jquery.hoverIntent.min.js
extension/community_design/design/suncana/javascript/jquery.popmenu.js
extension/community_design/design/suncana/javascript/jScrollPane.js
extension/community_design/design/suncana/javascript/jquery.mousewheel.js
extension/community_design/design/suncana/javascript/jquery.cycle.all.js
extension/sevenx/design/simple/javascript/jquery.scrollTo.js
extension/community_design/design/suncana/javascript/jquery.cookie.js
extension/community_design/design/suncana/javascript/ezstarrating_jquery.js
extension/community_design/design/suncana/javascript/jquery.initboxes.js
extension/community_design/design/suncana/javascript/app.js
extension/community_design/design/suncana/javascript/twitterwidget.js
extension/community_design/design/suncana/javascript/community.js
extension/community_design/design/suncana/javascript/roadmap.js
extension/community_design/design/suncana/javascript/ez.js
extension/community_design/design/suncana/javascript/ezshareevents.js
extension/sevenx/design/simple/javascript/main.js

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1pagelayout.tpl<No override>extension/sevenx/design/simple/templates/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