Wikka : ACLsWithUserGroups

HomePage :: Categories :: Index :: Changes :: Comments :: Documentation :: Blog :: Login/Register
Most recent edit on 2008-06-04 04:02:22 by MasinAlDujaili [working versions]

Additions:
Working for 1.1.5.3 (according to author) to 1.1.6.4 (latest)
There is already a proposal for this at GroupManagement. However this code doesn't seem to work anymore.


Deletions:
There is already a proposal for this at GroupManagement. However this code doesn't seem to work anymore.



Edited on 2008-05-05 06:01:02 by MarcElser

Additions:




Edited on 2008-01-28 00:15:45 by JavaWoman [Modified links pointing to docs server]

No differences.


Edited on 2007-12-12 09:53:12 by JavaWoman [prevent function references looking as page links]

Additions:
In wikka.php add the isGroupMember() function (after TrimACLs() function for example):
Then change HasAccess() function:
A hacker may be able to get unauthorized access if they create a new user account with the same name as a groupname. For example, in the above scenario, the hacker may gain unauthorized access if (s)he creates a user with "UserGroupWikkaCrew" as the login name. The easiest way to prevent this from happening is to disallow new users to pick a name which is equal to an existing page.


Deletions:
In wikka.php add the isGroupMember function (after TrimACLs function for example):
Then change HasAccess function:
A hacker may be able to get unauthorized access if they create a new user account with the same name as a groupname. For example, in the above scenario, the hacker may gain unauthorized access if (s)he creates a user with "UserGroupWikkaCrew" as the login name. The easiest way to prevent this from happening is to disallow new users to pick a new which is equal to an existing page.




Edited on 2007-05-31 23:26:34 by WazoO [Reverted]

Additions:
Write in all the user login that have to be part of this group inside "+" signs: +UserLogin1+UserLogin2+ is valid as would be:
  • This doesn't really make sense, because u can add it as a subgroupe using his page/groupname, no ?
    • Correct. I'm using this to control access on my intranet and I've got multiple layers of groups (many that cross over) that allow me to manage groups of groups. Here's how I'm using it:
    • Group 1 (UGMetro) has several names: +Reporter1+ +Reporter2+ +Reporter3+ +MetroEditors+
    • Group 2 (UGSports) has others: +Reporter4+ +Reporter5+ +Reporter6+ +SportsEditors+
    • And the master group (UGNewsroom) looks like this: +UGMetro+ +UGSports+
    • Works just fine for me. :) --MovieLady

Security Risks

A hacker may be able to get unauthorized access if they create a new user account with the same name as a groupname. For example, in the above scenario, the hacker may gain unauthorized access if (s)he creates a user with "UserGroupWikkaCrew" as the login name. The easiest way to prevent this from happening is to disallow new users to pick a new which is equal to an existing page.
  • This check is already in place as of version 1.1.6.0. --JavaWoman

CategoryUserContributions


Deletions:
Write in all the user login that have to be part of this group inside " " signs: UserLogin1 UserLogin2 is valid as would be:




Edited on 2007-05-31 10:29:26 by MqaP1b

Additions:
Write in all the user login that have to be part of this group inside " " signs: UserLogin1 UserLogin2 is valid as would be:


Deletions:
Write in all the user login that have to be part of this group inside "+" signs: +UserLogin1+UserLogin2+ is valid as would be:
  • This doesn't really make sense, because u can add it as a subgroupe using his page/groupname, no ?
    • Correct. I'm using this to control access on my intranet and I've got multiple layers of groups (many that cross over) that allow me to manage groups of groups. Here's how I'm using it:
    • Group 1 (UGMetro) has several names: +Reporter1+ +Reporter2+ +Reporter3+ +MetroEditors+
    • Group 2 (UGSports) has others: +Reporter4+ +Reporter5+ +Reporter6+ +SportsEditors+
    • And the master group (UGNewsroom) looks like this: +UGMetro+ +UGSports+
    • Works just fine for me. :) --MovieLady

Security Risks

A hacker may be able to get unauthorized access if they create a new user account with the same name as a groupname. For example, in the above scenario, the hacker may gain unauthorized access if (s)he creates a user with "UserGroupWikkaCrew" as the login name. The easiest way to prevent this from happening is to disallow new users to pick a new which is equal to an existing page.
  • This check is already in place as of version 1.1.6.0. --JavaWoman

CategoryUserContributions




Edited on 2006-06-14 03:26:47 by WazoO [dropped the Beta, final 1.1.6.2 is out, mod works]

Additions:
(for version 1.1.6.2, the required file has beem moved and renamed to ...../libs/Wakka.class.php )

Deletions:
(for version 1.1.6.2-Beta, the required file has beem moved and renamed to ...../libs/Wakka.class.php )



Edited on 2006-06-09 00:10:29 by WazoO [updated file location for 1.1.6.2-Beta]

