Package TWiki::Users::BaseUserMapping 
User mapping is the process by which TWiki maps from a username (a login name)
to a display name and back. It is also where groups are maintained.
The 
BaseMapper provides support for a small number of predefined users.
No registration - this is a read only usermapper. It uses the mapper
prefix 'BaseUserMapping_'.
  Users 
  
  Groups 
  
Construct the 
BaseUserMapping object
Break circular references.
 ObjectMethod loginTemplateName () -> templateFile 
allows 
UserMappings to come with customised login screens - that should preffereably only over-ride the UI function
 ObjectMethod handlesUser ($cUID,$login,$wikiname) -> $boolean 
See baseclass for documentation.
In the 
BaseUserMapping case, we know all
the details of the users we specialise in.
 ObjectMethod login2cUID ($login) -> $cUID 
Convert a login name to the corresponding canonical user name. The
canonical name can be any string of 7-bit alphanumeric and underscore
characters, and must correspond 1:1 to the login name.
(undef on failure)
 ObjectMethod getLoginName ($cUID) -> login 
converts an internal cUID to that user's login
(undef on failure)
 ObjectMethod getWikiName ($cUID) -> wikiname 
Map a canonical user name to a wikiname
 ObjectMethod userExists ($user) -> $boolean 
Determine if the user already exists or not.
 ObjectMethod eachUser () -> listIteratorofcUIDs 
See baseclass for documentation.
 ObjectMethod eachGroupMember ($group) -> listIteratorofcUIDs 
See baseclass for documentation.
The basemapper implementation assumes that there are no nested groups in the
basemapper.
 ObjectMethod isGroup ($name) -> boolean 
See baseclass for documentation.
See baseclass for documentation.
See baseclass for documentation.
 ObjectMethod isAdmin ($cUID) -> $boolean 
True if the user is an admin 
-  is a member of the $TWiki::cfg{SuperAdminGroup}
If $name is a cUID, return their email addresses. If it is a group,
return the addresses of everyone in the group.
 ObjectMethod getUserData ($cUID) -> $dataRef 
Return a reference to an array of hashes with user data, used to manage 
users. Each item is a hash with:
 
-  {name}- name of field, such as "email"
-  {title}- title of field, such as "E-mail"
-  {value}- value of field, such as "jimmy@example.com"
-  {type}- type of field:text,password,checkbox,label
-  {size}- size of field, such as40
-  {note}- comment note, if any
User management forms can be build dynamically from this data structure.
Each password manager may return a different set of fields.
 ObjectMethod findUserByWikiName ($wikiname) -> listofcUIDsassociatedwiththatwikiname 
See baseclass for documentation.
 ObjectMethod checkPassword ($login,$passwordU) -> $boolean 
Finds if the password is valid for the given user.
Returns 1 on success, undef on failure.
 ObjectMethod setPassword ($cUID,$newPassU,$oldPassU) -> $boolean 
If the $oldPassU matches matches the user's password, then it will
replace it with $newPassU.
If $oldPassU is not correct and not 1, will return 0.
If $oldPassU is 1, will force the change irrespective of
the existing password, adding the user if necessary.
Otherwise returns 1 on success, undef on failure.
 ObjectMethod passwordError () -> $string 
returns a string indicating the error that happened in the password handlers
TODO: these delayed error's should be replaced with Exceptions.
returns undef if no error