# 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
- [[TWikiAdmin]] - uses the password that was set in Configure (IF its not null)
- [[TWikiGuest]]
- [[UnknownUser]]
- [[TWikiContributor]] - 1 Jan 2005
- [[TWikiRegistrationAgent]] - 1 Jan 2005
### Groups
- $TWiki::cfg\{SuperAdminGroup\}
- [[TWikiBaseGroup]]
## [[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** `() -> 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.
## [[ObjectMethod]] **eachGroup** () -> [[ListIteratorofgroupnames]]
See baseclass for documentation.
## [[ObjectMethod]] **eachMembership** ($cUID) -> [[ListIteratorofgroupsthisuserisin]]
See baseclass for documentation.
## [[ObjectMethod]] **isAdmin** `($cUID) -> $boolean`
True if the user is an admin
- is a member of the $TWiki::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) -> 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