Additions:
(for version 1.1.6.2-Beta, the required file has beem moved and renamed to ...../libs/Wakka.class.php )

Deletions:
(for version 1.1.6.2-Beta, this file has beem moved and renamed to ...../libs/Wakka.class.php )



Edited on 2006-06-09 00:08:59 by WazoO [updated file location for 1.1.6.2-Beta]

Additions:
(for version 1.1.6.2-Beta, this file has beem moved and renamed to ...../libs/Wakka.class.php )



Edited on 2006-06-06 20:37:05 by MovieLady [example on use for multi-level groups]

Additions:
My code needs probably to be reviewed by expert coder as I am not at all a developer (I just rely on the above user group).

Deletions:
My code needs probably to be reviewed by expert coder as I am not at all a developper (I just rely on the above user group).



Edited on 2005-12-16 09:05:35 by EltharielHdh

Additions:




Edited on 2005-12-16 09:02:58 by EltharielHdh [some cleaning]

Additions:
aha! a user entry.
aha! a user entry.


Deletions:
aha! a user entry.
aha! a user entry.




Edited on 2005-03-07 15:52:22 by JavaWoman [reply re: security risks]

Additions:




Edited on 2005-03-07 13:46:18 by FreekDijkstra [Added security risk note]

Additions:

Managing User Groups through ACLs


There is already a proposal for this at GroupManagement. However this code doesn't seem to work anymore.

My solution

I though about a simpler way to deal with User Groups - my concept is: Give the power to the users and Keep it simple.

Dependancy

None that I can figure out. I have it working with 1.1.5.3 version.

The code

In wikka.php add the isGroupMember function (after TrimACLs function for example):

    // returns true if $who is member of $group
    function isGroupMember($who, $group)
    {
        $thegroup=$this->LoadPage($group);
        if ($thegroup) {
            $search = "+".$who."+"; // In the GroupListPages, the participants logins have to be embbeded inside '+' signs
            return (boolean)(substr_count($thegroup["body"], $search));
        }
        else return false;
    }

Then change HasAccess function:

from:

                                                   // aha! a user entry.
                default:
                    if ($line == $user)
                    {
                        return !$negate;
                    }


to:

                                                   // aha! a user entry.
                default:
                    if ($line == $user)
                    {
                        return !$negate;
                    }
                    // this may be a UserGroup so we check if $user is part of the group
                    else if (($this->isGroupMember($user, $line)))
                    {
                        return !$negate;
                    }


How to use it?

Create a WikiPage to manage a particular user group: a name like UserGroupWikkaCrew makes sense (it exists ;-) ), it could be nice to link to a CategoryUserGroup.
Write in all the user login that have to be part of this group inside "+" signs: +UserLogin1+UserLogin2+ is valid as would be: Modify the ACLs of this UserGroupPage to reflect who is allowed to manage the group.
Use the UserGroupPage in any ACLs, they can be can be negated using the "!" character as usual.

To Do

My code needs probably to be reviewed by expert coder as I am not at all a developper (I just rely on the above user group).
Any ideas and comments than welcome.
This does not allow to manage Groups of Groups (don't think about using the {{include}} action!)

Security Risks


A hacker may be able to get unauthorized access if they create a new user account with the same name as a groupname. For example, in the above scenario, the hacker may gain unauthorized access if (s)he creates a user with "UserGroupWikkaCrew" as the login name. The easiest way to prevent this from happening is to disallow new users to pick a new which is equal to an existing page.




Deletions:

Managing User Groups through ACLs


There is already a proposal for this at GroupManagement. However this code doesn't seem to work anymore.

My solution

I though about a simpler way to deal with User Groups - my concept is: Give the power to the users and Keep it simple.

Dependancy

None that I can figure out. I have it working with 1.1.5.3 version.

The code

In wikka.php add the isGroupMember function (after TrimACLs function for example):

    // returns true if $who is member of $group
    function isGroupMember($who, $group)
    {
        $thegroup=$this->LoadPage($group);
        if ($thegroup) {
            $search = "+".$who."+"; // In the GroupListPages, the participants logins have to be embbeded inside '+' signs
            return (boolean)(substr_count($thegroup["body"], $search));
        }
        else return false;
    }

Then change HasAccess function:

from:

                                                   // aha! a user entry.
                default:
                    if ($line == $user)
                    {
                        return !$negate;
                    }


to:

                                                   // aha! a user entry.
                default:
                    if ($line == $user)
                    {
                        return !$negate;
                    }
                    // this may be a UserGroup so we check if $user is part of the group
                    else if (($this->isGroupMember($user, $line)))
                    {
                        return !$negate;
                    }


How to use it?

Create a WikiPage to manage a particular user group: a name like UserGroupWikkaCrew makes sense (it exists ;-) ), it could be nice to link to a CategoryUserGroup.
Write in all the user login that have to be part of this group inside "+" signs: +UserLogin1+UserLogin2+ is valid as would be: Modify the ACLs of this UserGroupPage to reflect who is allowed to manage the group.
Use the UserGroupPage in any ACLs, they can be can be negated using the "!" character as usual.

