[Pmwiki-users] Nested group permissions

Crisses crisses at kinhost.org
Wed Apr 30 10:29:46 CDT 2003


> That's it!  Let me know if you need any clarification on anything.

Ok:  it does not work right now:

For example: tried entering the NC17 edit password to read NC17, it asked
for a password.  Put in NC17 edit password to edit an NC17 page, it worked,
but I could not edit PG13, could not read NC17 (both asked for a password).
I entered the read PG13 password to read PG13, it worked.  Checked GRating
read access and this worked (this puzzled me, given everything else, maybe I
erred in encrypting a password?, so I'll check that). Then I tried XXX read
password to read XXX, it worked, then I tried to view a NC17 page, it asked
for a password.  I went back to try to read Grating, which just worked, and
it asked for a password, so it forgot that I just had access.

So something's not quite right.  Edit passwords are not granting read
access, or lower-level edit access.  Read passwords at upper levels are not
granting read access at lower levels (with the strange possible exception of
PG13 read having granted GRating read?).  I tested several times by
reloading a browser and using another browser (just so it would reset my
passwords), and had the same problems.  I went through and 'cleared' the
group passwords from the webbrowser using the admin password, also, in case
that was interfering.




This is what I put in the local.php file:

$DefaultPasswords['attr'] = '*'; # negates per-page passwords


## The following code is added by Crisses to create nested pswds
## Code supplied by PMichaud

    $grouplevels = array('GRating'=>1, 'PG13'=>2, 'NC17'=>3, 'XXX'=>4);
    $pwread['GRating'] = ('encryptedpassword');
    $pwedit['GRating'] = ('encryptedpassword');
    $pwread['PG13'] = ('encryptedpassword');
    $pwedit['PG13'] = ('encryptedpassword');
    $pwread['NC17'] = ('encryptedpassword');
    $pwedit['NC17'] = ('encryptedpassword');
    $pwread['XXX'] = ('encryptedpassword');
    $pwedit['XXX'] = ('encryptedpassword');

## Note that each of the $pw entries can be arrays if you want to
## distribute some multiple passwords.  Then, figure out what group
## we're in, and get the level for the current group:

    $group = FmtPageName('$Group',$pagename);
    $thislevel = $grouplevels[$group];


## Set up the $DefaultPasswords entries depending on
## the current group.  Basically, passwords in groups with equal or
## higher levels than the current one are added to the arrays:

    foreach ($grouplevels as $g=>$v) {
      if ($v>=$thislevel) {
        $DefaultPasswords['read'] =
          array_merge($DefaultPasswords['read'],$pwread[$g]);
        $DefaultPasswords['edit'] =
          array_merge($DefaultPasswords['edit'],$pwedit[$g]);
      }
    }

## allow all of the edit passwords to be accepted for read
## actions:

    $DefaultPasswords['read'] =
      array_merge($DefaultPasswords['read'],$DefaultPasswords['edit']);


Thanks so much :)

Crisses
-- 
"If English was good enough for Jesus, it should be good enough for you."
  -- proprietor of Christian bookstore





More information about the pmwiki-users mailing list