internal package Foswiki::Users::BaseUserMapping 
  internal package Foswiki::Users::BaseUserMapping is a Foswiki::UserMapping 
User mapping is the process by which Foswiki 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 
 
-  $Foswiki::cfg{AdminUserLogin} - uses the password that     was set in Configure (IF its not null)
-  $Foswiki::cfg{DefaultUserLogin} - WikiGuest
-  UnknownUser
-  ProjectContributor
-  $Foswiki::cfg{Register}{RegistrationAgentWikiName}
  Groups 
  
  ClassMethod new ($session) 
Construct the 
BaseUserMapping object
  ObjectMethod finish() 
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 () → listIterator of cUIDs 
See baseclass for documentation.
  ObjectMethod eachGroupMember ($group) → listIterator of cUIDs 
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.
  ObjectMethod eachGroup () → ListIterator of groupnames 
See baseclass for documentation.
  ObjectMethod eachMembership ($cUID) → ListIterator of groups this user is in 
See baseclass for documentation.
  ObjectMethod groupAllowsChange($group) → boolean 
returns 0 if the group is 'owned by the 
BaseMapper and it wants to veto adding to that group
  ObjectMethod isAdmin( $cUID ) → $boolean 
True if the user is an admin 
-  is a member of the $Foswiki::cfg{SuperAdminGroup}
  ObjectMethod getEmails($name) → @emailAddress 
If $name is a cUID, return their email addresses. If it is a group,
return the addresses of everyone in the group.
  ObjectMethod findUserByWikiName ($wikiname) → list of cUIDs associated with that wikiname 
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