Feature Proposal: Introducing web admin for higher web autonomy
Motivation
On a large TWiki installation having thousands of webs, webs need to be as autonomous as possible. To that end, it's handy to have users like TWIkiAdminGroup members but only for a web.
Description and Documentation
A user mapping handler can have its own isAdmin() method, which is called from the the method of the same name of TWiki::Users class. However, isAdmin() currently takes only cUID as its argument. There is no way to be an admin of one web but not for others.
The goal can be achieved if the isAdmin($cUID) method has 2nd and 3rd arguments for topic and web respectively.
Specifically, core/lib/TWiki/Access.pm's checkAccessPermission() would be:
if( $this->{session}->{users}->isAdmin( $user, $topic, $web ) ) {
And core/lib/TWiki/Users.pm's isAdmin() would be modified accordingly.
isAdmin() of existing user mapping handlers keep working ignoring $topic and $web.
Examples
There are several ways to specify web admins such as on
RepositoryForSiteAndWebMetadata and LDAP.
Directly specifying web admin group
isAdmin() of the user mapping handler would check if the user is in the group or not.
Controlling who can act on behalf of admin
If a TWiki site employs
UserMasquerading, there would be no admin group for a web per se.
Let's assume such a site having "admin" as a member of the Main.TWikiAdminGroup.
When a web admin exercises their privilege, they act on behalf of "admin".
isAdmin() determines if the user can masquerade identity on the web.
If the user can, the user is regarded as "admin" hence isAdmin() returns true.
Having both web admins and user masquerading
If
UserSubwebs is in action, even if
UserMasquerading is turned on, on a user web, the owner should have admin privilege.
Impact
Implementation
--
Contributors: HideyoImazu - 2012-06-28
It turned out that enhancements needed for
UserMasquerading is the superset of enhancements needed for this.
As such, this proposal shares the Bugs web entry with
UserMasquerading.
Code changes made to the TWiki core is explained on
UserMasquerading covers the changes needed for this feature.
Discussion
Sensible enhancement. How do you enable/disable web-specific admins?
--
PeterThoeny - 2012-07-01
Good point. It's now mentioned at the Examples section.
--
HideyoImazu - 2012-07-04
This is now accepted by 7 days feedback period.
--
PeterThoeny - 2012-07-11