To Do

My code needs probably to be reviewed by expert coder as I am not at all a developper (I just rely on the above user group).
Any ideas and comments than welcome.
This does not allow to manage Groups of Groups (don't think about using the {{include}} action!)






Edited on 2005-01-17 15:02:30 by NilsLindenberg [cat. added]

Additions:
CategoryUserContributions

Deletions:
CategoryDevelopment



Edited on 2005-01-12 07:41:10 by JavaWoman [restoring list within comment (takes som fiddling...)]

Additions:
    1. Call it "isGroupMember" rather than CheckGroupMember: that conveys better that you'll get a TRUE/FALSE answer;
    2. Make sure the function always returns a boolean (easy by casting the substr_count() to boolen) instead of sometimes a boolean and sometimes a number.


Deletions:




Edited on 2005-01-11 18:37:10 by NilsLindenberg [comments (layout)]

Additions:


Deletions:
Two suggestions here:
  1. Call it "isGroupMember" rather than CheckGroupMember: that conveys better that you'll get a TRUE/FALSE answer;
  2. Make sure the function always returns a boolean (easy by casting the substr_count() to boolen) instead of sometimes a boolean and sometimes a number.
    Apart from that I think this is a brilliant idea! --JavaWoman
    Done as recommended - thanks -- ChristianBarthelemy




Edited on 2005-01-06 21:31:45 by ChristianBarthelemy [JavaWoman's recommendations applied]

Additions:
In wikka.php add the isGroupMember function (after TrimACLs function for example):
function isGroupMember($who, $group)
return (boolean)(substr_count($thegroup["body"], $search));
Done as recommended - thanks -- ChristianBarthelemy
else if (($this->isGroupMember($user, $line)))


Deletions:
In wikka.php add the CheckGroupMember function (after TrimACLs function for example):
function CheckGroupMember($who, $group)
return substr_count($thegroup["body"], $search);
else if (($this->CheckGroupMember($user, $line)))




Edited on 2005-01-06 20:55:55 by JavaWoman [comment]

Additions:
Two suggestions here:
  1. Call it "isGroupMember" rather than CheckGroupMember: that conveys better that you'll get a TRUE/FALSE answer;
  2. Make sure the function always returns a boolean (easy by casting the substr_count() to boolen) instead of sometimes a boolean and sometimes a number.
    Apart from that I think this is a brilliant idea! --JavaWoman




Oldest known version of this page was edited on 2005-01-06 19:56:44 by ChristianBarthelemy [Another way for GroupManagement]
Page view:

Managing User Groups through ACLs


There is already a proposal for this at GroupManagement. However this code doesn't seem to work anymore.

My solution

I though about a simpler way to deal with User Groups - my concept is: Give the power to the users and Keep it simple.

Dependancy

None that I can figure out. I have it working with 1.1.5.3 version.

The code

In wikka.php add the CheckGroupMember function (after TrimACLs function for example):

    // returns true if $who is member of $group
    function CheckGroupMember($who, $group)
    {
        $thegroup=$this->LoadPage($group);
        if ($thegroup) {
            $search = "+".$who."+"; // In the GroupListPages, the participants logins have to be embbeded inside '+' signs
            return substr_count($thegroup["body"], $search);
        }
        else return false;
    }


Then change HasAccess function:

from:

                                                   // aha! a user entry.
                default:
                    if ($line == $user)
                    {
                        return !$negate;
                    }


to:

                                                   // aha! a user entry.
                default:
                    if ($line == $user)
                    {
                        return !$negate;
                    }
                    // this may be a UserGroup so we check if $user is part of the group
                    else if (($this->CheckGroupMember($user, $line)))
                    {
                        return !$negate;
                    }


How to use it?

Create a WikiPage to manage a particular user group: a name like UserGroupWikkaCrew makes sense (it exists ;-) ), it could be nice to link to a CategoryUserGroup.
Write in all the user login that have to be part of this group inside "+" signs: +UserLogin1+UserLogin2+ is valid as would be: Modify the ACLs of this UserGroupPage to reflect who is allowed to manage the group.
Use the UserGroupPage in any ACLs, they can be can be negated using the "!" character as usual.

To Do

My code needs probably to be reviewed by expert coder as I am not at all a developper (I just rely on the above user group).
Any ideas and comments than welcome.
This does not allow to manage Groups of Groups (don't think about using the {{include}} action!)


CategoryDevelopment
Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by WikkaWiki
Page was generated in 0.5301 seconds