Making webs autonomous

Motivation

On a large TWiki site having thousands of webs, each web should be as self-service as possible so that TWiki administrators' work is minimized.

Features for web autonomy

You can have the following features by providing specific methods in your user mapping manager class.

  • Granting a set of users privilege to do anything on any topic regardless of access control setting. Let's call the set of users "web admins", which is analogous to TWikiAdminGroup members who can do anything to any topic regardless of access control setting.
  • Making %WIKIWEBMASTER% and %WIKIWEBMASTERNAME% web dependent. They are used on the Access Denied page and other pages as contact.

Specifying web admins - isAdmin()

The isAdmin() method in a user mapping manager normaly recognizes only one argument, $cUID. (e.g. TWikiUserMapping's) However, the upstream code hands two additional arguments, namely the topic and web names of the topic currently being processed. As such, isAdmin() can be web and topic dependent, which makes it possible to have web admins.

Web specific WIKIWEBMASTER and WIKIWEBMASTERNAME

Optionally, a user mapping manager can have the wikiWebMaster object method taking the following arguments.

  • web name
  • topic name
  • name or email (true means name. false means email)

If the wikiWebMaster does not exist or returns a null string (""), %WIKIWEBMASTER% and %WIKIWEBMASTERNAME% are expanded to {WebMasterName} and {WebMasterEmail} values respectively.

Data source

isAdmin() and wikiWebMaster() need data source to work. The data source needs be outside of the web. Otherwise, there is a possibility of the web admins lose access to the web by some change to the web.

MetadataRepository is one way to have metadata of a web outside the web. In an example on MetadataRepository, a TWiki group specified by the admin field of the web's record is the web admins.

Another way is to put such a data on a topic or topics in the TWiki web and make them editable only by TWiki Administrators.

Related Topics: AdminDocumentationCategory, TWikiAccessControl, MetadataRepository, LargeSite, UserMasquerading