[pmwiki-devel] Seeking approach suggestions for roles and actions

DaveG pmwiki at solidgone.com
Tue Aug 11 20:04:00 CDT 2009


I'd like to implement a mechanism to define groups of users by role, and 
for each role to have one or more actions. I then need a mechanism to 
test to see if the logged in user has permissions for an action, based 
on the role they are assigned. This needs to tie to whether they have 
actual PmWiki privs as well.

A quick (very slightly simplified) sample:
  - David has the role Admin. Admins can perform actions 1,2,3.
  - Bert has the role Writer. Writers can perform actions 3,4,5.
  - Sally has both Admin and Writer roles, and thus can perform 1,2,3,4,5.

Sample test:
  - Does Bert have action 3 assigned?


The way I started to do this is with AuthUser (below), but it seems way 
too complicated. The particular implementation doesn't allow me to share 
actions across roles, but could be modified. It also means I need to use 
CondAuth -- which I'd prefer not to, as it seems to require some careful 
positioning in terms of other code, and other cookbooks.

It seems to me that I might be able to simply use AuthList somehow, and 
then test with:
   if ($AuthList['@'.$Auth_Array[$action]] > 0)  #where auth_array from 
example below


I'm sure someone has done this before. Any recommendations?


  ~ ~ David

#======================================
# Define users passwords
$AuthUser['daveg'] = crypt('david');
$AuthUser['bert'] = crypt('bert');
$AuthUser['sally'] = crypt('sally');

# Add users to the auth groups
$AuthUser['@Admin'] = array('david','sally');
$AuthUser['@Writer'] = array('bert','sally');

# Assign users/groups to the blogit security groups
$DefaultPasswords['Admin'] = array('@Admin');
$DefaultPasswords['Writer'] = array('@Writer');

#Now assign the actions to the roles
SDVA($Auth_Array, array(
    '1'=>'Admin',
    '2'=>'Admin',
    '3'=>'Writer',
    '4'=>'Writer',
    '5'=>'Writer'
));

Test with:
CondAuth($pagename, $Auth_Array[$action])




More information about the pmwiki-devel mailing list